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)

Ты перепутал /home/gentoo и /home/root.

Выглядит, что init сломается. Если корректно. / переключается не так, вроде. Посмотри в initramfs. pivot_root, switch_root. За /proc, /dev, /sys надо проследить еще. А смысл?

noatime

strictatime,lazytime

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

А как правильно сделать?

bryak ★★★★
() автор топика

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

Нет неверно.

Объясни что ты хочешь сделать?

У тебя уже есть другой Linux и ты хочешь поставить Gentoo.

Или у тебя уже есть gentoo и ты хочешь временно загрузиться с копией системы в /home/gentoo?

Если у тебя btrfs, то там это называется subvolume, который по сути является директорией.

И можно в параметрах ядра указать subvolume для использования в качестве корня.

anonymous
()
Ответ на: комментарий от anonymous

А, точно, проглядел. Хорошая штука кстати, за место симлинков можно юзать.

alfix
()
Последнее исправление: alfix (всего исправлений: 2)
Ответ на: комментарий от anonymous

У меня /dev/sda5 - debian. Хочу поставить gentoo в /home/gentoo и в debian’e в grub добавить ядро gentoo, чтобы была возможность загружать gentoo

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

Ядро ищет системные файлы относительно корня файловой системы.

Поэтому что бы ядро смонтировало, допустим /dev/sda5, а потом сделало switch_root не в точку монтирования /dev/sda5, а в поддиректорию нужно писать скрипты в initramfs.

Поэтому тебе проще переделать, что бы для gentoo была отдельная файловая система на отдельном разделе.

Если у тебя на /dev/sda5 BTRFS, то сделай subvolume.

Или если у тебя zfs.

anonymous
()
Ответ на: комментарий от 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)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.