Давно собирался переехать со своей бывалой федоры на генту. Ну, как собирался: думал поставить на отдельный диск, душевно попиливать по тихой грусти, а когда будет готово уже и переехать.
Хотел поставить сразу с systemd, привык к нему на федоре, да и обучаться премудростям openRC было неохота, его кроме генты никто не использует. В процессе установки меня много раз посещало искренне удивление: как так-то? Неужели, блин, за столько времени нельзя было сделать все по-людски?
Это не то, чтобы пост для поплакаться, просто хочу поделиться впечатлениями, ну и гентоводов послушать, может я что-то не так понял. По старой привычке я /usr делаю отдельным разделом. Никакого технического обоснования нет, просто привычка.
Размечаю /boot, /boot/efi и большой PV на все остальное, создаю разделы, монтирую, делаю chroot, разворачиваю stage3, качаю ядро, конфигурю с поддержкой systemd и efistub. Пока все пучком. Надо ставить, собсно, systemd. Делаю emerge -av systemd, и хрен там был, udev блокирует, а emerge, понятное дело, слишком туп, в силу чего останавливается в растерянности, даже не делая попыток как-то помочь. Сношу udev, маскирую, делаю emerge -Nav virtual/udev systemd, вроде все завертелось. Пересобрал мир с -uDNav, заинсталлячил ядро и модули.
Теперь надо сделать initramfs, т.к. /usr на отдельном диске, и оно не заработает иначе. Ставлю genkernel, оно говорит, что поддержки systemd не будет и если таковая нужна, то надо ставить сабайоновский genkernel-next. Невелика беда, ставим, генерим рамдиск, копируем все хозяйство в \EFI\boot\gentoo. Прописываем все в EFI со всякими там root=, dolvm и прочими. Перезагружаемся, и тут начинается.
Ядро грузится, получает cmdline от EFI, находит группу томов и выпадает в кернел паник. Епрст, разрешение EFI фреймбуфера не позволяет увидеть что произошло, стек-трейс занимает весь экран. Что за бодяга, перекомпиляю ядро с DELAY_PRINTK, прописываю в EFI boot_delay=200, перезагружаюсь, жду пять минут пока раздуплится рамдиск, дожидаюсь паника и он опять проскакивает мгновенно и ни рожна понять не возможно.
Думаю, ладно, убираю boot_delay, ставлю debug, перезагружаюсь, попадаю в среду initramfs. Монтирую руками, все монтируется, и корень, и /usr, проверяю initramfs.mounts, проверяю fstab, все на месте, все парсится, все должно работать, но не работает.
Хрен с ним. Ставлю GRUB2, прописываю графический режим 1600х1200, убираю из ядра четверых пингвинов, которые полэкрана загораживают, делаю grub2-mkconfig, перезагружаюсь.
Понятное дело, что там «trying to kill init», я это подозревал. Интересна причина: «realpath: applet not found». Мало того, что эти утырки-майнтейнеры ставят systemd в /usr. Это, блин, надо было как минимум жопой думать, они бы еще ядро в /var/opt положили. Более того, в genkernel есть конфиг initramfs.mounts, в котором прописано какие точки монтирования из корневого fstab надо смонтировать из initramfs. По-умолчанию там стоит /usr, то есть, /usr должен монтироваться без всяких дополнительных телодвижений. Но есть одно «но». Дженкернеловские скрипты юзают realpath чтобы что-то там прочитать, девайс-ноды, видимо. Занятая коробка используется своя и пересобирается по конфигу каждый раз когда генерится initramfs. realpath в этом сраном конфиге выключен нафиг, таким образом, initramfs теряет способность что-либо монтировать кроме корня, пока ты не найдешь причину и не включишь в конфиге занятой коробки этот realpath. Очень gentooway-но: мы настроим пристаней с кораблями и заминируем нахер все подходы, чтобы никто никогда не смог подплыть. На это накладывается трудность диагностики ранних паников - буфер консоли уезжает. В результате получаем неочевидную и очень трудно-диагностируемую проблему.
В результате я включил realpath, все пересоздал, снес обратно GRUB2, перепрописал все в EFI и наконец получил заветный шелл. Осталось немного потрахаться с конфигурацией ядра (не уверен, что звуковухи подцепились) и все будет ОК.
Зато я понял почему те, кто сидит на генте, так не любят systemd. Просто в дистрибутиве все сделано через жопу. init ставится в /usr, одна генерилка рамдисков заброшена уже лет пять, вторая сломана, emerge слегка недалек и туповат.
Зато интересно. Надо будет продолжить, давно я такого удовольствия от техноложества не получал.