Обновление до 16.04 невозможно загрузить, корневая файловая система только для чтения, измененный grub

Это совершенно глупо (ИМХО). Я обновил один компьютер до 16.04 (Xubuntu), и у меня были проблемы с ним, которые я обсуждал в другом месте, читая здесь. Поэтому я подождал несколько недель, пока этот компьютер не заработал достаточно хорошо, а затем обновил свой другой компьютер, одноядерный, выпущенный в 2006 году. После установки обновления я не смог загрузить Xubuntu. Я попробовал уловки, которые я сделал для своего первого компьютера, я думаю, что наиболее полезным было заменить "тихий режим" на "nomodeset" в /boot/grub/grub.cfg. Все, что я сделал, это загрузил меня в интерфейс командной строки. После входа в систему я обнаружил, что не могу запустить startx, чтобы инициировать среду рабочего стола с графическим интерфейсом. Хммм... Еще немного охоты и пробовал разные вещи, и я обнаружил, что мой корневой раздел был в режиме только для чтения. Я обнаружил, что могу исправить это с помощью команды

sudo mount -o remount,rw /

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

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

errors=remount-ro

И что этот вариант для вашей защиты, потому что что-то не так с корневой файловой системой, и вам не следует писать в нее, и на самом деле вам лучше сделать резервную копию, потому что она находится на выходе. Запустите fsck на нем. Ну, я нахожу подозрительным, что это происходит сразу после обновления. Кроме того, это относительно новый SSD, и мне все равно не рекомендуется запускать на нем fsck. Но я могу удалить эту опцию, и корневая файловая система все еще работает в режиме только для чтения, так что это не проблема fstab.

Что-то еще произошло со мной. В файле grub строка запуска

linux   /vmlinuz-4.4.0-38-generic root=/dev/mapper/vg_ssd1-xubu_root_ssd1 ro  nomodeset $vt_handoff

Непосредственно перед "nomodeset" (изменен с "тихий всплеск") является "ro". Grug загружает мою корневую систему в режиме только для чтения? Я изменил "ro" на "rw", а также изменил "nomodeset" обратно на "тихий всплеск", сохранил файл и перезагрузился. Отлично подошел в графическом режиме при правильном разрешении.

Хм.... я побежал

sudo upgrade-grub 

пересобрать файл grub.cfg. Снова, строка запуска была изменена на "ro" и снова перезагрузилась в командную строку.

Мое обновление было неполным? Я выполнил следующие команды, чтобы проверить полное обновление и убедиться, что было установлено достаточно дополнительных компонентов:

sudo apt-get -f install
sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get autoremove
sudo apt-get clean

Я снова побежал

sudo upgrade-grub 

но опять-таки выяснилось, что линия запуска была установлена ​​на "ро".

Поэтому я провел еще несколько поисков. Я посмотрел в файле /etc/grub.d/10_linux и выполнил поиск по запросу "ro". Я нашел следующий фрагмент кода:

if test -d /sys/firmware/efi && test -e "${linux}.efi.signed"; then
  sed "s/^/$submenu_indentation/" << EOF
  linux ${rel_dirname}/${basename}.efi.signed root=${linux_root_device_thisversion} ro ${args}
EOF
else
  sed "s/^/$submenu_indentation/" << EOF
  linux ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args}
EOF

Мне пришлось посмотреть, что представляет собой материал с подписью EFI, и речь идет о безопасной загрузке, которая защищает вашу систему от вредоносных программ в загрузочном секторе. Так заражен ли мой загрузочный раздел BIOS? У меня есть версия Windows XP в системе, хотя она больше не запускается.

Но затем статус "ro" реализуется с обеих сторон оператора if. Я немного поигрался и обнаружил, что это было "другое" условие, которое выполнялось. Поэтому я изменил это с "ro" на "rw", так что теперь весь фрагмент выглядит так:

if test -d /sys/firmware/efi && test -e "${linux}.efi.signed"; then
  sed "s/^/$submenu_indentation/" << EOF
  linux ${rel_dirname}/${basename}.efi.signed  root=${linux_root_device_thisversion} ro ${args}
EOF
else
  sed "s/^/$submenu_indentation/" << EOF
  linux ${rel_dirname}/${basename} root=${linux_root_device_thisversion} rw ${args}
EOF

Я реран

update-grub

И все вышло хорошо. Я проверил строку запуска в grub.cfg, и она имеет "rw", а не "ro".

linux   /vmlinuz-4.4.0-38-generic root=/dev/mapper/vg_ssd1-xubu_root_ssd1 rw  nomodeset $vt_handoff

Я перезагрузился, и все встало нормально. Так что я бы сказал, что проблема решена, но я не думаю, что это так. Я не думаю, что это просто ошибка в Grub. У некоторых других систем Linux, найденных os-prober, были строки запуска, которые не указывали ни "rw", ни "ro".

Я не понимаю, что здесь происходит, и почему он по умолчанию "ro" в первую очередь. Если кто-то может пролить свет на это и лучше решить эту проблему, я был бы очень признателен.

0 ответов

Другие вопросы по тегам