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 отличается от /bin/sh ?
Или я что то пропустил и системд уже и (диски|файловые системы) сам чекает?

Atlant ★★★★★
()

Плюсы/минусы использования 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)
Ответ на: комментарий от Atlant

Как тогда понимать этот и другие топики на эту же тему? В качестве решения везде указывается монтирование в rw-режиме.

Siborgium ★★★★★
() автор топика
Ответ на: комментарий от 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)
Ответ на: комментарий от intelfx

блин, раньше специально «ro» ставили для скриптов, а после проверки сами скрипты переключали на «rw».
Получается сейчас systemd игнорирует «rw» в fstab для корня что ли?

Atlant ★★★★★
()
Ответ на: комментарий от 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 ★★★★★
()
1 июня 2022 г.
Ответ на: комментарий от intelfx

При updatedb выдает ошибки (permission denied и тп). Решила проверить fsck и исправить ошибки если есть. Тк для корневого смонтированного каталога это не работает и размонтировать не получается, подскажите, пожалуйста, какой-нибудь элементарный способ для полных новичков (только начала читать Столярова первую книгу, я так поняла, никаких проблем при updatedb быть не должно быть, вероятно, какой-то косяк при установке и время с bios отличалось от текущего ubuntu если это имеет значение). Заранее благодарю за любую помощь

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

Спасибо! И как ее починить? Или только переустанавливать?

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

Еще запускала проверку, пишет, что все секторы в порядке

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

Столярова читать не надо. 🤣

При updatedb выдает ошибки (permission denied и тп). Решила проверить fsck и исправить ошибки если есть.

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

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

Да, совершенно верно. Что касается fsck, проверка уже смонтированной ФС обычно невозможна. Исключение — для некоторых типов ФС (как ext2/3/4) возможен запуск fsck, если ФС примонтирована только для чтения (с немедленной жёсткой перезагрузкой системы после завершения работы fsck), но это грязный хак и так сейчас никто не делает. Проверку корневого раздела нужно запускать из initramfs, пока ФС ещё не смонтирована.

Что за дистрибутив?

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

Про Столярова я уже поняла, но не знаю альтернативы для начинающих (кто совсем не разбирается ни в чем:)). Буду благодарна, если подскажете.

Т.к. не работает updatedb, то погуглив предварительно, решила вдруг проблемы с монтированием, дисками и тп. И поэтому надо бы исправить ошибки с помощью fsck (безуспешно).

То есть сейчас мне надо искать, как запустить проверку из initramfs?

Ubuntu 20.04.4 LTS

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

Смогу ли я запустить проверку из initramfs, если все уже смонтировано? И проверить (и размонтировать) не дает dev/sda4, где и установлена сама убунту. То есть мне связываться с этим и легче переустановить убунту?

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

То есть мне связываться с этим и легче переустановить убунту?

Переустанавливать ничего не надо. По крайней мере пока что.

Смысл initramfs в том, что в момент его работы ещё ничего не смонтировано и проверке ФС ничего не препятствует.

Вот тут написано, как запустить fsck при загрузке в убунте: https://phoenixnap.com/kb/fsck-command-linux (пролистать вниз до раздела «Run fsck on Linux Root Partition»).

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

При попытке fsck в GNU grub при загрузке тоже не получается, пишет диск смонтирован. Сначала пишет: /lib/recovery-mode/recovery menu: line 80: /etc/defaults/rc8: No such file or directory fsck from util-linux 2.34 Dev/sda6 is mounted E2fsck: cannot continue, aborting

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