boot & chroot

Гугл не помогает. RTFM весь пока не осилил...

А ситуация такая. Хочу загрузить систему, установленную не просто на каком-то разделе, а в подкаталоге. У меня есть рабочий линукс на /dev/sda1. Я собрал в каталоге /home/newroot новый линукс (используя chroot). Хочу теперь в него по-настоящему загрузится. Т.е. ядро положить, как обычно в /boot (даже использовать старое), но чтобы корень системы был в /dev/sda1/home/newroot.

Указать такое в параметрах ядра root=/dev/sda1/home/newroot нельзя, ядро ожидает нормальный раздел, а не его подкаталог. Среди остальных параметров ядра я не нашёл способа, чтобы прямо вот так взять, и указать, что рут находится в таком-то каталоге такого-то раздела.

Понятно, что я могу, в принципе, подправить скрипты в основной системе так, чтобы при загрузке с /dev/sda1 в каком-нибудь скрипте происходил chroot. Но можно ли такое сделать непосредственно на уровне ядра и загрузчика?

А в тупую - сделать раздел, переписать туда содержимое /home/newroot и загрузится с него, конечно, можно, но как-то не спортивно. Должен же быть способ.

нужно ковырять initrd....

нужно ковырять initrd....

да, вот минимальный инит из

да, вот минимальный инит из дефолтного (созданного мкинитрд) инитрд:

#!/bin/nash

mount -t proc /proc /proc
setquiet
echo Mounted /proc filesystem
echo Mounting sysfs
mount -t sysfs none /sys
echo Creating block devices
mkdevices /dev
echo Creating root device
mkrootdev /dev/root
umount /sys
echo Mounting root filesystem
mount -o noatime --ro -t reiserfs /dev/root /sysroot
echo Switching to new root
switchroot /sysroot

в простейшем случае нужно просто поменять switchroot /sysroot на то, что вам нужно. хотя может и не сработать. пробуйте....
рекомендую взять инитрд из лайфсиди - он намного функциональней.

Поковырял. Там команда

Поковырял. Там команда busybox switch_root. Но похоже, что эта команда предполагает, что рутом будет всё-же раздел на диске.

$BOC(\pi, e)$

Кернел, конкретней VFS,

Кернел, конкретней VFS, полагает загрузочным деваисом блочное устроиство , каталог таковым не являеться.
Можно таки сделать имидж с каталога и грузить его

P.S Это все только мое "скромное мнение"

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

На флешку записать можно ))

На флешку записать можно )) Уже не с винта, или смонтировать как блочное устройство образ каталога...

Я по-другому сделал. Создал

Я по-другому сделал. Создал маленький раздел, положил туда только самое необходимое, в fstab прописал основной раздел, а всяческие "usr", "lib" и прочее сделал ссылками. Короче говоря, я сдался. Так заработало, естественно.

Другая беда теперь - скрипты из /etc/init.d почему-то не работают. Собственно, с этого всё и началось. Я пытался пускать их из-под chroot и они не работали. Я решил, что всё из-за chroot и нужно нормально запустить систему. Но теперь я её запустил, а результат тот же. Проблема в запуске инициализационных скриптов. Пишу /etc/init.d/dbus start, а он ничего не делает - вообще ничего до нажатия Ctrl-C. При этом действия stop, status работают нормально. Из всех скриптов работает только /etc/init.d/local. Не понятно, что такое. Раньше такого не видел.

$BOC(\pi, e)$

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

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