Удаленное тестирование ядра FreeBSD

Вполне обычное дело, когда администрирование системы FreeBSD производится удаленно, например, когда сервер находится в другом, закрытом помещении. У вас может не быть последовательной консоли, вследствие чего становится невозможным получить доступ к командной строке загрузчика. Самое большее, на что можно надеяться в таких ситуациях, это то, что у вас будет некто, кто сможет подойти к компьютеру и нажать кнопку питания. Как в таких обстоятельствах можно протестировать новое ядро? Здесь хорошо бы иметь возможность попробовать загрузить новое ядро и если что-то пойдет не так – выполнить перезагрузку с рабочим ядром. И такая возможность есть, она называется однократная тестовая загрузка. Здесь вам пригодится nextboot(8).

nextboot(8) – это способ сказать: «Загрузи это ядро в следующий раз, но только один раз». Команда nextboot принимает единственный аргумент -к, параметром которого является имя каталога с тестовым ядром, вложенного в каталог /boot. Например, я собрал и установил новое ядро, мне нужно однократно загрузить новое ядро, а если оно окажется неработоспособным, то на следующей перезагрузке должно быть загружено предыдущее ядро. Прежде всего, необходимо скопировать новое ядро в каталог, отличный от /boot/kernel, а в /boot/kernel должно находиться рабочее ядро.

#      mv /boot/kernel /boot/kernel.test

#      mkdir /boot/kernel

#      cp /boot/kernel.good/* /boot/kernel/

Можно заранее предусмотреть установку ядра в данный каталог, установив значение переменной INSTKERNAME при сборке ядра. Дайте ядру имя во время установки ядра, и утилита make(l) автоматически поместит собранное ядро в нужное место:

#      cd /usr/src

#      make KERNCONF=TESTKERNEL INSTKERNAME=test kernel Эта команда установит ядро как /boot/kernel.test.

Теперь, когда имеется рабочее ядро, установленное как ядро по умолчанию, и тестовое ядро как /boot/kernel.test, можно вызвать команду nextboot(8) и передать ей тестовое ядро в виде параметра ключа -к, указав имя каталога, вложенного в каталог /boot:

#      nextboot -k kernel.test

На следующей перезагрузке системы загрузчик запустит ядро из /boot/ kernel.test вместо /boot/kernel и заодно сотрет файл с настройками, где говорится о необходимости загрузить тестовое ядро. После этого при следующей перезагрузке будет загружено стандартное ядро. Вся хитрость состоит в том, чтобы рабочее ядро находилось в каталоге /boot/ kernel. Если новое ядро хорошо себя зарекомендовало, можно выполнить следующие команды:

#           mv /boot/kernel /boot/kernel.previous

#           mv /boot/kernel.test /boot/kernel

Вуаля! И тестовое ядро превратилось в рабочее.

Осторожно – nextboot!

В руководстве говорится, что nextboot(8) выполняет запись в корневую файловую систему до того, как она пройдет проверку целостности на этапе загрузки. Это означает, что в случае некорректного завершения системы до момента загрузки нового ядра возможно, что nextboot повредит файловую систему. В действительности утилита nextboot(8) не выделяет новое дисковое пространство, она просто редактирует файл, который уже существует в системе, поэтому риск повреждения файловой системы сводится к минимуму.

Источник: ЛукасМ. FreeBSD. Подробное руководство, 2-е издание. – Пер. с англ. – СПб.: Символ- Плюс, 2009. – 864 е., ил.

Похожие посты:

Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий