Як уже зазначалося, ви повинні встановити 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 та похідних ОС. Якщо під час виконання команди ви не знайшли помилок
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. Вам все одно знадобиться рідна програма для дебоотстрати для вашої архітектури. Якщо це стане armhf, просто використовуйте вищевказаний командний рядок, але замініть qemu-debootstrap
його
debootstrap
. Якщо ні, дотримуйтесь цього розділу.
Щоб завантажити всі необхідні файли для нової ОС, запустіть таку команду:
sudo debootstrap --arch=armhf --foreign jessie ./jessie \
http://http.debian.net/debian
Тепер ви можете відключити зображення, оскільки решту робіт потрібно виконати по телефону. Зробіть це через:
sudo umount $(pwd)/jessie
Перенесіть зображення на телефон
Тепер найкраще створити з цього архіву дьоготь, який ви потім скопіюєте на телефон. Не має значення, чи архів поставлений на 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, у вас все готово. Використовуйте вищевказані команди для підключення до chroot. Якщо ні, то все-таки потрібно виконати таку команду, як тільки ви знаходитесь у своєму chroot, щоб правильно встановити ОС:
/debootstrap/debootstrap --second-stage
Короткий огляд способу доступу до chroot
Якщо ви дотримуєтесь вищезазначених кроків, ви можете мати доступ до chroot за допомогою цього простого сценарію на телефоні:
#!/bin/bash
sudo service ssh start
ssh localhost "sudo chroot jessie /bin/bash"
Спершу вам належить ввімкнути свій власний телефон у свій телефон через обмеження програми для терміналу. Додаток терміналу дозволено виконувати лише бінарні файли в певних місцях, і жодна ваша домашня директорія та SD-карта не є такими. Служба ssh, однак, не має таких обмежень.