Ошибка загрузки

Загружаемся в single mode

a) Стандартное лечение файловой системы:

fsck -y /dev/hdd-name

например:

fsck -y /dev/ad0s1f

b) Форсированное лечение с проверкой и «замещением» bad-блоков (например):

fsck -y -c -f /dev/hdd-name 
fsck -y -c /dev/mirror/var 
 -y — неинтерактивное лечение "yes" на все вопросы
 -c — найти bad-блоки readonly тестом и перенести в inod bad-блоков
 -f — форсировать проверку (игнорировать флаг "fs is clean")

Если Вам кажется, что Ваш fsck завис, при проверке большого раздела, — не торопитесь его выбивать. Что бы увидеть то, что fsck на самом деле делает, достаточно нажать комбинацию клавиш Ctrl-T. При нажатии на эту комбинацию клавиш в консоли fsck, то он напишет отчет о своей работе.

Как в FreeBSD при загрузке в single read-olny переключится в RW режим?

mount -u -w /

Как исправить конфигурационные файлы, если после изменения, система не грузится?

Загружаемся в single mode  и

mount -u -w / # монтирует корневой раздел в RW режим (для записи)
mount -a # монтирует все остальные разделы, прописанные в /etc/fstab

После этого, заработают все программы, которые необходимы Вам для редактирования файлов, например — ee или vi.

Так же, можно монтировать каждый раздел отдельно, согласно Вашему файлу /etc/fstab:

mount /dev/ad0s1f /usr
mount /dev/ad0s1d /var
mount /dev/ad0s1e /tmp

правим все что нам нужно, выходим командой exit.

Если после команды mount, в single mode, нужный раздел не монтируется, а выдается ошибка?

Возможно, нужно выполнить проверку раздела утилитой FSCK
НО не выполняйте fsck на смонтированной системе в режиме RW!

Ошибки файловой системы — система не грузитсяmountroot>

Следующая ошибка, может возникнуть при неправильном/некорректном редактировании файла /etc/fstab (часто при создании зеркала gmirror бывало забывал подправить fstab), в котором указаны точки монтирования системы:

Mounting root from ufs:/dev/gm0s1a
setrootbyname failed
ffs_mountroot: can't find rootvp
Root mount failed: 6
Manual root filesystem specification:
 : Mount using filesystem 
 e.g. ufs:da0s1a
 ? List valid disk boot devices
 Abort manual input
mountroot>

Просмотрим доступные дисковые устройства:

mountroot> ?
List of GEOM managed disk devices:
mirror/gm0s1f mirror/gm0s1e mirror/gm0s1d mirror/gm0s1c mirror/gm0s1b
mirror/gm0s1a mirror/gm0s1 ad2s1 mirror/gm0 ad0s1 ad2 acd0 ad0 fd0

Если вы укажете правильное расположение корневой файловой системы командой ufs, то система продолжит загружаться:

mountroot> ufs:/dev/mirror/gm0s1a
Mounting root from /dev/mirror/gm0s1a

После входа в систему, исправьте /etc/fstab и перезагрузитесь, после чего снова войдите в систему и удостоверьтесь, что все файловые системы примонтированы правильно:

% df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/mirror/gm0s1a 248M 35M 193M 15% /
devfs 1.0K 1.0K 0B 100% /dev
/dev/mirror/gm0s1e 248M 12K 228M 0% /tmp
/dev/mirror/gm0s1f 7.3G 99M 6.7G 1% /usr
/dev/mirror/gm0s1d 248M 196K 228M 0% /var

Утилита df не покажет состояние раздела подкачки, воспользуемся другой:

% swapinfo
Device 1K-blocks Used Avail Capacity
/dev/mirror/gm0s1b 629544 0 629544 0%

mountroot>

1. смотрим какой нужен диск (в выводе выбираем нужный, для MBR будет, что-то, типа, ad7s1a)

?

2. монтируем

ufs:/dev/ad7s1a

3. подключаем шел

/bin/sh

In single-user mode, you can look at your current fstab file where the mount devices are specified.

# cat /etc/fstab

Then mount your /var, /tmp, /usr just like in your fstab but changing the disk number

# mount -t ufs /dev/ad7s1d /var
# mount -t ufs /dev/ad7s1e /tmp
# mount -t ufs /dev/ad7s1f /usr

You can confirm your mounts by typing either of these two commands:

# df
# mount -p

Make root writable so that you can update fstab

# mount -uw /

Update fstab with the correct disk IDs.

# vi /etc/fstab

Save it and reboot