Так
Відповідь завжди так, правда, просто потрібно трохи часу, щоб розробити як!
Важкий шлях
Я запускаю це на VPS, наданому Brightbox.com . Я використовував сервер Nano (2 процесора, 512 Мб оперативної пам’яті, 20 ГБ місця на диску) та зображення сервера Ubuntu Precision 12,04 LTS. Він повинен працювати на еквівалентах EC2 або Linode і, звичайно, на вашому домашньому апараті Linux. Зараз я протестував це на моїй (x86) арковій установці, але знайте, що вона не працює на Ubuntu 10.04 LTS, оскільки деякі пакети занадто давні.
Підготовка вашої системи - Debian / Ubuntu
Переконайтесь, що ваша власна система оновлена.
$ sudo apt-get update
$ sudo apt-get upgrade
Встановіть нове програмне забезпечення
$ sudo apt-get install binfmt-support qemu qemu-user-static unzip
qemu
є емулятором ARM qemu-user-static
і binfmt-support
дозволяє нам запускати виконувані файли ARM без емуляції ядра ARM. (Як це круто!?!)
Підготовка вашої системи - Arch
Я не можу знайти статично пов'язані qemu
в сховищах Arch, тому нам доведеться компілювати з джерела.
- Завантажте останню версію з http://git.savannah.gnu.org/cgit/qemu.git
Розпакуйте та запустіть
./configure --disable-kvm --target-list=arm-linux-user --static
Побудувати за допомогою make
та встановити за допомогою sudo make install
.
Виконайте наступне, як root
echo ':arm:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/local/bin/qemu-arm:' > /proc/sys/fs/binfmt_misc/register
echo ':armeb:M::\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/local/bin/qemu-armeb:' > /proc/sys/fs/binfmt_misc/register
Попередження Не слід запускати довільні команди, які ви знайдете в Інтернеті, оскільки root
вони були взяті qemu-binfmt-conf.sh
під типом процесора ARM. Витягніть команди з цього файлу та запустіть їх.
Завантажте та розпакуйте зображення
Перейдіть на raspberrypi.org і завантажте потрібне зображення. Розпакуйте його і збережіть .img
файл десь корисним.
$ sudo mkdir -p /images/debian-squeeze
$ sudo wget "http://files.velocix.com/c1410/images/debian/6/debian6-19-04-2012/debian6-19-04-2012.zip" -O "/images/debian-squeeze.zip"
$ sudo unzip "/images/debian-squeeze.zip" -d /images/debian-squeeze
$ sudo rm /images/debian-squeeze.zip
Знайдіть правильний розділ
Запис .img
буде містити 3 розділу, включаючи завантажувальний розділ.
$ cd /images/debian-squeeze/debian6-19-04-2012/
$ fdisk -lu debian6-19-04-2012.img
Disk debian6-19-04-2012.img: 1949 MB, 1949999616 bytes
4 heads, 32 sectors/track, 29754 cylinders, total 3808593 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000ee283
Device Boot Start End Blocks Id System
debian6-19-04-2012.img1 2048 155647 76800 c W95 FAT32 (LBA)
debian6-19-04-2012.img2 157696 3414015 1628160 83 Linux
debian6-19-04-2012.img3 3416064 3807231 195584 82 Linux swap / Solaris
Нам потрібно знати зміщення розділу Linux, в даному випадку це 157696
сектори та завантажувальний розділ, який знаходиться на 2048
секторах. У кожному секторі є 512 байти, тому кореневе зміщення - 157696*512=80740352
байти, а зміщення завантаження - 2048*512=1048576
.
Змонтуйте зображення як пристрій для зворотного зв'язку
Далі нам потрібно змонтувати зображення як файлову систему. Це можна зробити за допомогою петлевого пристрою. Ми використовуємо зсув з попереднього розділу, щоб вказати, mount
які розділи монтувати та де. Порядок цих команд важливий.
$ sudo mount -o loop,offset=80740352 "/images/debian-squeeze/debian6-19-04-2012/debian6-19-04-2012.img" /mnt
$ sudo mount -o loop,offset=1048576 "/images/debian-squeeze/debian6-19-04-2012/debian6-19-04-2012.img" /mnt/boot
Підготовка файлової системи.
Ми майже готові до chroot
нашої файлової системи та починаємо встановлювати нове програмне забезпечення. По-перше, ми повинні встановити емулятор до нашого зображення, оскільки він не буде доступний після використання chroot
.
Debian / Ubuntu
$ sudo cp /usr/bin/qemu-arm-static /mnt/usr/bin/
Arch Linux
$ sudo cp /usr/local/bin/qemu-arm /mnt/usr/local/bin/
Усі хост-системи
Нам також потрібно забезпечити доступ до деяких інших частин системи.
$ sudo mount --rbind /dev /mnt/dev
$ sudo mount -t proc none /mnt/proc
$ sudo mount -o bind /sys /mnt/sys
chroot
Ми зробили! chroot
далеко ...
$ sudo chroot /mnt
Ви зараз у своєму Raspberry Pi, але послуги не працюють тощо. Будьте обережні, ви корінь!
Оновлення / встановлення програмного забезпечення - Debian Image
Для оновлення програмного забезпечення ми використовуємо apt-get
.
# apt-get update
# apt-get upgrade
Ви також можете встановити програмне забезпечення, apt-get install
як зазвичай.
Оновлення / встановлення програмного забезпечення - Arch Image
Для оновлення програмного забезпечення ми використовуємо pacman
.
# pacman -Syu
Ви також можете встановити програмне забезпечення, pacman -S
як зазвичай.
ПРИМІТКА Ви можете запускати pacman
нативні пристрої, дотримуючись вказівок у розділі Як запустити рідне pacman
зображення на змонтованому зображенні? .
Вихід
Ви можете вийти з програми chroot
за допомогою Ctrl+ Dта відключити систему, запустивши sudo umount /mnt
- вам доведеться демонтувати кожну точку монтажу окремо.
Ви повинні видалити qemu-user-static
з RPi /usr/bin
або qemu-arm
з /usr/local/bin
нього, тоді зображення буде готове до спалаху.
Заключні слова
Це трохи довго і нудно, але зробіть це один раз, і ви дізнаєтеся про навантаження про те, як це все працює!
Примітка до останніх зображень
При спробі запуску зробити це на останніх зображеннях, ви отримаєте помилку
qemu: uncaught target signal 4 (Illegal instruction) - core dumped
Illegal instruction (core dumped)
Щоб виправити цю помилку, просто прокоментуйте вміст /etc/ld.so.preload
файлу
Простий шлях - piimg
Я почав працювати над утилітою, щоб зробити багато цього для вас. Він називається piimg і його можна знайти на сайті github.com/alexchamberlain/piimg .
Поки він може змонтувати SD-карту для вас, запустивши
piimg mount /images/debian-squeeze/debian6-19-04-2012/debian6-19-04-2012.img /mnt
і знову від'єднати їх, запустивши
piimg umount /mnt
Вам просто потрібно встановити qemu
і chroot
відібрати.
ВІДХОДЖЕННЯ Я, Алекс Чемберлен, провідний розробник компанії piimg
. Як такий, я можу бути упередженим щодо використання piimg
щодо інших методів.
Список літератури
Запуск ARM Linux на настільному ПК: іноземний спосіб chroot
Отримання «незаконної інструкції» при спробі хронізувати