LINUX.ORG.RU

Хочу поставить gentoo в /home/gentoo

 ,


0

3

Как мне правильно примонтировать / в fstab?

UUID=some_uuid /home           ext4    defaults,noatime,commit=60,data=writeback,barrier=0,journal_async_commit          0       2

/home/gentoo /               none    bind,noatime,commit=60,data=writeback,barrier=0,nobh,journal_async_commit,errors=remount-ro 0       1

Вот так, всё верно?

★★★★

Последнее исправление: bryak (всего исправлений: 1)
Ответ на: комментарий от anonymous
Поэтому что бы ядро смонтировало, допустим /dev/sda5, а потом сделало switch_root не в точку монтирования /dev/sda5, а в поддиректорию нужно писать скрипты в initramfs.

ext4, возможности переразбить hdd нет. Как изменить initramfs, чтобы оно могло загрузить ядро не из корня?

bryak ★★★★
() автор топика
Ответ на: комментарий от bryak

Как изменить initramfs, чтобы оно могло загрузить ядро не из корня?

Кто на ком стоял?

vvn_black ★★★★★★★★★★★★★
()
Ответ на: комментарий от bryak

Initramfs подготавливает реальный корень и запускает инит из него. Т.е. получается цепочка инитов. Про / он знает из cmd_line, где аргумент real_root=, или из копии fstab. Вероятно, что нужно в первом ините и добавить поддиректорию /home/gentoo в строки скриптов, или еще, если по хорошему, с распознаванием аргумента из cmd_line в переменную REAL_ROOT_SUBDIRECTORY. У genkernel скрипты храняться где-то в /usr/share/genkernel. Но изменения там перетираются при обновлении и надо оформлять патч к ебилду, поэтому если initrd тебе не нужен, то можешь взять за пример инит проще, доработать и положить на любую ФС, лучше в sda5, а ядру указать запускать его.

Дополню.
Genkernel можно указать свой пользовательский скрипт linuxrc. Может можно с ним выкрутиться не патча.

boowai ★★★★
()
Последнее исправление: boowai (всего исправлений: 5)
Ответ на: комментарий от bryak

Ты не понял, что тебе сказал анонимус.

Ты понимаешь как запускается Линукс?

В начале стартует загрузчик, но это не обязательно в случае EFI.

Он считывает в память ядро.

И передает ему управление.

Ядро «смотрит» параметр root=, ищет что там указано и монтирует в /.

Далее вызывает процесс init, сейчас в большинстве случаев это systemd.

А вот если корневая фс находится не просто на разделе.

А на раид, лвм, зашифрована или перед ее монтированием нужно загрузить модуль ядра или выполнить прочие действия то тут нужен initramfs.

Initramfs - это минимальная Линукс система, которую в начале запускает ядро, эта система делает нужные действия и далее скрипты в этой системе монтируют корневую фс и делают switch_root или pivot_root, т.е. переключение корня.

Вот тебе и нужно написать свой скрипт в инитрамфс или поправить скрипты в нем, что бы переключение было условно не в /mnt/root, а в /mnt/root/home/gentoo.

infomeh ★★
()
Ответ на: комментарий от bryak

Повторю. Посмотри файл linuxrc в файлах genkernel и соседние, если используешь его.

Если без initrd, то смотри тут простейший - https://wiki.gentoo.org/wiki/Custom_Initramfs#Init. Поправишь, сохранишь на ФС, лучше с busybox, и вызовешь через параметр ядра init=/путь в cmd_line, тебе даже ramdisk не нужен будет. Ядро понимает shebang и запустит скрипт через указанный интерпретатор.

boowai ★★★★
()
Последнее исправление: boowai (всего исправлений: 5)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.