crossdev etc-update
iarischenko 4 Августа, 2010 - 11:33
Добрый день.
Вопрос : как выполнить rc-update для rootsfs если целевая архитектура (CTARGET="armv5te-softfloat-linux-gnueabi") отличается от хоста (CHOST="i686-pc-lunux-gnu-gcc")?
Т.е. у меня есть каталог : $SYSROOT=/usr/armv5te-softfloat-linux-gnueabi, куда устанавливаются пакеты под целевую архитектуру, и в этой rootfs мне нужно выполнить скрипты типа etc-update для настройки openrc.
»
- Для комментирования войдите или зарегистрируйтесь
Вы уж решите что вам нужно.
Вы уж решите что вам нужно. Либо rc-update, либо etc-update
Добавление скриптов в автозагрузку делает как раз rc-update. В общем то он делает всего лиш симлинки на скрипты и кладет их в /etc/runlevels/*имя загрузочного уровня*
Вам всего лиш надо создать нужные симлинки
что то типа
ln -s /etc/init.d/sshd /usr/armv5tel-softfloat-linux-gnueabi/etc/runlevels/default/sshd
Кстати, если не секрет - под какой девайс кросскомпиляцию делаете?
Плата собственного
Плата собственного изготовления, процессор AT91SAM9263, bootstrap и uboot загружаются из dataflash, ядро tftp, root - nfs. Соотвественно - ядро загружается, разворачивается, подключается rootfs - и плата висит.
make.profile -> /usr/portage/profiles/embedded/
Установил openrc
armv5te-softfloat-linux-gnueabi-emerge openrc
* Messages for package sys-apps/openrc-0.6.1-r1 merged to /usr/armv5te-softfloat-linux-gnueabi/:
* /etc/conf.d/rc is no longer used for configuration.
* Please migrate your settings to /etc/rc.conf as applicable
* and delete /etc/conf.d/rc
* You should now update all files in /etc, using etc-update
* or equivalent before restarting any services or this host.
*
* Please read the migration guide available at:
* http://www.gentoo.org/doc/en/openrc-migration.xml
Далее нужно идти и выполнять migration guide : It is critical that you run dispatch-conf and ensure your /etc is up to date before rebooting.
dispatch-conf - скрипт, как и rc-update, env-update я хочу выполнять их относильно другой \
Можно попробовать собрать
Можно попробовать собрать Qemu с эмуляцией arm и запустить rootfs там. И оттуда уже пробовать мигрировать на openrc
а зачрутится chroot
а зачрутится chroot /usr/armv5te-softfloat-linux-gnueabi/ даст?
Чтобы сделать chroot нужно
Чтобы сделать chroot нужно иметь возможность исполнять ARM-код, т.е. ставить эмулятор, автоматом нужно будет на целевую платформу тащить компилятор и портеж, что не правильно, никогда я не буду на целевой платформе компилировать, ооооооочень долго.
Нужна обертка, как для emerge но только и для остальных скриптов.
Если не изменяет мне память,
Если не изменяет мне память, то так:
ROOT=/usr/armv5te-softfloat-linux-gnueabi etc-update
Working on Gentoo Linux for Asus P535 and Qtopia :-)
Спасибо, действительно так.
Спасибо, действительно так. Теперь осталось найти, почему не работает;
IP-Config: Complete:
device=eth0, addr=192.168.1.100, mask=255.255.255.0, gw=192.168.1.1,
host=192.168.1.100, domain=, nis-domain=(none),
bootserver=192.168.1.110, rootserver=192.168.1.110, rootpath=
Looking up port of RPC 100003/2 on 192.168.1.110
eth0: link up (100/Full)
Looking up port of RPC 100005/1 on 192.168.1.110
VFS: Mounted root (nfs filesystem).
Freeing init memory: 120K
И дальше молчит, как рыба об лед.
Было такое, вы на реальном
Было и такое, вы на реальном девайсе запускаете или на Qemu? С какими CFLAGS собран /sbin/init?
Working on Gentoo Linux for Asus P535 and Qtopia :-)
На реальном, ядро tftp,
На реальном, ядро tftp, rootsf - nfs.
linuxworld armv5te-softfloat-linux-gnueabi # cat /usr/armv5te-softfloat-linux-gnueabi/etc/make.conf | grep CFLAGS
CFLAGS="-Os -pipe ${MARCH_TUNE} -fomit-frame-pointer -I${ROOT}usr/include/ -I${ROOT}include/"
CXXFLAGS="${CFLAGS}"
Сначала, было сообщение
Looking up port of RPC 100005/1 on 192.168.1.110
VFS: Mounted root (nfs filesystem) on device 0:12.
Freeing init memory: 120K
Warning: unable to open an initial console.
После я добавил в папку /dev файлы console и null
Сообщение пропало, появились сообщения в файлах console и null
linuxworld armv5te-softfloat-linux-gnueabi # cat dev/null
get_KV: not found
linuxworld armv5te-softfloat-linux-gnueabi # cat dev/console
more processes left in this runlevelor 5 minutesnd
/lib/rc/sh/runscript.sh: line 252: command: not found
/lib/rc/sh/runscript.sh: line 252: command: not found
/lib/rc/sh/runscript.sh: line 252: command: not found
/lib/rc/sh/runscript.sh: line 252: command: not found
/lib/rc/sh/runscript.sh: line 252: command: not found
/lib/rc/sh/runscript.sh: line 252: command: not found
/lib/rc/sh/runscript.sh: line 252: command: not found
/lib/rc/sh/runscript.sh: line 252: command: not found
/lib/rc/sh/runscript.sh: line 252: command: not found
/lib/rc/sh/runscript.sh: line 252: command: not found
/lib/rc/sh/runscript.sh: line 252: command: not found
/lib/rc/sh/runscript.sh: line 252: command: not found
/lib/rc/sh/runscript.sh: line 252: command: not found
/lib/rc/sh/runscript.sh: line 252: command: not found
ndencies ... [ ok ]
Нашел, как сделать, чтобы
Нашел, как сделать, чтобы сообщения выводились в консоль
cd ${SYSROOT}
mkdir boot dev proc root sys
mknod dev/null c 1 3
mknod dev/console c 5 1
И стало видно лог загрузки.
Freeing init memory: 120K
INIT: version 2.88 booting
OpenRC 0.6.1 is starting up Gentoo Linux (armv5tejl)
* Mounting /proc ...
[ ok ]
* Caching service dependencies ...
/lib/rc/sh/gendepends.sh: line 716: command: not found
[ ok ]
/lib/rc/sh/runscript.sh: line 252: command: not found
/lib/rc/sh/runscript.sh: line 252: command: not found
/lib/rc/sh/runscript.sh: line 252: command: not found
..............
INIT: Entering runlevel: 3
/lib/rc/sh/runscript.sh: line 252: command: not found
/lib/rc/sh/runscript.sh: line 252: command: not found
INIT: Id "c3" respawning too fast: disabled for 5 minutes
INIT: Id "c6" respawning too fast: disabled for 5 minutes
INIT: Id "s0" respawning too fast: disabled for 5 minutes
INIT: Id "c5" respawning too fast: disabled for 5 minutes
INIT: Id "c1" respawning too fast: disabled for 5 minutes
INIT: Id "c4" respawning too fast: disabled for 5 minutes
INIT: Id "c2" respawning too fast: disabled for 5 minutes
INIT: no more processes left in this runlevel
Все, можно ковырять OpenRC, очевидно что из-за него не пущается система