LINUX.ORG.RU
ФорумTalks

Я понял почему гентушники не любят systemd

 ,


3

2

Давно собирался переехать со своей бывалой федоры на генту. Ну, как собирался: думал поставить на отдельный диск, душевно попиливать по тихой грусти, а когда будет готово уже и переехать.

Хотел поставить сразу с 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 слегка недалек и туповат.

Зато интересно. Надо будет продолжить, давно я такого удовольствия от техноложества не получал.

Ответ на: комментарий от Alyssa

эй, нытик и ниасилятор, иди уроки делай

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

И что я должен был увидеть по ссылке кроме голосовалки, с количеством людей даже меньшим чем на ЛОРе?

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

ниасилятор и нытик, ты настолько умён, что только плачешь о том, что не смог осилить ни Дженту, ни Дебиан.

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

Баттхёрт неосилятора

Согласен с Pinkbyte. У alex_the_v бранденбург неосилятора.

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

разве не так? тут у 98% Линукса нет, или он в виртуалке.

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

Ты ещё и в этой подветке решил сразу на личности перейти? Так это скучно. Тогда ты победил. Сустемд – говно, а все гентушники с systemd – говноеды. А ты и труЪ-гентушники все в белом. Грац :)

Stil ★★★★★
()

а emerge, понятное дело, слишком туп
Просто в дистрибутиве все сделано через жопу

слишком толсто даже для толксов

А так... очередное плаканье неосилятора. Ты бы хоть вики почитал. И да, сделай вдоль ради человечества.

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

Я не о том говорил, что что-то не работает с отдельным /usr. Понятное дело, что если его не примонтировать из initramfs, то найти на нем init будет проблематично.

Я говорил о том, что ставить systemd в /usr - само по себе странное решение. В федоре systemd установлен в /.

А этим манифестом я и сам тыкать люблю.

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

а emerge, понятное дело, слишком туп, в силу чего останавливается в растерянности, даже не делая попыток как-то помочь

Ыхыхы. Посмеялся, спасибо.

Для этого же виртуальные пакеты и делают, не так ли? Если у меня установлен virtual/udev, от которого другие пакеты зависят, то я должен уметь без проблем менять его реализации с sys-fs/udev-216 на systemd/

Юз systemd у меня с самого начала стоял. Но emerge не понял, что если я хочу поставить systemd, значит надо автоматически сносить udev-216, мне пришлось это за него делать руками. И apt и yum и dnf такие вопросы решают автоматически. emerge туповат в сравнении с ними.

Ставлю genkernel

Грустно вздохнул... :(

А что делать прикажешь? /usr на отдельном томе, кто его монтировать будет? Теперь я уже понял, что надо было ставить dracut, но сама по себе идея странная - тащить системные тулзы из другого дистрибутива.

Мало того, что эти утырки-майнтейнеры ставят systemd в /usr.

Проскочила несмелая мысль: «ман...»

И что будет написано в мане? «Если вы хотите поставить systemd в корень, поправьте ебилд и пересоберите его пожалуйста», так? Или там адреса и телефоны майнтейнеров, которые ставят pid0 в /usr, чтобы можно было подъехать и спросить где они такую траву берут?

А теперь, пожалуйста, набери в google фразу «Gentoo systemd» и пройди по первой ссылке. Там и про UEFI будет, и про /usr и про правильный USE флаг, который, как я понял, ты так и не установил.

Ты меня за полного кретина держишь что ли? Повторяю, флаги я выставил с самого начала. UEFI здесь вообще ни при чем, с ним никаких проблем не было. Проблем заставить это все работать у меня тоже не было. Смысл моего поста в удивлении отсутствием мозгов и рук у некоторых мейнтейнеров Gentoo.

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

Угу, это я уже понял. Dracut, кстати, тоже неродной.

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

Да мне не надо никого ждать, я сам в состоянии все сделать, вопрос не в этом.

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

Тут я с тобой согласен на 100%. Мне тоже перестало нравится то, куда это все движется. всякие networkd, timesyncd и прочая бодяга.

alex_the_v ★★★
() автор топика
Ответ на: комментарий от shell-script

Теперь надо сделать initramfs, т.к. /usr на отдельном диске, и оно не заработает иначе.

Хе-хе.

Ну да, если положить pid0 в /usr, то не заработает пока не смонтируешь. В /usr его не Леня положил, а некие личности из Gentoo.

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

Ты жопой мои посты читаешь? Я прекрасно понимаю, что separate /usr requires initramfs. Я толкую о том, что генерилка initramfs сломана, епрст и весь пост о том как я этот initramfs генерил.

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

Давай на ящик коньяка забьемся и ты при мне лично эту процедуру повторишь, а?

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

Я и ставил куда сказано. Не жужжать при этом не получается, т.к. genkernel-next, про который сказано в том самом мануале, сломан. Ниасиляторы не получают на выходе рабочую систему. Я получил. Повторяю, пост не о том, что у меня что-то не работает, у меня как раз все норм работает, пост о том, что в генте полсистемы сломано.

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

слишком толсто даже для толксов

То есть, по-твоему, неработающий genkernel-next, на который ссылается вики - это нормально, да? И ставить pid0 в /usr - это тоже нормально, да? Ну да, тогда толсто, че.

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

Сношу udev, маскирую, делаю emerge -Nav virtual/udev systemd, вроде все завертелось. Пересобрал мир с -uDNav, заинсталлячил ядро и модули.

Зачем ты его маскировал, я так и не понял.

Мало того, что эти утырки-майнтейнеры ставят systemd в /usr

То есть то, что он там и должен лежать, тебя не касается. Ок.
Заметь - у меня systemd и все, что потребовалось для работы systemd - две опции в конфиге ядра.
У тебя же искривление рук сильной степени :-)

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

Зачем ты его маскировал, я так и не понял.

Потому что иначе emerge мне его обратно тащит.

То есть то, что он там и должен лежать, тебя не касается.

То есть, если я теряю /usr, то все, досвидос. Ну-ну.

Заметь - у меня systemd и все, что потребовалось для работы systemd - две опции в конфиге ядра.

Ага, опции в ядре выставил, и systemd у тебя сам в системе вырастает, да? А заодно и /usr магическим образом монтироваться начинает.

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

Потому что иначе emerge мне его обратно тащит.

Поставить systemd не судьба сначала? И udev не будет тащиться.

То есть, если я теряю /usr, то все, досвидос. Ну-ну.

Человек только что открыл для себя то, что systemd в своем нормальном виде таков, лол.

Ага, опции в ядре выставил, и systemd у тебя сам в системе вырастает, да? А заодно и /usr магическим образом монтироваться начинает.

УМВР, ЧЯДНТ?

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

пост о том, что в генте полсистемы сломано.

У меня ничего не сломано. А то, что сломано у тебя при использовании второй по качеству поддержки инит-системы - это не повод ныть на форуме. Это повод слать багрепорты и патчи.

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

т.е. на личности переходят только тогда, когда употреблено слово «ты» ?

Deleted
()

а зачем разбивать диск на множество разделов? какая от этого польза?

Deleted
()

А вот использовал бы ты OpenRC, твои волосы были бы мягкими и шелковистыми, система идеально работающей, а душа в состоянии гармонии с окружающей средой и информационным пространством :)

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

Я смеялся над твоим высказыванием по поводу emerge. emerge как правило дает достаточно информации чтобы разобраться в проблеме. И если ты не вчитался в сообщение - дело не в emerge.

Для этого же виртуальные пакеты и делают, не так ли?

Так. При условии что ты правильно выставил USE флаги.

Юз systemd у меня с самого начала стоял. Но emerge не понял, что если я хочу поставить systemd, значит надо автоматически сносить udev-216, мне пришлось это за него делать руками. И apt и yum и dnf такие вопросы решают автоматически. emerge туповат в сравнении с ними.

Пакеты разделяются на две категории: те, которые подтянуты в качестве зависимостей, и те, которые ты явно сказал устанавливать. Если пакет был подтянут по зависимостям - да, при нахождении конфликта emerge его самостоятельно удалит. А вот если пакет записан как установленный явно (даже если он нужен другому пакету как зависимость), то тут emerge скажет что «не могу», и правильно сделает. И тогда ты либо должен сделать вручную uninstall (unmerge) или --deselect (не удалять, но вычернуть из категории «установленных вручную»). Пакеты, которые пришли с stage3 у тебя в группе @system (ЕМНИП) и потому скорее в категории «установленных вручную»). А как поступит apt, yum и dnf?
В мане про --deselect написано.

> > Ставлю genkernel
> Грустно вздохнул... :(
А что делать прикажешь?

Руками ядро сконфигурить. Не rocket science.
genkernel - хорошая попытка, ребята честно старались, но оставляет желать лучшего. Ты об этом мог не знать, потому «Грустно вздохнул» а не «facepalm».

И что будет написано в мане? «Если вы хотите поставить systemd в корень, поправьте ебилд и пересоберите его пожалуйста», так?

А ты открой и посмотри. Хочешь учиться - читай. Не хочешь - с Gentoo только намучаешься.

Смысл моего поста в удивлении отсутствием мозгов и рук у некоторых мейнтейнеров Gentoo.

Мозги и руки у них получше чем у некоторых. И вы отличии от многих они пишут как устроено и как с этим работать, и достаточно детально чтобы не наступать на грабли, как это сделал ты.

Ты меня за полного кретина держишь что ли? Повторяю, флаги я выставил с самого начала.

Флаг выставил. --deselect не сделал. Про /usr пропустил; пункт содержания так и называется «1.4 Ensure /usr is present at boot time». Что ты читал?

Ладно, поискрили и хватит. Без обид.
Парень ты вроде толковый - прорвешься. Но мой тебе совет - читай маны по генте. Гента - красивая и стройная система, но она, как и все, имеет свои нюансы. И эти нюансы отлично описаны. Читай маны! Кстати, еще читай выхлоп emerge (особенно который при успешной установке пакета) и новости - eselect news.
Я на генте лет 7 - нарадоваться не могу. И тебе того желаю.

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

В федоре systemd установлен в /
в /

хоспаде, шо это за извращения?

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

В мане про --deselect написано.

Так все и произошло, я просто ждал от emerge немного большей автоматизации. Если я прошу поставить другую реализацию виртуального пакета, то я очевидно хочу снести ту, которая уже стоит и конфликтует.

Руками ядро сконфигурить. Не rocket science.

Я ядро и так руками конфигурю, мне для этого genkernel не нужен. Но чтобы запаковать рамдиск все-таки нужна тулза, уж больно там много телодвижении, если это делать вручную. Кстати, в genkernel-next-60 все пофикшено, так что претензии снимаются.

Хочешь учиться - читай.

Я на генте сидел года три начиная с 2006, исходил ее вдоль и поперек. Прочитал уже все что можно было. Да, я знаю, что не бывает идеальных продуктов и гента - далеко не худший вариант.

Мозги и руки у них получше чем у некоторых.

В последнее время привык к идеальной работе федоры. Все подогнано и вылизано так, что я совсем обленился.

Про /usr пропустил; пункт содержания так и называется «1.4 Ensure /usr is present at boot time».

Я его не пропустил, а добросовестно предусмотрел. Оно не заработало из-за поломанного genkernel-next.

Парень ты вроде толковый - прорвешься.

Лол, я уже двадцать лет прорываюсь, запарило немного. Уже хочется чтобы работало.

Я на генте лет 7 - нарадоваться не могу. И тебе того желаю.

Ага, спасибо на добром слове. Я уверен что все будет пучком.

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

Ты просто читать не научился. Иди нагугли себе букварь.

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

среди твоего нытья сложно разобрать слова.

Ты просто уроки русского/литературы перестань прогуливать и внеклассным чтением не пренебрегай. Это помогает научиться читать.

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

tl;dr

Я гентушник с systemd, никаких проблем не испытывал как при переходе, так и при использовании.

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

а зачем разбивать диск на множество разделов? какая от этого польза?

Если ты используешь btrfs, то польза есть — разное сжатие на разные директории, где-то nodatacow надо впаять, где-то монтирование по требованию (благо, systemd умеет это делать).

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

пост о том, что в генте полсистемы сломано.

gentoo ~amd64 с портажем и кучей всего из гита. УМВР, ЧЯДНТ?

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

У тебя какой-то странный арч был, небось ты так свою волшебную LFS из мира фантазий назвал, не иначе.

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

Я смеялся не с того, что у человека отдельный /usr. У меня так же. Я смеялся с того, что для его работы нужен initramfs. А кто там кого куда положил для меня не критично. Своё мнение касательно поддержки systemd в gentoo я выше по треду высказал.

shell-script ★★★★★
()
Ответ на: комментарий от Deleted

Ты думаешь, я стану читать эту портянку? Раз это толксы, то вообще не важно, что написал ТС — суть изложена в титле треда; я отписался, дальнейшее развитие треда меня не касается.

А то, что ТС — неосилятор — это и так понятно. Я смог поставить сюстемд, вертексуа (который тоже слывёт упоротым регистрантом) — тоже, дерлаффф смог, а ТС не смог. Всё говорит само за себя.

r3lgar ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.