crossdev etc-update

Добрый день.

Вопрос : как выполнить 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, очевидно что из-за него не пущается система

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".