Вопрос или проблема
Я пытаюсь установить FreeBSD 14
с использованием ZFS
, но не хочу использовать весь диск, поэтому выбираю опцию Shell
. Я следовал этим инструкциям.
A. Загрузите установочный DVD или USB-накопитель FreeBSD
B. Выберите Установить и ответьте на вопросы, такие как раскладка клавиатуры и имя хоста
C. Когда вам предложат разделить диск:
i. Если вы не хотите использовать весь диск, перейдите к разделу Создание раздела
ii. выберите опцию "shell"
iii. Определите, какой диск вы хотите использовать: camcontrol devlist
iv. Создайте новую таблицу разделов: gpart destroy ada0
Проблема возникает на шаге C.4. Я доходил до раздела Разделение
во время установки и выбирал Shell
. Я использую camcontrol devlist
, чтобы увидеть свои устройства, и затем выполняю gpart destroy nda0
, что возвращает ошибку Устройство занято
.
# gpart destroy nda0
gpart: Устройство занято
Я попытался запустить команду gpart destroy nda0
без выполнения команды camcontrol devlist
, на случай, если она что-то сделает, и также пробовал перезагрузить систему и запустить установщик заново, но без успеха.
Означает ли это, что устройство смонтировано? Это кажется мне немного странным и не похоже на правду, когда я проверяю df
:
df
Файловая система Смонтировано на
/dev/ufs/FreeBSD_Install /
devfs /dev
tmpfs /tmp
tmpfs /var
Следующая догадка — это проблема с драйверами для диска? При поиске я увидел это, что упоминает добавление следующего в loader.conf
:
nvme_load="YES"
nvd_load="YES"
Но я не уверен, как это сделать, когда запускаю с USB
. Есть ли способ загрузить необходимые драйверы, как только я войду в Shell
?
Я нашел проблему. Из руководства gpart:
Удаление разделов и уничтожение схемы разделов
Если при попытке уничтожить таблицу разделов появляется ошибка Устройство занято,
помните, что все разделы должны быть удалены сначала с помощью действия удаления.
В этом примере da0 имеет три раздела:
/sbin/gpart delete -i 3 da0
/sbin/gpart delete -i 2 da0
/sbin/gpart delete -i 1 da0
/sbin/gpart destroy da0
Вместо удаления каждого раздела и затем уничтожения схемы разделов,
можно использовать опцию -F с destroy для удаления всех разделов перед уничтожением схемы.
Это эквивалентно предыдущему примеру:
/sbin/gpart destroy -F da0
Я заблуждался из-за сообщения. Ранее я всегда считал, что Устройство занято
означает, что устройство смонтировано или используется. Даже поиск привел меня по этому пути. Это была эта старая ошибка, которая направила меня в правильном направлении.
Если это нужно удалить, не стесняйтесь, но я выкладываю решение здесь, на случай если оно поможет кому-то еще.
Ответ или решение
Для установки FreeBSD 14 с использованием ZFS и ручного разделения диска через оболочку, следуйте указанным шагам. Общая проблема, описанная в вопросе, заключается в том, что команда gpart destroy nda0
возвращает ошибку "Device busy". Эта ошибка может быть неожиданной, если вы не знаете, что устройства, чтобы выполнить gpart destroy
, необходимо сначала удалить все разделы на диске.
Вот полный алгоритм действий:
-
Загрузка установочного носителя:
- Загрузите установочный DVD или USB-накопитель с FreeBSD.
-
Начало установки:
- Выберите вариант установки и ответьте на вопросы, такие как раскладка клавиатуры и имя хоста.
-
Выбор оболочки для ручного разделения:
- Когда будет предложено выполнить разделение диска, выберите опцию "Shell".
-
Определение устройства:
- Используйте команду
camcontrol devlist
, чтобы увидеть доступные устройства и определить, какое из них вы хотите использовать (например,ada0
илиnda0
).
- Используйте команду
-
Устранение ошибки "Device busy":
- Вы столкнулись с ошибкой "Device busy" при выполнении
gpart destroy nda0
. Эта ошибка указывает на то, что существует как минимум один раздел на диске, и для устранения её необходимо сначала удалить все разделы.
- Вы столкнулись с ошибкой "Device busy" при выполнении
Примеры команд:
- Для удаления всех разделов выполните:
gpart delete -i 1 nda0 gpart delete -i 2 nda0 gpart delete -i 3 nda0
- Либо используйте опцию
-F
, чтобы удалить все разделы и сразу уничтожить схему разделов:gpart destroy -F nda0
-
Создание новой таблицы разделов:
- После успешного выполнения команды
gpart destroy
, вы можете создать новую таблицу разделов для ZFS:gpart create -s gpt nda0
- После успешного выполнения команды
-
Создание ZFS и установка:
- После создания таблицы разделов, продолжайте следовать инструкции для настройки ZFS, создавайте пул и файловую систему, основываясь на документации.
Важно отметить, что ваша ошибка была связана с непониманием сообщения "Device busy". Это сообщение не всегда означает, что устройство смонтировано; возможно, оно просто имеет существующие разделы. Использование команды gpart destroy -F
решает эту проблему, так как она удаляет все разделы одновременно.
Если вы хотите убедиться, что драйверы для NVMe загружены, вы можете попытаться добавить следующие строки в файл конфигурации загрузчика, но это обычно не требуется, если вы используете стандартные установочные средства FreeBSD:
nvme_load="YES"
nvd_load="YES"
Так как вы работаете из живой системы, вам не нужно будет указывать эти строки.
Надеюсь, этот ответ поможет вам успешно завершить установку FreeBSD и разрешить возникшие проблемы.