когда рабочая станция пользователя Red Hat 5.x выходит из строя и покидает файловую систему с ошибками, при следующей загрузке она запрашивает пароль root для входа в одиночный режим и запуска fsck вручную.
Это раздражает, потому что пользователь не может использовать свою рабочую станцию, и нам нужно послать кого-нибудь, чтобы просто запустить fsck.
Пользователи не хранят никаких ценных данных на своих рабочих станциях, поэтому есть ли способ настроить этот fsck для автоматического запуска при ошибках без пароля?
... Думаю, я нашел это. В /etc/rc.d/rc.sysinit есть несколько строк, которые выглядят так:
if ! [[ " $fsckoptions" =~ " -y" ]]; then fsckoptions="-a $fsckoptions" fi
if ! [[ " $fsckoptions" =~ " -y" ]]; then if ! [[ " $fsckoptions" =~ " -a" ]]; then if ! [[ " $fsckoptions" =~ " -p" ]]; then fsckoptions="-y $fsckoptions" fi fi fi
Конечно, фокус в том, чтобы проверить глупость; Я не знаю, как вызвать ошибку файловой системы, которая заставит обычный автоматический fsck запросить пароль root, чтобы я мог знать, действительно ли это сработало или нет.
Все эти предполетные проверки контролируются начальным образом RAM-диска (опция initrd в grub.conf), созданным операционной системой, который выполняет быструю проверку на наличие ошибок в файловой системе и переходит в однопользовательский режим при обнаружении ошибок. Ваше путешествие по изменению этого поведения на бег fsck -y
без пароля начинается с распаковки образа initrd, включенного в RPM ядра. К сожалению, вам, вероятно, придется делать это после каждого обновления системы (поскольку redhat поставляет новый initrd с каждым ядром (или, точнее, генерирует новый с помощью mkinitcpio на основе вашего оборудования)).
У нас такая же проблема в нашей среде, спасибо за эту идею. Если у меня будет время разобраться в этом или решить, я обязательно обновлю этот пост.
Что, вероятно, ближе всего к "официальному" способу сделать это, обычно не рекомендуется (по уважительной причине!):
echo ' -y ' > /fsckoptions
chattr +i /fsckoptions
Все версии /etc/rc.d/rc.sysinit
Я проверил добавление содержимого /fsckoptions
к $fsckoptions
переменная перед запуском fsck
. chattr +i
следит за тем, чтобы ничего не изменилось автоматически.
Пользователи не хранят никаких ценных данных на своих рабочих станциях, поэтому есть ли способ настроить этот fsck для автоматического запуска при ошибках без пароля?
Все это контролируется /etc/rc.d/rc.sysinit
, который представляет собой просто сценарий оболочки. Вы можете изменить это в соответствии со своими потребностями (хотя вам нужно быть осторожным, чтобы ваши изменения не были потеряны в случае обновления пакета). Ищите места, где вызывает сценарий sulogin
.
При просмотре этого сценария кажется, что вы удалили следующую строку:
touch /.autofsck &> /dev/null
Система больше не будет запускать fsck при следующей загрузке. Если вы используете ext3
(или ext4
), вам обычно не нужно запускать fsck.
Я не знаю, как для этого обойти пароль. Если вас не беспокоит целостность файловой системы, вы можете полностью обойти fsck, добавив fastboot
в строку ядра в файле grub.conf.
Другой способ решения проблемы: в GRUB / LILO добавьте init=/bin/bash
до конца командной строки. Это позволит вам обойти приглашение sulogin, которое вы получаете для fsck.