4

Я много искал, но обнаружил, что многие люди сталкивались с этой проблемой. Добавив rw init =/bin/bash в конец строки vmlinuz, я могу войти в однопользовательский режим UBUNTU 10.04 LTS, но когда я печатаю shutdown или reboot, он просто говорит, что не может этого сделать. Затем я запускаю "/sbin/init 0" и он говорит, что не может подключиться к носку выскочки.

Я думаю, потому что мы заменим /sbin /init на /bin /bash, и нет никакого init(или upstart), поэтому отключение не может быть сделано.

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

Любое вмешательство приветствуется, спасибо всем заранее ~

==== ОБНОВЛЕНО ===== Я пробовал использовать single вместо init =/usr/bash, но он сразу перешел в многопользовательский режим.

1 ответ1

3

Когда у вас нет init или других процессов, кроме вашей оболочки, выключать практически нечего. На самом деле, единственной важной вещью является файловая система - синхронизируйте ее, затем размонтируйте все файловые системы на диске или перемонтируйте как доступные только для чтения (если они не могут быть размонтированы, например, rootfs):

sync
umount /home
mount -o remount,ro /

После этого вы можете также потянуть за вилку.


Еще одна вещь, которую вы можете попробовать (но у меня нет) - запустить первоначальный init. Убедитесь, что никакие процессы помимо вашей оболочки pid1 не запущены, затем перейдите в корневой каталог и выполните exec init:

cd /
sync
exec /sbin/init

exec заменяет текущий процесс на данный, поэтому, запущенный таким образом /sbin /init возьмет специальный pid 1 из вашей оболочки.

Однако, если pid 1 когда-либо выйдет, ядро немедленно запаникует - поэтому убедитесь, что вы хотя бы sync файловые системы, прежде чем делать это.

Когда ядро начинает паниковать, оно печатает сообщение, начинает мигать светодиоды клавиатуры и останавливает все остальное - останавливает даже цикл, который обычно заставляет процессор оставаться в режиме ожидания; это, вероятно, является причиной безумия Caps Lock и высокой загрузки ЦП вашей виртуальной машиной.

Ваш «какой-то парень» был прав - в реальном однопользовательском режиме ввод exit обычно переключается на многопользовательский режим или, по крайней мере, на чистую перезагрузку. Однако init=/bin/bash не запускает этот режим; он вообще ничего не запускает, кроме ядра и оболочки bash . Чтобы перейти в настоящий однопользовательский режим, вам нужно добавить single в командную строку ядра. (Иногда работает 1 или s , но не во всех дистрибутивах используются уровни запуска.) В Ubuntu это называлось "Режим восстановления".

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .