FreeBSD перестала загружаться

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Abyrvalg
мл. сержант
Сообщения: 116
Зарегистрирован: 2009-03-04 10:24:44

FreeBSD перестала загружаться

Непрочитанное сообщение Abyrvalg » 2017-10-05 22:56:53

Привет тебе, о великий All!

Выручайте, братцы, случилась какая-то беда... Есть комп с Фрёй. Версию, хоть убейте, не помню. Скорей всего, 10-я. Файловая система старая, zfs не баловался. На компе установлены два жёстких диска: основной (ada0) и второй, который используется для монтирования на другой комп через iSCSI; в нашей истории он роли не играет, поэтому я не буду о нём упоминать. На основном диске две партиции (или как это положено называть): ada0a - вся файловая система, монтируется в корень; ada0b - своп.

По какой-то надобности мне пришлось комп перезагрузить. То ли прога какая-то заглючила, то ли сетевая карта свихнулась (она дешёвая, это бывает...). После перезагрузки начала грузиться система, но до загрузки дело не дошло... Система опознала кучу устройств, всё как положено, а дальше "Trying to mount ada0a..." - и ни фига. Партиция не монтируется, в итоге я через некоторое время получаю ошибку:

Код: Выделить всё

Mounting failed with error 19


и приглашение вот такого вида:

Код: Выделить всё

mountvol>


Когда ввожу знак вопроса, получаю список доступных партиций. Тот диск, который улетает по iSCSI, виден чётко как сам, так и единственная партиция на нём (хотя он вообще в NTFS). А вот основной диск виден только как устройство - ada0, никаких партиций с него в списке не присутствует.

Пытаюсь подмонтировать ada0a:

Код: Выделить всё

ufs:ada0a


получаю ту же ошибку. Пытался ради интереса подмонтировать ada0b или ada0 - ругается на unknown file system.

Беру Live CD Frenzy, загружаюсь. Диск виден - ad4. Партиции тоже видны! ad4a и ad4b. Монтирую ad4a - всё ок, партиция видна, файлы видны...

Сперва я было подумал, что партиция всё-таки сломалась. Восстановил её из бэкапа (да, я их таки делаю). Всю ночь отрабатывал restore rf. Я ещё раз убедился из Frenzy, что партиция монтируется и чувствует себя хорошо. А при попытке загрузки с винчестера - та же ошибка...

Что произошло? Как быть далее? В разбиении диска я не силён и, честно говоря, встал в тупик.
Не оставьте в беде... :cry:

P.S. Комп физически от меня удалён, добраться до него смогу через несколько дней...
Последний раз редактировалось f_andrey 2017-10-06 1:43:02, всего редактировалось 1 раз.
Причина: Автору. пожалуйста, выбирайте соответствующий раздел форума.

guest
проходил мимо

FreeBSD перестала загружаться

Непрочитанное сообщение guest » 2017-10-06 0:32:41

Все это ни о чем.

Не знаю зачем нужна Frenzy, если любой disc1 от FreeBSD или memstick образы
имеют режим LiveCD/USB:

# gpart show ada0

для начала

Аватара пользователя
f_andrey
майор
Сообщения: 2637
Зарегистрирован: 2007-12-26 1:22:58
Откуда: СПб
Контактная информация:

FreeBSD перестала загружаться

Непрочитанное сообщение f_andrey » 2017-10-06 1:50:05

Как выше сказали, никакие френзи не нужны, а нынче из-за своего преклонного возраста ещё и вредны могут быть.
Берёте любой современный образ для USB, грузитесь в лайв режиме, если есть какой то диск большего объёма, то первым же делом, снимаете образ с помощью dd или лучше sysutils/ddrescue и дальше уже надругиваетесь над ним, ни в коем случае ни над самим диском, так как обычно, когда с диском что то не так, то каждое включение для него как последние, а дальше уже к мастеру, за большие диски.

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

Ну и самый оптимальный вариант раскопать букап посвежее, чтоб быстрее с него восстанавливать, возможно на новый диск.
Если ваша тема перенесена, то смотри viewtopic.php?f=1&t=32308

Abyrvalg
мл. сержант
Сообщения: 116
Зарегистрирован: 2009-03-04 10:24:44

FreeBSD перестала загружаться

Непрочитанное сообщение Abyrvalg » 2017-10-07 15:35:20

Загрузился с LiveCD FreeBSD 9.1.
Выдача ls /dev/ad* показывает диски ada0 и ada1, а также партицию ada1s1 (это ntfs). Есть синонимы:
    ad4 -> ada0
    ad10 -> ada1
    ad10s1 -> ada1s1

Пробую посмотреть ситуацию с помощью gpart.

Код: Выделить всё

# gpart show ada0
gpart: No such geom: ada0


А для ada1 он всё как надо выдаёт.

Теперь самое весёлое. Перезагружаюсь во Frenzy - там совсем другая картина: помимо ad4, есть ещё ad4a и ad4b. И, само собой, ad10 и ad10s1, они никуда не девались.

Код: Выделить всё

# gpart show ad4
=>       0  976771055  ad4  BSD  (466G)
         0  968884224    1  freebsd-ufs  (462G)
 968884224    7888943    2  freebsd-swap  (3.8G)


Вот такие чудеса...
Если что, Frenzy запилена на базе Фряхи 8.1-RELEASE #0. Получается такая красота: 8.1 видит партиции, а 9.1 - уже нет.

На проблемной партиции /etc/fstab присутствует, там стоит автомонтирование /dev/ada0a в корень. Всегда работало.

guest
проходил мимо

FreeBSD перестала загружаться

Непрочитанное сообщение guest » 2017-10-07 19:21:34

Abyrvalg писал(а):Загрузился с LiveCD FreeBSD 9.1.
Выдача ls /dev/ad* показывает диски ada0 и ada1, а также партицию ada1s1 (это ntfs). Есть синонимы:
    ad4 -> ada0
    ad10 -> ada1
    ad10s1 -> ada1s1

Пробую посмотреть ситуацию с помощью gpart.

Код: Выделить всё

# gpart show ada0
gpart: No such geom: ada0


А для ada1 он всё как надо выдаёт.

Теперь самое весёлое. Перезагружаюсь во Frenzy - там совсем другая картина: помимо ad4, есть ещё ad4a и ad4b. И, само собой, ad10 и ad10s1, они никуда не девались.

Код: Выделить всё

# gpart show ad4
=>       0  976771055  ad4  BSD  (466G)
         0  968884224    1  freebsd-ufs  (462G)
 968884224    7888943    2  freebsd-swap  (3.8G)



gpart показывает разметку DD (dangerous dedicated) -
это значит что разметка без партиций MBR/GPT

Что в верхнем плохо:
- отсутствие смещения offset 16 (в первых 8k находятся метаданные FreeBSD /boot/boot)

Не знаю что у Вас произошло, подозреваю - пересобирали ядро или потеряли метаданные.

Все дело в том, что у Вас система была установлена давно и далее ее апгрейдили.
В старых версиях, в ядре by default было GEOM_MBR, для соответствующих проверок
geom при загрузке, после перехода на GPT -> GEOM_GPT.

Чтобы точно что-то сказать, нужно узнать какой релиз у Вас установлен.
Теперь о том ЧТО нужно сделать:
- загружаетесь с CD или USB
- выходите в LiveCD

В зависимости от того с чего загрузились, прописываете загрузчик на ada0 или ad4:

# bsdlabel -B ada0
или
# bsdlabel -B ad4

далее смотрите что покажет
# gpart show ada0
или
# gpart show ad4
должен показать:

Код: Выделить всё

# gpart show ad4
=>       0  976771055  ad4  BSD  (466G)
         0  968884224    1  freebsd-ufs  (462G)
 968884224    7888943    2  freebsd-swap  (3.8G)


если не покажет, значит нужно создать схему разметки BSD:
# bsdlabel -e ada0 (или ad4) и отредактировать так как ниже (by default редактор vi)
# bsdlabel -e ada0

Код: Выделить всё

# /dev/ada0:
8 partitions:
#          size     offset    fstype   [fsize bsize bps/cpg]
  a:   968884224         0    4.2BSD     0     0     0
  b:     7888943 968884224      swap
  c:   976771055         0    unused     0     0     # "raw" part, don't edit

после чего 100% и gpart и bsdlabel покажут информацию, ну система должна
загрузиться, в ином случае - Вы где-то хорошо накосячили.

можно прогнать fsck на ada0a или ada4a (все с LiveCD):
# fsck_ffs -y /dev/ada0a
затем смонтировать
# mount /dev/ada0a /mnt
посмотреть или создать loader.conf
# vi /mnt/boot/loader.conf
vfs.root.mountfrom=ufs:/dev/ada0

хотя эту переменную можно задать в самом loader'е (если из меню загрузчика выйти в Loader:
> set vfs.root.mountfrom=ufs:/dev/ada0a
> boot

Как-то так.

Abyrvalg
мл. сержант
Сообщения: 116
Зарегистрирован: 2009-03-04 10:24:44

FreeBSD перестала загружаться

Непрочитанное сообщение Abyrvalg » 2017-10-11 22:16:06

Спасибо за подробную инструкцию. Пока пытаюсь колдовать с bsdlabel. Не выходит каменный цветок... Получаю вот такое:

Код: Выделить всё

partition b: partition extends past end of unit
partition c: partition extends past end of unit
bsdlabel: partition c doesn't cover the whole unit
bsdlabel: An incorrect partition c may cause problems for standart system utilities

хотя всё вроде правильно ввожу.

Отправлено спустя 1 час 37 минут 5 секунд:
Когда некуда деваться, приходится разбираться... В общем, вот как оказалось правильно:

Код: Выделить всё

$ gpart show ada0
=>        0  976771055  ada0  BSD  (466G)
          0  968884224     1  freebsd-ufs  (462G)
  968884224    7886831     2  freebsd-swap  (3.8G)
$ sudo bsdlabel ada0
Пароль:
# /dev/ada0:
8 partitions:
#          size     offset    fstype   [fsize bsize bps/cpg]
  a:  968884224          0    4.2BSD        0     0     0
  b:    7886831  968884224      swap
  c:  976771055          0    unused        0     0     # "raw" part, don't edit

guest
проходил мимо

FreeBSD перестала загружаться

Непрочитанное сообщение guest » 2017-10-11 22:39:56

Abyrvalg писал(а):Спасибо за подробную инструкцию. Пока пытаюсь колдовать с bsdlabel. Не выходит каменный цветок... Получаю вот такое:

Код: Выделить всё

partition b: partition extends past end of unit
partition c: partition extends past end of unit
bsdlabel: partition c doesn't cover the whole unit
bsdlabel: An incorrect partition c may cause problems for standart system utilities

хотя всё вроде правильно ввожу.


могу лишь прокомментировать:
партиция "b" и "c" выходят за границы размера
размер партиции "c" не описывает полностью устройство
некорректные размеры партиции "c" могут вызвать проблемы!

телепатить не умею, можно сделать так,
загрузиться с Frenzy, если с ней не было проблем,
сохранить вывод bsdlabel в файл:

# bsdlabel ada0 > /tmp/mylabel
или ad4 вместо ada0
распечатайте или запишите на листок

затем загрузиться с актуального disc0 от 9.x или 10.x (зависит от того что у вас)
и выполнить (имейте ввиду, эта команда затрет текущую разметку):

# bsdlabel -w -B ada0
получите ada0a с offset 16 от начала и "a" на весь диск
далее нужно отредактировать BSD таблицу:

# bsdlabel -e ada0

Код: Выделить всё

# /dev/ada0:
8 partitions:
#          size     offset    fstype   [fsize bsize bps/cpg]
  a:   968884224         0    4.2BSD     0     0     0
  b:     * *      swap
  c:   ???????????????         0    unused     0     0     # "raw" part, don't edit


чтобы было понятно, bsdlabel -w ada0 - автоматом разметит by default,
далее мы меняем в строчке:

a: xxxxxxxxxxxxxxxx 16 ...
на

Код: Выделить всё

  a:   968884224         0    4.2BSD     0     0     0

на Ваш размер из вывода bsdlabel от Frenzy, создаем "b" для swap

Код: Выделить всё

 b:     * *      swap

* - означает рассчитать автоматически начало и конец в поле size и offset
а "c:" оставляем нетронутым (поэтому в примере ??? - реальный размер который мы
не изменяем), bsdlabel -w автоматически создаст таблицу со всеми
нужными значениями, нам нужно будет только отредактировать и мы
редактируем только "a:" - задаем что с "0" и далее размер который показал bsdlabel
в Frenzy, наша партиция "a" для "root" ляжет в прежние размеры, swap - хрен с ним.

если после выхода из редактирования:
# bsdlabel ada0
покажет все хорошо и без ошибок, советую еще раз выполнить:
# bsdlabel -B ada0
и затем
# gpart show ada0

Теперь о проблеме, она не может возникнуть на пустом месте, ибо
как уже было сказано, разметку делали давно, в древней FreeBSD, да
к тому сделали BSD Dangerous Dedicated и с offset 0 от начала диска,
в то время как offset должен быть 16 (8k для метаданных).

Могу предположить что кто-то, скопировал через dd или какой-то Виндусной
байдой, байт-в-байт с диска одного размера на диск с другим размером,
получили лажу. (с геометрией)
Или неверно восстановили из бекапа, хотя это ну очень сомнительно...

Чтобы точно все сделать, нужны все выводы с Frenzy, чтобы проверить реальную
геометрию диска с тем что показывают данные записанные в таблицу!

# gpart show ada0 (или ad4)
# fdisk ad4
# fdisk -s ad4
# fdisk -p ad4
# camcontrol identify ad4
# bsdlabel ad4

и аналогичное если загрузиться, ну например с disc0 в LiveCD от 10.4
вместо ad4 -> ada0

Если backup сделан через dump, то проще и вовсе - выполнить заново
разметку через gpart и восстановить через restore.

Короче, у Вас одни неизвестные:
- кто делал
- как делал
- почему схема BSD DD
- почему Frenzy показывает, а свежие FreeBSD - нет (никогда такого не наблюдал)
- как сделан backup (чем)


Вернуться в «FreeBSD/UNIX для начинающих»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя