Algierd, да чего там читать...
Сначала на компе подготавливаешь tar.gz архив с дистрибутивом под свой процессор. В архиве должны бить директории usr, home итп. В общем, тупо файлы дистрибутива.
Некоторые дистрибутивы (например, Arch и Alpine) сразу выкладывают такие архивы.
Fedora выкладывают образы, которые можно смонтировать на компе и упаковать файлы в архив.
Для Debian нужно зарегистрировать qemu и юзать debootstrap. Вместо qemu, можно юзать флаг --foreign в debootstrap, а потом вторую стадию - на мобиле. Но с qemu легче и гибче.
Если зарегистрирован qemu, мы можем, пока дистрибутив всё еще на компе, зачрутиться туда и доустановить любые программы. Даже потестить его. Или выполнить начальную настройку, которая будет описана ниже.
Потом забрасываем архив на мобилу, заходим в терминал и распаковываем. Упаковывать и распаковывать нужно от рута. Для распаковки может быть нужен busybox.
Распаковать можно:
а) Просто тупо создать директорию в /data и распаковать туда. Скорее всего, ничего плохого не случится. termux и exagear так и делают.
б) Создать файл-образ любого размера. Можете считать его "виртуальным" жестким диском. В этом случае мы сначала монтируем образ, а потом в точку монтирования распаковываем дистрибутив. Создавать образ можно и на ПК.
# создается образ как-то так:
busybox dd if=/dev/zero of=путь-к-образу bs=1M count=2048
busybox mkfs.ext2 -F путь-к-образу
# а монтируется вот как-то так:
busybox mount -o loop,noatime путь-к-образу путь-к-точке-монтирования
точка монтирования - просто пуская папка.
в) Вариант "like pro". Отпилить во внутренней памяти устройства или на карте отдельный раздел и распаковать туда. Так "устанавливаются" дистрибутивы на ПК.
Раздел монтируется как-то так:
busybox mount -o noatime /dev/block/mmcblk0pX путь-к-точке-монтирования
Но это после того, как он создан и отформатирован.
Короче, плевать как, но на устройстве должна появиться директория с файлами дистрибутива. Смонтированная или нет.
Потом нужно промонтировать в образ ресурсы. И зачрутиться... Лично у меня всё делается вот таким скриптиком (это основной скипт):
#!/system/bin/sh
PARTITION="/dev/block/mmcblk0p36"
MOUNT_POINT="/data/local/tmp/fedora"
set -e
busybox mount -o noatime ${PARTITION} ${MOUNT_POINT}
cd ${MOUNT_POINT}
busybox mount -o bind /dev dev
busybox mount -t devpts devpts dev/pts
busybox mount -t proc proc proc
busybox mount -t sysfs sysfs sys
busybox mount -t tmpfs tmpfs tmp
busybox chroot . /bin/su - -c "/usr/sbin/sshd"
Этот скрипт монтирует нужные ресурсы и запускает в дистрибутиве ssh.
Но в первый раз нужно не так. В первый раз ssh не запустится.
Потому мы чрутимся в дистрибутив как-то так
busybox chroot /data/local/tmp/fedora /bin/su -
И донастраиваем его (это нужно сделать только один раз).
# это надо для работы инета
echo "nameserver 8.8.8.8" > /etc/resolv.conf
# создаем обычного юзера
useradd -m имя_юзера
# это тоже для инета (добавление юзеров в группы)
groupadd -g 3003 aid_inet
groupadd -g 3004 aid_net_raw
groupadd -g 3005 aid_admin
usermod -aG aid_inet root
usermod -aG aid_net_raw root
usermod -aG aid_admin root
usermod -aG aid_inet имя_юзера
usermod -aG aid_net_raw имя_юзера
usermod -aG aid_admin имя_юзера
# это добавление в группы для sudo (нужна одна из них, но это зависит от дистрибутива)
usermod -aG wheel имя_юзера
usermod -aG sudo имя_юзера
# нужно сгенерировать ключи ssh. Если не работает, то сначала установить ssh.
ssh-keygen -A
# установить пароли рута и обычного юзера
passwd root
passwd имя_юзера
# можно еще дать доступ к сд_карте
groupadd -g 1015 aid_sdcard_rw
usermod -aG aid_sdcard_rw root
usermod -aG aid_sdcard_rw имя_юзера
# желательно задать временную зону, но я знаю команду только для Fedora
unlink /etc/localtime
ln -s /usr/share/zoneinfo/Europe/Kiev /etc/localtime
Во, после этой единоразовой настройки будет SSH запускаться.
Это приблизительно то. что делает LD.
В принципе, одно тело может подготовить и настроить дистрибутив, а потом выложить его в архиве для других. Или делать на заказ.
Если кому-то не ясно, нафига это нужно, если есть LD, то вот, например, для Sparkle-W нужно. Как сделать его автозапуск в LD я без понятия. А если мы юзаем такой скрипт, то там пару строчек добавить и готово.
От ептить, оказывается, тут таки есть, что почитать и что пописать.
Если кто-то тут использует LD в образовательных целях для понимания линукса, то вот такое монтрование - очень полезное упражнение. Приносит понимание многих вещей.
Сообщение отредактировал Бaтyeв Вaлентин - 27.06.19, 11:49