====== FreeBSD на флешке ======
Есть не плохая статейка по теме: [[http://www.lissyara.su/articles/freebsd/file_system/install_freebsd_on_usb_flash/|Опыт миграции на usb]] на сайте лиссяры.
От себя могу предложить немного упрощенный вариант:
* Предварительная подготовка
* Форматируем флешку
* Копируем минимальное окружение
* Правка системных файлов
* Ставим загрузчик
* Готово
Автор по ходу еще предлагает поставить софт "сразу". Благодаря новой системе пакетов pkg считаю необходимость "в извращениях" не сильно актуальным. Проще "на готовой уже поставить".
Поехали:
===== Предварительная подготовка =====
Автор этим не занимается. Мне так проще ... Помогает "в будущем".
Этот "хак" очень удобен при использовании/разворачивании jail"ов.
С ближайшего FTP, для меня это Украинские, например ftp6.ua.freebsd.org качаем архивы по необходимости (все качать не обязательно):
[[ftp://ftp6.ua.freebsd.org/pub/FreeBSD/releases/i386/10.0-RELEASE]]
**i386** - архитектура
**10.0-RELEASE** - версия, сейчас самая актуальная. Но поддерживаются и более ранние.
==== Файлы ====
**base.txz** - "базовая система". для jail можно больше ни чего не качать. :)
**doc.txz** - "документация". в объяснениях не нуждается :)
**games.txz** - :)
**kernel.txz** - "Ядро". Нам для флешки тоже необходимо.
**ports.txz** - "порты". Необходимо для установки ПО из портов. Может пригодиться. По желанию\необходимости легко потом добавляется.
**src.txz** - Исходные коды. аналогично портам.
Для "маленьких" флешек по началу порты и исходники лучше не копировать ...
Для удобства все необходимые файлы я скачиваю в подкаталог домашнего каталога ''bsd''. По желанию можно добавить "метку" версии системы.
===== Форматируем флешку =====
На данном этапе отступать от автора нет необходимости. Повторю за ним:
Кстати - как и у автора так и здесь - заведомо специально чистить флешку нет необходимости (у автора про это умалчивается или не акцентируется внимание).
**Форматируем флешку**
fdisk -BI /dev/da0
**создаем метки**
bsdlabel -B -w da0s1
**создаем файловую систему и создаем на ней UFS метку**
newfs -U -L RootOnUSB /dev/da0s1a
===== Копируем минимальное окружение =====
Первая часть окончена, флешка подготовлена к развертыванию на ней системы.
**Монтируем ее**
Перед вслед. шагом у автора могут возникнуть при повторении "буква в букву" ошибки. обычно каталога ''/mnt/tmp'' нет и его можно\необходимо создать, например командой ''mkdir /mnt/tmp'' или из/через mc.
mount /dev/ufs/RootOnUSB /mnt/tmp
Далее автор со слов ''идем в /usr/src где мы собирали наш мир с ядром.
устанавливаем мир на флешку'' начинает "компилировать" на флешку мир. Не обязательно ...
**Распаковка**.
Далее мне удобнее работать из mc.
Переходим в каталог c архивами. на 1-й панели, ''/mnt/tmp'' на другой.
Далее по очереди планомерно по мере необходимости захожу в архивы и все содержимое полностью копирую прямо в ''/mnt/tmp''.
Эту "фишку" мне подсказал знакомый Колесник И.К. ака Ivan
===== Правка системных файлов =====
cd /etc
pax -p eme -X -rw . /mnt/tmp/etc/
можно считать что система у нас готова, хотя один момент, нам ведь надо поправить fstab и записать загрузчик
я свой fstab довел до такого состояния
# Device Mountpoint FStype Options Dump Pass#
/dev/ufs/RootOnUSB / ufs rw,noatime 1 1
/proc /proc procfs rw,noauto 0 0
Так как мы будем грузить с метки ufs/RootOnUSB то добавим в loader.conf следующее
echo 'geom_label_load="YES"' >> /boot/loader.conf
Имеется одна тонкость у материнских плат, не все сразу определяют umass, поэтом допишем еще ожидание загрузки для инициализации
echo 'kern.cam.boot_delay=10000' >> /boot/loader.conf
Для уменьшения числа операций записи на USB, автор создает локальную базу данных и запрещает еженедельное обновление.
После ставит ПО.
Я сразу этого не делал.
===== Ставим загрузчик =====
fstab поправили, пакеты по необходимости поставили, осталось сделать флешку загрузочной.
**Отмонтируем ее**
umount /mnt/tmp
**и запишем загрузчик**
boot0cfg -v -B -o noupdate da0
===== Готово =====
В принципе все готово.
Автор еще добавил скрипт "копирования флешки". Я его не пробовал.