View previous topic :: View next topic |
Author |
Message |
xxxtype n00b
Joined: 01 Feb 2016 Posts: 4
|
Posted: Mon Feb 01, 2016 4:14 pm Post subject: exec switch_root /mnt/root /sbin/init выкидывает в хелп |
|
|
Привет
Стыдно признаваться но уже 4-й месяц не могу победить switch_root
Собран initramfs внутри busybox
find . | cpio -H newc -o | gzip -9 > ../initramfs.igz
Реальный корень debootstra-ом
Необходимо переключится в реальный корень
Чтобы я ни делал результат один выкидывает в хелп
Изначально пытался realroot затолкать в tmpfs
Но после безуспешных попыток попробовал тупо mount /dev/sda5 /newroot
Результат тот же --> хелп
Гуру ХелпМи
В гугл не отправлять он меня уже боится, бубен в клочья истрепал
Что я делаю не так, где я облажался, какуюнить степ бай степ инструкцию,
хотя я их уже об читался аж в глазах рябит |
|
Back to top |
|
|
TigerJr Guru
Joined: 19 Jun 2007 Posts: 540
|
Posted: Tue Feb 02, 2016 6:10 pm Post subject: Re: exec switch_root /mnt/root /sbin/init выкидывает в хелп |
|
|
xxxtype wrote: | Привет
Стыдно признаваться но уже 4-й месяц не могу победить switch_root
Собран initramfs внутри busybox
find . | cpio -H newc -o | gzip -9 > ../initramfs.igz
Реальный корень debootstra-ом
Необходимо переключится в реальный корень
Чтобы я ни делал результат один выкидывает в хелп
Изначально пытался realroot затолкать в tmpfs
Но после безуспешных попыток попробовал тупо mount /dev/sda5 /newroot
Результат тот же --> хелп
Гуру ХелпМи
В гугл не отправлять он меня уже боится, бубен в клочья истрепал
Что я делаю не так, где я облажался, какуюнить степ бай степ инструкцию,
хотя я их уже об читался аж в глазах рябит |
switch_root will fail to function if newroot is not the root of a mount. If you want to switch root into a directory that does not meet this requirement then you can first use a bind-mounting trick to turn any directory into a mount point:
не понимаю чем chroot неугодил? Хотя правильнее вопрос задавать по-другому: switch_root vs pivot_root vs chroot?
А для этого хотелось бы понять подробности извращения... _________________ Do not use gentoo, it die |
|
Back to top |
|
|
xxxtype n00b
Joined: 01 Feb 2016 Posts: 4
|
Posted: Wed Feb 03, 2016 3:46 pm Post subject: |
|
|
Подробности извращения...
Необходимо корень затолкать в tmpfs --> зачем ооочень долго объяснять
Собрал корень debootstrap-ом
Корень упаковывал в squashfs --> rootfs.sfs
squashfs был выбран из-за быстрого извлечения содержимого в tmpfs, tar и cp работают медленнее
init (из initramfs) монтирует раздел с образом rootfs.sfs
Извлекает rootfs.sfs например в /mnt/root отмонтирует раздел с образом rootfs.sfs
Далее mkdir -p /newroot && mount -t tmpfs tmpfs /newroot
Затем mount -o bind /mnt/root /newroot
Все корень в tmpfs
Осталось выполнить exec switch_root /newroot /sbin/init
Вот тут и начинаются чудеса busybox-кий switch_root выкидывает в хелп (strace не помог)
Debian-кий говорит, что-то вроде --> Too many levels of symbolic links
Распаковал дефолтный Debian-ский initramfs, там утилиты switch_root вообще нет, зато присутствует run-init
Попробовал так -->
Скопировал корень на реальный раздел
Примонтировал данный раздел в /root
Выполнил exec run-init /root /sbin/init 3 </root/dev/console >/root/dev/console
Команда отработала - все загрузилось как нада
Затем попробовал извлек rootfs.sfs в /mnt/root
Далее mkdir -p /newroot && mount -t tmpfs tmpfs /newroot
Затем mount -o bind /mnt/root /newroot
Выполняю exec run-init /newroot /sbin/init 3 </newroot/dev/console >/newroot/dev/console
Говорит --> run-init current directory on the same filesystem as the root error 0
Не придумаю как обойти эту засаду
А хотелось бы именно tmpfs
Есть идеи??? |
|
Back to top |
|
|
xxxtype n00b
Joined: 01 Feb 2016 Posts: 4
|
Posted: Wed Feb 03, 2016 3:51 pm Post subject: |
|
|
Так же пробовал exec run-init /mnt/root /sbin/init 3 </mnt/root/dev/console >/mnt/root/dev/console
Результат тот-же --> run-init current directory on the same filesystem as the root error 0
Подозреваю обижается на то, что /dev/root отсутствует
Как обмануть-та??? |
|
Back to top |
|
|
TigerJr Guru
Joined: 19 Jun 2007 Posts: 540
|
Posted: Thu Feb 04, 2016 1:56 pm Post subject: |
|
|
Quote: | Говорит --> run-init current directory on the same filesystem as the root error 0 |
Не смогу проверить Debianовский run-init, к сожалению его нет в portage, switch_root является частью util-linux и по мануалу RETURN VALUE 0 on success и 1 on failure
Quote: | Подозреваю обижается на то, что /dev/root отсутствует |
/dev/root можно попробовать симлинком создать в /dev на твой корень.
P.S.
А распаковываешь в /mnt/root только из-за bind-mount трюка? Не получается что-ли скопировать rootfs.sfs на маунетнный tmpfs и туда switch_root? _________________ Do not use gentoo, it die |
|
Back to top |
|
|
xxxtype n00b
Joined: 01 Feb 2016 Posts: 4
|
Posted: Thu Feb 04, 2016 2:43 pm Post subject: |
|
|
Я понимаю, что код возврата 0 эт хорошо а 1 эт плохо
но ругачка --> run-init current directory on the same filesystem as the root error 0
появляется в момент kernel panic
А на что мне создать симлинк /dev/root если корень в tmpfs
пробовал на /dev/sdb5 безрезультатно
rootfs.sfs на маунетнный tmpfs не могу извлечь, говорит что because file exists поскольку данная директория уже существует
Поэтому и использую данный кастыль извлекаю в /mnt/root а затем биндю /mnt/root в /newroot кот уже примаунтен в tmpfs
Посути /mnt/root и так уже в tmpfs поскольку все это происходит в initramfs
Ща попробую вот так https://habrahabr.ru/post/253759/
по сути таже логика только там корень извлекается tar-ом |
|
Back to top |
|
|
TigerJr Guru
Joined: 19 Jun 2007 Posts: 540
|
Posted: Sat Feb 06, 2016 8:34 am Post subject: |
|
|
попробуй Code: | strace exec switch_root /newroot /sbin/init |
Может что-то ясно будет... _________________ Do not use gentoo, it die |
|
Back to top |
|
|
|