Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
exec switch_root /mnt/root /sbin/init выкидывает в хелп
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Russian
View previous topic :: View next topic  
Author Message
xxxtype
n00b
n00b


Joined: 01 Feb 2016
Posts: 4

PostPosted: Mon Feb 01, 2016 4:14 pm    Post subject: exec switch_root /mnt/root /sbin/init выкидывает в хелп Reply with quote

Привет
Стыдно признаваться но уже 4-й месяц не могу победить switch_root
Собран initramfs внутри busybox
find . | cpio -H newc -o | gzip -9 > ../initramfs.igz
Реальный корень debootstra-ом
Необходимо переключится в реальный корень
Чтобы я ни делал результат один выкидывает в хелп
Изначально пытался realroot затолкать в tmpfs
Но после безуспешных попыток попробовал тупо mount /dev/sda5 /newroot
Результат тот же --> хелп
Гуру ХелпМи
В гугл не отправлять он меня уже боится, бубен в клочья истрепал
Что я делаю не так, где я облажался, какуюнить степ бай степ инструкцию,
хотя я их уже об читался аж в глазах рябит
Back to top
View user's profile Send private message
TigerJr
Guru
Guru


Joined: 19 Jun 2007
Posts: 369
Location: /dev/x0

PostPosted: Tue Feb 02, 2016 6:10 pm    Post subject: Re: exec switch_root /mnt/root /sbin/init выкидывает в хелп Reply with quote

xxxtype wrote:
Привет
Стыдно признаваться но уже 4-й месяц не могу победить switch_root
Собран initramfs внутри busybox
find . | cpio -H newc -o | gzip -9 > ../initramfs.igz
Реальный корень debootstra-ом
Необходимо переключится в реальный корень
Чтобы я ни делал результат один выкидывает в хелп
Изначально пытался realroot затолкать в tmpfs
Но после безуспешных попыток попробовал тупо mount /dev/sda5 /newroot
Результат тот же --> хелп
Гуру ХелпМи
В гугл не отправлять он меня уже боится, бубен в клочья истрепал
Что я делаю не так, где я облажался, какуюнить степ бай степ инструкцию,
хотя я их уже об читался аж в глазах рябит



Code:
man switch_root

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 update portage without hotdog!

Xenogentooway?
Back to top
View user's profile Send private message
xxxtype
n00b
n00b


Joined: 01 Feb 2016
Posts: 4

PostPosted: Wed Feb 03, 2016 3:46 pm    Post subject: Reply with quote

Подробности извращения...
Необходимо корень затолкать в 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
View user's profile Send private message
xxxtype
n00b
n00b


Joined: 01 Feb 2016
Posts: 4

PostPosted: Wed Feb 03, 2016 3:51 pm    Post subject: Reply with quote

Так же пробовал 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
View user's profile Send private message
TigerJr
Guru
Guru


Joined: 19 Jun 2007
Posts: 369
Location: /dev/x0

PostPosted: Thu Feb 04, 2016 1:56 pm    Post subject: Reply with quote

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 update portage without hotdog!

Xenogentooway?
Back to top
View user's profile Send private message
xxxtype
n00b
n00b


Joined: 01 Feb 2016
Posts: 4

PostPosted: Thu Feb 04, 2016 2:43 pm    Post subject: Reply with quote

Я понимаю, что код возврата 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
View user's profile Send private message
TigerJr
Guru
Guru


Joined: 19 Jun 2007
Posts: 369
Location: /dev/x0

PostPosted: Sat Feb 06, 2016 8:34 am    Post subject: Reply with quote

попробуй
Code:
strace exec switch_root /newroot /sbin/init

Может что-то ясно будет...
_________________

Do not update portage without hotdog!

Xenogentooway?
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Russian All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum