Как уже указывалось, вы должны установить на своем устройстве chroot с поддержкой ARM и установить все необходимые пакеты в этом chroot. Тем не менее, выполнение этого в вашем домашнем каталоге тратит много ценного пространства. Вместо этого это можно сделать на SD-карте с помощью компьютера, работающего на соответствующей ОС Linux (протестировано на Linux Mint 17 и Ubuntu Trusty). Поскольку я не нашел никакой информации об этом нигде, я разместил ее здесь как ответ на старый вопрос.
Следующие инструкции предполагают, что вы хотите установить debian jessie chroot в каталог jessie.
Создание и заполнение файла изображения на настольном компьютере
Создание пустого файла изображения
Чтобы создать изображение размером 1 ГБ с именем IMAGE.img в текущем рабочем каталоге, выполните:
dd if=/dev/zero of=IMAGE.img bs=1G count=1
Обратите внимание, что B в ГБ опущено. «if» означает «входной файл», «of» для «выходной файл» и «bs» для «размер блока».
Существуют более эффективные команды, но, насколько я знаю, они работают только на определенных типах файловых систем. Этот также работает на SD-карте или tempfs. Обратите внимание на использование / dev / zero, а не / dev / random или / dev / urandom, так как это займет намного больше времени, а потом потребуется больше времени для передачи изображения между устройствами в дальнейшем.
Создание файловой системы на изображении
Без файловой системы телефон не сможет хранить какие-либо данные на изображении. Без файловой системы вы еще не можете смонтировать образ в каталог, только на блочное устройство.
Эта команда bash выведет следующее переменное устройство с пустым циклом в переменную LOOP
:
$LOOP=$(sudo losetup -f)
Затем назначьте изображение на блочное устройство:
sudo losetup $LOOP IMAGE.img
Затем создайте на нем файловую систему ext4:
sudo mkfs -t ext4 $LOOP
Далее отсоедините изображение от петлевого устройства:
sudo losetup -d $LOOP
Если вы получаете команду не найденные ошибки, просто установите отсутствующие программы.
Смонтируйте файл образа на компьютер, чтобы получить к нему доступ
Теперь создайте временный каталог в рабочем каталоге:
mkdir jessie
и смонтируйте файл образа IMAGE.img к нему:
sudo mount -o loop IMAGE.img $(pwd)/jessie
Команда pwd
убедится, что вы дадите абсолютный путь к вашему текущему рабочему каталогу.
Заполнение образа новой операционной системой с помощью qemu-debootstrap
Следующим шагом будет использование qemu-debootstrap для загрузки необходимых файлов. Это легко, если доступен qemu-debootstrap, как в случае с Ubuntu и производными ОС. Если при выполнении вы получите команду not found error
qemu-debootstrap --help
, попробуйте установить соответствующий пакет, что можно сделать в Ubuntu через:
sudo apt-get install qemu-user-static
Чтобы загрузить все необходимые файлы и подготовить новую ОС, выполните следующую команду:
sudo qemu-debootstrap --arch=armhf jessie ./jessie http://http.debian.net/debian
Обратите внимание, что первая jessie
обозначает версию ОС, а вторая jessie
обозначает каталог, в который должны быть установлены файлы. Теперь вы можете размонтировать образ, так как остальная часть работы должна выполняться на телефоне. Сделайте это через:
sudo umount $(pwd)/jessie
Если вы не можете установить qemu-debootstrap, смотрите следующий раздел.
Заполнение образа новой операционной системой без qemu-debootstrap
Пожалуйста, пропустите этот раздел, если у вас есть qemu-debootstrap. Тем не менее, вам все равно понадобится собственный debootstrap для вашей архитектуры. Если это происходит с помощью armhf, просто используйте приведенную выше командную строку, но замените qemu-debootstrap
на
debootstrap
. Если нет, следуйте этому разделу.
Чтобы загрузить все необходимые файлы для новой ОС, выполните следующую команду:
sudo debootstrap --arch=armhf --foreign jessie ./jessie \
http://http.debian.net/debian
Теперь вы можете размонтировать изображение, так как остальная часть работы должна быть выполнена на телефоне. Сделайте это через:
sudo umount $(pwd)/jessie
Передача изображения на телефон
Теперь лучше всего создать архив tar из этого файла, который затем скопировать на телефон. Не имеет значения, помещен ли архив на SD-карту или во внутреннее хранилище. Создайте архив на рабочем столе, используя:
tar -cvzf jessie.tar.gz IMAGE.img
Теперь на вашем телефоне включите поддержку ssh, чтобы скопировать изображение поверх. Вы также можете сделать это с помощью USB-кабеля. Поскольку сервер ssh сбрасывается при каждой перезагрузке, запустите службу ssh на телефоне с помощью:
sudo service ssh start
Затем скопируйте изображение через:
scp jessie.tar.gz phablet@ubuntu-phablet:$COPYDIR
где переменная COPYDIR
содержит каталог, в котором должно храниться изображение. Эта команда предполагает, что ваше имя пользователя на телефоне - phablet, а имя хоста телефона - ubuntu-phablet. Вы можете узнать как по выдаче, так echo $USER
и echo $HOSTNAME
по телефону соответственно.
Теперь вам нужно извлечь архив только там, где вы хотите, чтобы изображение находилось. Предположим, что каталог, в котором вы хотите разместить изображение, хранится в переменной IMAGEDIR
. Извлеките изображение с помощью команды bash:
( cd $IMAGEDIR; tar -xvzf $COPYDIR/jessie.tar.gz; )
Теперь вы можете удалить архив:
rm $COPYDIR/jessie.tar.gz
Завершение и использование изображения на телефоне
Если вы не включили ssh сервер на телефоне, сделайте это сейчас через:
sudo service ssh start
Затем смонтируйте ваш образ в каталог по вашему выбору (в данном случае «jessie»):
sudo mount -o loop $IMAGEDIR/IMAGE.img $(pwd)/jessie
Теперь введите ваш chroot в первый раз через:
ssh localhost "sudo chroot $(pwd)/jessie /bin/bash"
Если на вашем компьютере был доступен qemu-debootstrap, все готово. Используйте вышеуказанные 2 команды для подключения к вашему chroot. Если нет, вам все равно придется выполнить следующую команду, когда вы находитесь в chroot, чтобы правильно настроить ОС:
/debootstrap/debootstrap --second-stage
Краткое описание того, как получить доступ к chroot
Если вы выполнили вышеуказанные шаги, вы сможете получить доступ к вашему chroot, используя этот простой скрипт на телефоне:
#!/bin/bash
sudo service ssh start
ssh localhost "sudo chroot jessie /bin/bash"
Вы должны сначала подключиться к своему телефону с помощью ssh из-за ограничений приложения терминала. Терминальному приложению разрешено выполнять двоичные файлы только в определенных местах, и среди них нет ни вашего домашнего каталога, ни SD-карты. Однако у службы ssh таких ограничений нет.