Есть ли способ загрузить командную строку Grub изнутри Linux?

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

Повсеместный пример см. в исходном коде inetd.

0
09.02.2019, 02:40
1 ответ

Я предполагаю, что ваш вопрос касается отладки процесса загрузки, то есть проверки того, будет ли новая конфигурация grub работать должным образом, перед перезагрузкой по-настоящему:

Это возможно благодаря виртуализации.

Тем не менее, есть много крайних случаев, если вы просто загружаете свой физический диск, на котором в данный момент работает ваша система, снова в виртуальной машине. Вы должны синхронизировать любую незавершенную запись на диск, очистить кэши, а затем запустить виртуальную машину с строго читаемым -только представлением диска (с )(, возможно, на копии -на -слой записи). Вы также должны полностью отключить сеть -, иначе она загрузит ваши электронные письма и удалит их с вашего сервера внутри виртуальной машины, где эти данные затем будут потеряны при выключении.

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

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

Пока вы знаете о разветвлениях, все сводится к простому qemu, в основном:

sync
echo 3 > /proc/sys/vm/drop_caches
qemu -net none -drive file=/dev/disk,readonly
# leave out readonly for a copy-on-write device:
qemu -net none -drive file=/dev/mapper/copy-on-write-disk

(qemu требуется больше параметров для правильной работы, см. любое руководство по qemu для получения более подробной информации -например, если вы используете дистрибутив, такой как Gentoo, который строго оптимизирован для одного типа ЦП, вам также необходимо -cpu host-, но это больше или меньше суть.)

0
28.01.2020, 04:13

Теги

Похожие вопросы