Лабораторная работа №4: Запуск системы в минимальном окружении

Опубликовано: 12 Декабрь, 2014 в разделе: Лабы

Если выполнить однопользовательскую загрузку у нас не выходит, мы всегда можем попытаться восстановить систему в режиме минимального окружения. В этом режиме у нас будет только командный интерпретатор. Это ещё более урезанная версия ОС, где есть только ядро и bash.

План работы:

1. Перезагрузите систему и войдите в меню загрузчика GRUB
2. Измените параметры запуска ядра, дописав параметр init=/bin/bash в конец строки параметров. Выполните загрузку ядра с данным параметром и дождитесь приглашения терминала.
3. Попробуйте создать произвольный файл в корневом каталоге командой touch <файл>. Сделайте вывод.
4. Перемонтируйте корневой раздел в режиме чтения-записи
5. Попробуйте создать произвольный файл в корневом каталоге командой touch <файл>. Сделайте вывод.
6. Выполните команду exec /sbin/init для начала нормальной загрузки ОС.

Ход работы:

1. Первый пункт аналогичен предыдущим лабораторным работам, перезагрузка, жмём пробел, это остановит таймер. Перед нами меню grub.

2. Входим в меню grub (клавишей <e> — edit) и редактируем запись с параметрами ядра (kernel). Дописываем после всех параметров строку init=/bin/bash

1

Вот загрузилась командная строка. Вообще в Linux командная строка — это всё. Можно сделать гораздо больше, чем в Windows, насколько я знаю Windows. )

2

3. Попробуем создать файл командой touch

# touch /root/1.txt

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

К слову, touch меняет временную метку последнего доступа к файлу, но если файл на диске отсутствует — создает его.

3

4. Перемонтируем файловую систему в режим записи.

# mount / -o remount,rw

где remount, rw — опции перемонтирования в режим чтения-записи (только для чтения будет ro — read-only). Ну и слеш — корневой раздел.

5. Далее создадим файл /root/1.txt

# touch /root/1.txt

тишина… Проверим наличие файла

# ls /root/

в списке есть 1.txt, значит файл успешно создан.

4

6. Ну и напоследок выполним команду дальнейшей загрузки:

# exec /sbin/init

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

Итак, какие выводы из всего этого мы можем сделать?

Выводы:

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

После того, как все операции по восстановлению-диагностики будут сделаны, можно продолжить нормальную загрузку системы.

8 комментариев

  1. Михаил:

    Ошибка в строке:
    # mount -0 remount, rw /

    Там не «0», а «o». Причем на скриншоте видно. Иначе выдаст хелп по команде mount.

    • Дмитрий:

      Всё верно, конечно же -o (options). Странно, что выглядит как ноль. Исправлю!

  2. Михаил:

    Еще есть вопрос:
    при перемонтировании с ключом «ro», т.е. «mount -o remount, ro /», команда touch продолжает действовать, т.е. при отсутствии файла если выполним команду «touch /root/1234.txt» она его создаст. Так и должно быть? или может ключ -o меняется на что-то другое?

    • Дмитрий:

      Значит команда не сработала. Попробуйте написать иначе:
      # mount / -o remount,ro
      Вот именно так, без пробела после запятой и с таким порядком аргументов.

      Почему у вас сработала touch? Значит система осталась в rw. Проверьте вывод команды mount без параметров!

      • Михаил:

        Да, получилось командой «mount / -o remount,ro» перемонтировать.
        Единственное, если мы оставили систему смонтированной в «rw» (не перевели в «ro»), то при загрузке «exec /sbin/init» у нас следующий варнинг:

        WARNING!!!
        Running e2fsck on a mounted filesystem may cause SEVERE filesystem damage.
        Do you really want to continue (y,n)?

        При нажатии «n» пишет, что проверка отменена и загружается.
        При нажатии «y» система виснет в цикле на строках:

        /etc/rc.d/sysinit: line 963: usleep: command not found
        /etc/rc.d/sysinit: line 965: /sbin/pidof: No such file or directory

  3. Михаил:

    Еще такой вопрос, по последнему моему сообщению (варнингу).

    Теперь после запуска машины с перемонтированием «rw», где зависала машина в цикле — она не загружается:
    switchroot: mount failed: No such file or directory
    Kernel panic — not syncing: Attempted to kill init!

    Диск в режиме linux rescue не помогает, не находит ни один раздел при попытке монтирования, видимо придется переставлять машину с нуля. Или есть другое решение?

    • Дмитрий:

      Вот на самом деле очень интересная ситуация наступила. Система посчитала, что файловая система может содержать ошибки и предложила запустить проверку целостности fsck. Проводить fsck на смонтированной файловой системе категорически нельзя! В вашем случае можно попытаться в linux rescue провести проверку fsck разделов /dev/sda1 (ну или того, который был у вас с системой). То, что они не смонтированы — даже хорошо.
      # fsck -y -f /dev/sda1

      • Михаил:

        Вот что выдало:

        fsck 1.39 (29-May-2006)
        WARNING: couldn’t open /etc/fstab: No such file or directory
        e2fsck 1.39 (29-May-2006)
        Pass 1: Checking inodes, blocks, and sizes
        Pass 2: Checking directory structure
        Pass 3: Checking directory connectivity
        Pass 4: Checking reference counts
        Pass 5: Checking group summary information
        /boot: 34/26104 files (8.8% non-contiguous), 15319/104388 blocks

        И на «chroot /mnt/sysimage» не реагирует.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.