Ports/arm/chroot
Материал из ALT Linux Wiki
(Import from freesource.info) |
м (+cat) |
||
(2 промежуточные версии не показаны) | |||
Строка 1: | Строка 1: | ||
[[Category:Sisyphus]] | [[Category:Sisyphus]] | ||
- | {{ | + | [[Категория:ARM]] |
+ | {{Crap}} | ||
=== Chroot into ARM root === | === Chroot into ARM root === | ||
- | Для того чтобы сделать chroot в arm-овый root с "большой" машины нам понадобится qemu, ядро с поддержкой binfmt и собственно | + | Для того чтобы сделать chroot в arm-овый root с "большой" машины нам понадобится qemu, ядро с поддержкой binfmt и собственно готовая распакованная или смонтированная rootfs куда будем chroot'иться. |
Поехали. | Поехали. | ||
+ | |||
+ | Для примера предположим, что rootfs будет находиться в каталоге /home/user/arm. | ||
==== Qemu ==== | ==== Qemu ==== | ||
- | + | На данный момент можно использовать qemu-user-binfmt_misc-0.12.1, готовый пакет подходит. В нем содержится /usr/bin/qemu-arm.static который и требуется для задачи. (apt-get install qemu-user-binfmt_misc). Но если вам надо собрать самостоятельно, как было раньше до появления готового пакета, то: | |
- | + | <pre>git-clone git://git.altlinux.org/people/kas/packages/qemu.git | |
- | + | gear-hsh-build --prefix="/home/kas/hasher" --target=x86_64 -- -- --packager='Kirill A. Shutemov <kas@altlinux.org>' | |
- | <pre | + | sudo rpm -Uvh /home/kas/hasher/*/%_target_cpu/RPMS.hasher/qemu-0.8.2-alt1.1.%_target_cpu.rpm</pre> |
- | + | ||
- | + | ||
==== binfmt_misc ==== | ==== binfmt_misc ==== | ||
Строка 21: | Строка 22: | ||
Конфигурируем binfmt_misc на использование qemu для arm-овых elf'ов: | Конфигурируем binfmt_misc на использование qemu для arm-овых elf'ов: | ||
- | <pre | + | <pre>sudo modprobe binfmt_misc |
- | + | sudo mount -t binfmt_misc none /proc/sys/fs/binfmt_misc | |
- | + | sudo sh -c '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/bin/qemu-arm.static:" > /proc/sys/fs/binfmt_misc/register'</pre> | |
- | + | Вероятно, что первые две операции вам не потребуются потому что они уже сделаны при загрузке (например, при установленном wine). | |
+ | Последнее поле в третьей строке, разделенной знаками : - это путь, по которому будет скопирован файл qemu-arm.static из пакета qemu-user-binfmt_misc (относительно корня rootfs). | ||
- | + | Если в /proc/sys/fs/binfmt_misc/register уже что-то писалось, третья команда может выдавать ошибку: | |
- | + | <pre> | |
- | <pre> | + | -bash: echo: write error: Invalid argument |
- | + | </pre> | |
- | + | ||
- | + | Это исправляется командой | |
+ | <pre> | ||
+ | echo -1 > /proc/sys/fs/binfmt_misc/arm | ||
+ | </pre> | ||
- | + | и повторным вводном третьей команды. | |
+ | |||
+ | ==== Готовим rootfs ==== | ||
+ | |||
+ | rootfs можно собрать самостоятельно на основе ALTLinux и [http://git.altlinux.org/people/kas/packages/?p=mkimage-profile-armrootfs.git вот этого профиля], например. см. прилагаемый README с примерным кратким списком команд. | ||
+ | |||
+ | Можно взять и готовый не от ALTLinux: | ||
+ | |||
+ | Можно посмотреть [http://www.at91.com/linux4sam/bin/view/Linux4SAM/OpenEmbeddedAngstromGet тут]. | ||
+ | |||
+ | Или к примеру (вероятно, устарел) [http://gentoo.osuosl.org/experimental/arm/embedded/stages/stage3-arm-uclibc-softfloat-20050811.tar.bz2 http://gentoo.osuosl.org/experimental/arm/embedded/stages/stage3-arm-uclibc-softfloat-20050811.tar.bz2]. | ||
+ | |||
+ | Распаковываем в /home/user/arm/: | ||
+ | <pre>sudo mkdir -p /home/user/arm/ | ||
+ | cd /home/user/arm/ | ||
+ | sudo tar -xf arm-rootfs.tar</pre> | ||
+ | |||
+ | получаем в /home/user/arm/rootfs/ весь набор каталогов /bin, /etc и т.д. | ||
+ | |||
+ | Копируем хостовый статический qemu-arm внутрь arm'ового root'а: | ||
+ | <pre>sudo cp /usr/bin/qemu-arm.static /home/user/arm/rootfs/usr/bin</pre> | ||
==== chroot ==== | ==== chroot ==== | ||
Строка 42: | Строка 66: | ||
Собственно chroot'имся | Собственно chroot'имся | ||
- | <pre> | + | <pre>$ sudo chroot /home/user/arm/rootfs bin/bash |
- | # uname -a | + | bash-3.2# uname -a |
- | Linux | + | Linux combr.local 2.6.27-std-def-alt15 #1 SMP Tue Mar 24 15:17:22 UTC 2009 armv5tel GNU/Linux |
+ | bash-3.2# ls | ||
+ | bin dev home media opt root srv tmp var | ||
+ | boot etc lib mnt proc sbin sys usr | ||
+ | </pre> | ||
Надеюсь кому-нить понадобится ;) | Надеюсь кому-нить понадобится ;) | ||
- |
Текущая версия на 16:17, 22 декабря 2011
Содержание |
Chroot into ARM root
Для того чтобы сделать chroot в arm-овый root с "большой" машины нам понадобится qemu, ядро с поддержкой binfmt и собственно готовая распакованная или смонтированная rootfs куда будем chroot'иться.
Поехали.
Для примера предположим, что rootfs будет находиться в каталоге /home/user/arm.
Qemu
На данный момент можно использовать qemu-user-binfmt_misc-0.12.1, готовый пакет подходит. В нем содержится /usr/bin/qemu-arm.static который и требуется для задачи. (apt-get install qemu-user-binfmt_misc). Но если вам надо собрать самостоятельно, как было раньше до появления готового пакета, то:
git-clone git://git.altlinux.org/people/kas/packages/qemu.git gear-hsh-build --prefix="/home/kas/hasher" --target=x86_64 -- -- --packager='Kirill A. Shutemov <kas@altlinux.org>' sudo rpm -Uvh /home/kas/hasher/*/%_target_cpu/RPMS.hasher/qemu-0.8.2-alt1.1.%_target_cpu.rpm
binfmt_misc
Конфигурируем binfmt_misc на использование qemu для arm-овых elf'ов:
sudo modprobe binfmt_misc sudo mount -t binfmt_misc none /proc/sys/fs/binfmt_misc sudo sh -c '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/bin/qemu-arm.static:" > /proc/sys/fs/binfmt_misc/register'
Вероятно, что первые две операции вам не потребуются потому что они уже сделаны при загрузке (например, при установленном wine). Последнее поле в третьей строке, разделенной знаками : - это путь, по которому будет скопирован файл qemu-arm.static из пакета qemu-user-binfmt_misc (относительно корня rootfs).
Если в /proc/sys/fs/binfmt_misc/register уже что-то писалось, третья команда может выдавать ошибку:
-bash: echo: write error: Invalid argument
Это исправляется командой
echo -1 > /proc/sys/fs/binfmt_misc/arm
и повторным вводном третьей команды.
Готовим rootfs
rootfs можно собрать самостоятельно на основе ALTLinux и вот этого профиля, например. см. прилагаемый README с примерным кратким списком команд.
Можно взять и готовый не от ALTLinux:
Можно посмотреть тут.
Или к примеру (вероятно, устарел) http://gentoo.osuosl.org/experimental/arm/embedded/stages/stage3-arm-uclibc-softfloat-20050811.tar.bz2.
Распаковываем в /home/user/arm/:
sudo mkdir -p /home/user/arm/ cd /home/user/arm/ sudo tar -xf arm-rootfs.tar
получаем в /home/user/arm/rootfs/ весь набор каталогов /bin, /etc и т.д.
Копируем хостовый статический qemu-arm внутрь arm'ового root'а:
sudo cp /usr/bin/qemu-arm.static /home/user/arm/rootfs/usr/bin
chroot
Собственно chroot'имся
$ sudo chroot /home/user/arm/rootfs bin/bash bash-3.2# uname -a Linux combr.local 2.6.27-std-def-alt15 #1 SMP Tue Mar 24 15:17:22 UTC 2009 armv5tel GNU/Linux bash-3.2# ls bin dev home media opt root srv tmp var boot etc lib mnt proc sbin sys usr
Надеюсь кому-нить понадобится ;)