LINUX.ORG.RU

Плюсы/минусы использования fsck systemd вместо mkinitcpio

 , , , ,


0

1

Перешел на systemd-boot с grub, озадачился решением проблемы

WARNING

The root device is not configured to be mounted
read-write! It may be fsck'd again later.

Узнал про возможность сделать fsck из systemd. Чем это лучше/хуже?

Плюсы/минусы использования fsck systemd вместо mkinitcpio

Плюсы/минусы использования автомобилей вместо солёной воды.

Из текста вопроса не понятно ничего от слова совсем. Что за «проблема»? Откуда это сообщение? Какая связь с fsck? Лучше/хуже чем что?

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

Во время запуска системы производится fsck. Его можно не делать, делать напрямую через mkinitcpio или делегировать в systemd, который дернет все то же самое.

Делать его нужно. Варнинг в посте возникает из-за монтирования root в ro – systemd все равно его потом перемонтирует в rw. Из-за ro mkinitcpio не может сделать fsck. С одной стороны, можно просто монтировать в rw. С другой, зачем, если перемонтировать в rw все равно придется – не проще ли делать fsck после перемонтирования?

Хотелось бы услышать ликбез на эту тему.

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

Проверка идет на не примонтированном устройстве, или на смонтированном устройстве в режиме «только для чтения».
Переход в режим чтения-записи идет ПОСЛЕ проверки файловой системы.

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

Раскрыл сообщением выше.

Собственно, всю дилемму можно описать выбором между 2 вариантами в первом же параграфе.

https://wiki.archlinux.org/index.php/fsck

mkinitcpio offers you the option to fsck your root file system before mounting it via the fsck hook. If you do this, you should mount root read-write via the appropriate rw kernel parameter.

systemd will fsck all file systems having a fsck pass number greater than 0 (either from /etc/fstab or a user-supplied unit file). For the root file system, it also has to be mounted read-only initially with the kernel parameter ro and only then remounted read-write from fstab (note that the defaults mount option implies rw).

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

Fsck уже примонтированной файловой системы — это лютый костыль вселенского масштаба, придуманный во времена, когда не было никаких initramfs. В 2021 году нет никакого смысла так делать.

Но здесь нет дилеммы. Запускай fsck корня из mkinitcpio, а fsck остальных ФС из корня (если твой дистрибутив на systemd — это произойдёт с помощью systemd).

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

И правильно делается.

Правильно делается что? Монтирование корневого каталога в режиме записи ПЕРЕД его проверкой??

P.S. На предложенную ссылку могу сказать первое - ссылка весьма старая и большая вероятность что ошибка давно исправлена.

P.P.S.
Проверка идет на не примонтированном устройстве, или на смонтированном устройстве в режиме «только для чтения».
Переход в режим чтения-записи идет ПОСЛЕ проверки файловой системы.

Утилита mkinitcpio формирует образ урезанного корневого диск с файлами с запуском этого образа из оперативной памяти.

А systemd-* это один из файлов в этом образе.

Если в этот образ впихнули файлы fsck.*, то загрузочные скрипты(или «systemd» сервисы/модули) _могут_ их использовать для проверки файловых систем на начальном этапе загрузки.

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

Правильно делается что? Монтирование корневого каталога в режиме записи ПЕРЕД его проверкой??

Правильно делается передача ядру параметра rw. Это по цепочке отключает fsck-после-монтирования. Параллельно с этим нужно настроить в своём дистрибутиве fsck-перед-монтированием.

На предложенную ссылку

Я Ъ, по ссылке не ходил. Сужу сугубо по описанию, приведённому ТСом.

Проверка идет на не примонтированном устройстве, или на смонтированном устройстве в режиме «только для чтения». Переход в режим чтения-записи идет ПОСЛЕ проверки файловой системы.

Утилита mkinitcpio формирует образ урезанного корневого диск с файлами с запуском этого образа из оперативной памяти.

А systemd-* это один из файлов в этом образе.

Если в этот образ впихнули файлы fsck.*, то загрузочные скрипты(или «systemd» сервисы/модули) могут их использовать для проверки файловых систем на начальном этапе загрузки.

Я какое-то время комейнтейнил mkinitcpio в арче, зачем ты мне это рассказываешь :)

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

Не понял, как ты сделал такой вывод из написанного мной.

В fstab никто никогда не писал ro для корня, по крайней мере не на моей памяти. Ядро монтировало корень в ro, потом с корня запускался fsck для всех ФС с passno=1, потом корень перемонтировался с rw и параметрами из fstab, потом fsck всех ФС с passno=2, потом монтировались все остальные ФС.

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

я смотрел скрипты в свое время. Поэтому и несколько удивлен что сейчас требуют ставить rw в командную строку для ядра.

зачем ты мне это рассказываешь

Это скорее было для ТС. Не стал разбивать на разные ответы.

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

Нет, никто не требует. Но в современных условиях (при использовании initramfs) это бессмысленно (т. к. initramfs всё равно прочекает твой корень до монтирования) и контрпродуктивно (т. к. его придётся отдельной операцией перемонтировать в rw).

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

т. к. его придётся отдельной операцией перемонтировать в rw

Можно подумать, это будет дополнительной операцией...

Вообще-то initramfs придуман совсем для другого — загрузить модули для доступа к дискам/nfs и/или сделать factory reset для модемов/гаджетов.

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

Можно подумать, это будет дополнительной операцией…

Да. А что, нет?

Вообще-то initramfs придуман совсем для другого — загрузить модули для доступа к дискам/nfs и/или сделать factory reset для модемов/гаджетов.

Какая разница, для чего initramfs был придуман? Используется он для того, чтобы подготовить систему к монтированию корня. Fsck отлично входит в это понятие.

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

Да. А что, нет?

Где вы там увидели дополнительную? Если корень по старинке как 50+ назад делаем fsck на ro (которое в ro делает ядро при старте и парсинге параметров загрузки), потом remount,rw или из initramfs делаем fsck на неподмонтированной fs и потом remount,rw. Количество операций одно и тоже, если бы не см. ниже (но не в вашу пользу):

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

Дело в том, что initramfs - это дополнительный образ, который надо закачать в память, разжать, а потом выполнить sh-лапшу до бинарного init-а, а потом делать switch_root/pivot_root (классное доказательство, что это говнокод - с первого раза дополнительный неюниксовый сискол получился куцый и пришлось переделывать). Вот нахрена это на prode, если это не пользовательский модем?!

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

Где вы там увидели дополнительную?

fsck -> mount

vs

mount -> fsck -> mount

Дело в том, что initramfs - это дополнительный образ, который надо закачать в память, разжать, а потом выполнить sh-лапшу до бинарного init-а, а потом делать switch_root/pivot_root

И что? initramfs нужен априори, чтобы драйвера подгрузить.

(классное доказательство, что это говнокод - с первого раза дополнительный неюниксовый сискол получился куцый и пришлось переделывать)

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

Вот нахрена это на prode, если это не пользовательский модем?!

omg… Вот на самом деле, сколь глупой, архаичной и идиотской не была бы какая-то техника, от которой все уже давно отказались, на ЛОРе обязательно найдётся кадр, который будет её отстаивать вопреки всяческому здравому смыслу.

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

mount -> fsck -> mount

Охренеть... Первый mount делает ядро ВСЕГДА, в том числе и на initramfs, само, парся стартовые параметры.

нужен априори, чтобы драйвера подгрузить.

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

Пойди и посчитай количество в линуксе самых что ни на есть юниксовых сисколлов,

Не надо манипулировать. Речь была о нестандартных сисколах, от которых в конечном виде уже отказались, зато приходится делать кучу mount --bind для /dev /proc /sys ... ДОПОЛНИТЕЛЬНЫХ.

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

Охренеть

Вот именно, охренеть. Самоуверенности с Эверест, знаний — гораздо меньше :)

Первый mount делает ядро ВСЕГДА, в том числе и на initramfs, само, парся стартовые параметры.

Настало время освежить знания.

И часто вы меняете чип моста/рейда? Накой их подгружать то?

Я не понял, ты мне в 2021 под каждую машину предлагаешь своё монолитное ядро собирать? 🤣

И да, смешно, когда кто-то загоняет про время, затрачиваемое на распаковку initramfs, но не в курсах, что у вкомпиленных в ядро модулей probe выполняется безусловно (и в один поток), вследствие чего монолитные ядра запускаются на несколько секунд дольше модульных :)

Не надо манипулировать. Речь была о нестандартных сисколах, от которых в конечном виде уже отказались, зато приходится делать кучу mount –bind для /dev /proc /sys … ДОПОЛНИТЕЛЬНЫХ.

Я не знаю, о чём там у тебя была речь. Я ответил ровно на то, что тобой было написано. А вот ты сейчас примерно этим и занимаешься.

Напиши уже, что у тебя там за «prod». Чтобы я знал, чьи услуги обходить стороной.

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

Настало время освежить знания.

Всё с вами понятно. Типичный ЛОР, спорят о том, о чём не имеют не малейшего понятия, понять, о чём речь - не могут, включают детский сад и переход на личности.

Чтобы не выглядело так с моей стороны, напоследок перед игнором объясняю: чтобы система начала что-то делать, она должна подмотировать как минимум корень, для начала стоит бы понять, что означает буковки fs в initramfs.

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

Типичный ЛОР, спорят о том, о чём не имеют не малейшего понятия

Всё так. Типичный ЛОР: спорят о том, о чём не имеют ни малейшего понятия, и вертятся как уж на сковородке, приплетая монтирование tmpfs в разговор о производительности монтирования корневой ФС с диска.

Чтобы не выглядело так с моей стороны

Да успокойся уже, всем и так понятно, как ты выглядишь ;)

intelfx ★★★★★ ()