NetBSD 4.0.1. Как я напартачил в /etc/fstab

tzar аватар

Итак, в процессе редактирования /etc/fstab я совершил ошибку и система не грузится. Естественно, переустановку системы исключаем. Загрузившись в single-user mode я не смог запустить vi, говорит не могу создать временный файл на разделе смонтированном для чтения(( Как я выкрутился?

1. Грузимся с установочного диска.
2. Когда он предлагает установить систему или выбрать другой режим, переходим в режим командной строки(есть среди пунктов меню) Utility menu -> Run /bin/sh
3. Монтируем ФС / (допустим винт определился у меня и используется как wd0)
#mount -o rw /dev/wd0a /mnt
4. Из доступных мне средств в качестве редактора оказался только ed [/bin/ed] (ed — первый стандартный текстовый редактор операционной системы UNIX, применялся в начале 1970-х. Расширенная его версия, известная как ex, послужила основой редактора vi./Википедия http://ru.wikipedia.org/wiki/Ed /) и sed [/usr/bin/sed] (http://ru.wikipedia.org/wiki/Sed).
Я пользовался ed
#/bin/ed /mnt/etc/fstab
Мои действия, я нашёл искомую строку, отредактировал (точнее, заменил) строку, сохранил содержимое редактируемого буфера (в данном случае это загруженный файл) в файл и вышел из ed.
5. Перезагрузился
#shutdown -r now

Очень краткая справка по командам потокового редактора ed:
. - напечатать текущую строку
+ - перейти к следующей строке
- - перейти к предыдущей строке
c - редактировать (заменить содержимое) текущую строку
w /mnt/etc/fstab - сохранить буфер в файл
q - выйти из редактора

P.S. Как выяснилось, можно перемонтировать корневой раздел и далее юзать ed, достаточно #mount -u / (спасибо spinore и shattered) без использования загрузочного диска

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".
spinore аватар

Цитата:говорит не могу

Цитата:
говорит не могу создать временный файл на разделе смонтированном для чтения(( Как я выкрутился?

Угу. mount -rw / не пробовали? И не надо было бы грузиться с внешнего диска (точно не помню опции, но вот что я таким образом правил файлы из single-user - точно. При желании монтировал руками /usr и запускал и vim и zsh, чтобы не париться).

tzar аватар

mount -rw / - попробую при

mount -rw / - попробую при случае, только там точно нужны опции по перемонтированию. Спасибо

spinore аватар

-u The -u flag

     -u      The -u flag indicates that the status of an already mounted file
             system should be changed.  Any of the options discussed above
             (the -o option) may be changed; also a file system can be changed
             from read-only to read-write or vice versa.  An attempt to change
             from read-write to read-only will fail if any files on the file
             system are currently open for writing unless the -f flag is also
             specified.  The set of options is determined by first extracting
             the options for the file system from the fstab(5) file, then
             applying any options specified by the -o argument, and finally
             applying the -r or -w option.

Из man mount
Возможно, надо mount -u -w /

shattered аватар

собственно, достаточно mount

собственно, достаточно mount -u /

в особых случаях (если сменилось имя диска, на котором /) -- mount -u /dev/... /

tzar аватар

Всем спасибо за помощь,

Всем спасибо за помощь, вариант с mount -u я обязательно проверю, просто благодаря этой ситуации, помимо опции перемонтирования (спасибо снова), я наконец разобрался слегка с потоковым редактором ed и sed

spinore аватар

Цитата:P.S. Как выяснилось,

Цитата:
P.S. Как выяснилось, можно перемонтировать корневой раздел и далее юзать ed

А почему не vi? Оно вроде поудобнее будет.
Кстати, емнип. недавно ввели возможность писать комментарии в /etc/fstab, ранее её не было. И то ли в obsd то ли в nbsd исправили/допилили парсинг fstab, избавив его от проблемы "если хоть одна ошибка в файле при монтировании чего-нибудь, то не монтировать вообще ничего и падать в сингл-юзер".

tzar аватар

vi, конечно, хорош, но в

vi, конечно, хорош, но в su-режиме его полным путём писать нужно для запуска а ed запускается просто ed

shattered аватар

vi нужен termcap, ed и sed --

vi нужен termcap, ed и sed -- нет.