Как сделать загрузочную USB флешку с FreeBSD на Mac OS. Freebsd на флешку


Установка FreeBSD на флешку для seedbox машины / Хабр

На многие домашние seedbox'ы довольно часто ставятся старые жесткие диски, из принципа «не жалко». Важных данных туда все равно не пишется, и когда они помирают, ничего страшного не происходит, за исключением проблем с перестановкой ОС. Для минимизирования риска смерти ОС, можно вынести ее на отдельный физический носитель. Один из вариантов — на маленькую флешку. Речь дальше пойдет об установке и настройке FreeBSD (7.0-8.0) на флешке.
Размер флешки
Исходя из моих экспериментов, в 200 мегабайт (на 256 меговую флешку) легко влезает вполне рабочий роутер с dhcp/dns/vpn сервером. При этом из ядра выкидываются все ненужные драйвера, а также опции отладки и профилирования, а из мира убираются manы. Конечно, исходники (/usr/src) и порты (/usr/ports) туда не поместятся, но их можно без особых проблем монтировать и с другого носителя.

Под роутер с функциями seedbox лучше иметь флешку побольше, поскольку там потребуется и apache, и perl, и php. Для данного примера возьмем глючную флешку на 4 гигабайта :).

Проблемы с надежностью
Поскольку флешки очень не любят перезапись секторов, гайдбук рекомендует монтировать корень только на чтение, а все разделы, требующие доступа на запись, выносить в память. Таким образом, /var будет смонтирован как диск в оперативной памяти и каждая перезагрузка будет удалять все его содержимое.
Подготовка разделов
Установку удобнее всего делать из под FreeBSD (я делал с виртуалки), в которой уже собрано нужное вам ядро и мир.

Итак, вставляем флешку, смотрим как она определилась в dmesg (далее da0). Для начала флешку надо отформатировать. Создаем flash_disk.proto:

# slice type start length # создаем два слайса p 1 0xa5 63 1429722 p 3 0xa5 2040255 6072570 # делаем первый активным a 1

Поскольку флешка у меня глючная (попытка чтения данных из участка между 700 и 1000 мегабайтами вызывает отваливание контроллера), то пространство у меня дробится на два слайса. С нормальной флешкой можно создавать один кусок на всю флешку.

Форматируем:

fdisk -f flash_disk.proto -i da0

Создаем загрузчик:

# создаем MBR boot0cfg -B da0 # по-умолчанию грузимся с первого slice boot0cfg -s 1 da0 # запрещаем загрузчику перезаписывать себя boot0cfg -o noupdate da0

Теперь разметим наш слайс. Создаем flash_labels.proto:

# size offset fstype [fsize bsize bps/cpg] a: 1429722 0 4.2BSD 0 0 0 c: * 0 unused 0 0 # "raw" part, don't edit

Размечаем диск и создаем файловую систему:

# Размечаем в соответствии с созданным файлом bsdlabel -R da0s1 flash_labels.proto # Создаем файловую систему newfs -U da0s1a

Монтируем наш слайс

mount /dev/da0s1 /mnt/flash
Установка системы и портов
Чтобы каждый раз при make install не указывать путь, временно выставим DESTDIR флаг в make.conf на рабочей системе:DESTDIR=/mnt/flash

Теперь устанавливаем на флешку ядро, мир, системные конфиги и скрипты (etc):

cd /usr/src make installkernel make installworld cd /usr/src/etc make distrib-dirs make distribution

У меня в make.conf, помимо прочего, выключена сборка info и man (NO_INFO=YES NO_MAN=YES), поэтому, для нормальной установки портов на флешку, потребуется вручную поставить texinfo, как описано здесь.

cd /usr/src/gnu/usr.bin/texinfo make install

После этого правим fstab на флешке:

# Device Mountpoint FStype Options Dump Pass# /dev/da0s1a / ufs ro 1 1 md /tmp mfs rw,-s24M,noatime 0 0 md /var mfs rw,-s128M,noatime` 0 0

Поскольку /var будет смонтирован в памяти, необходимо перенести /var/db на флешку, чтобы данные об установленных портах не терялись между перезапусками. Для этого создаем ссылку:

mkdir /mnt/flash/etc/pkg ln -s ../../etc/pkg /mnt/flash/var/db/pkg

Теперь можно настраивать систему на флешке, править конфиги и ставить порты с рабочей системы (необходимо только в resolv.conf на флешке прописать dns-сервера). Например:

cd /usr/ports/net/isc-dhcp30-server make make install

Флаг DESTDIR в make.conf укажет make install что ставить порт нужно на флешку.

Проблемы с dns-сервером named
По-умолчанию named запускается системой в песочнице (chroot'ом) в каталоге /var/named. Вынести этот каталог на флешку нельзя, поскольку named должен иметь возможность писать в свой маленький /var. Вариант, который использовал я, заключается в добавлении в rc.local копирования конфига named каждый раз при старте системы:# копируем конфиг named mkdir -p /var/named/etc cp -Rp /usr/local/etc/namedb /var/named/etc /etc/rc.d/named start

На мой взгляд, это несколько коряво и я с удовольствием выслушал бы другие варианты решения.

Загрузка установленной системы
Подключаем флешку к роутеру и выставляем в биосе загрузку с нее. На некоторых материнках возможен баг, когда флешка не успевает определиться к тому моменту, когда загрузчик начинает монтировать корень. Хак для данной проблемы описан в конце этой статьи на Хабре. После загрузки системы можно продолжить ее настройку. Для этого достаточно перемонтировать корень на запись:mount -uw /

После внесения нужных изменений (установки портов/правки конфигов/добавления пользователей и т.д.) нужно вернуть корень в доступ только на чтение:

mount -ur /
Полезные ссылки

UPDATE: Как отметили в комментариях, нет смысла вручную монтировать /var и /tmp. В случае, если при загрузке /var и /tmp доступны только на чтение, будет автоматически вызван /etc/rc.initdiskless, который, по-умолчанию, смонтирует эти разделы в оперативную память. Поэтому из fstab можно убрать строчки про /var и /tmp, а в /etc/rc.conf добавить параметры для скрипта rc.initdiskless:

tmpmfs=true tmpsize=24M varmfs=true varsize=128M

habr.com

Запись FreeBSD memstick.img на USB флешку под MS Windows 7

Всем привет!

Понадобилось установить FreeBSD на новый сервер. Раньше качал ISO образ, записывал на диск и с него устанавливал. В этот раз решил поставить с флешки ибо:1) Не было диска под рукой.2) Пора изучать что-то новое3) С флешки должно быть побыстрее.

Скачал соответствующий образ для установки с флешки FreeBSD-9.0-RELEASE-amd64-memstick.imgНачал выяснять, чем писать под MS Windows 7 (64bit) на флешку. Погуглил, выяснилось, что тем, чем и под Unix — утилитой dd. Качаем ее с сайта:

dd под windows.

Скачал файл dd-0.6beta3.zip, распаковал в D:\Distr\dd\dd-0.6beta3

Запускаю cmd от имени администратора.Вставил новую флешку, она определилась как диск G:

Пытаюсь записать образ на флешку командойD:\Distr\dd\dd-0.6beta3>dd if=FreeBSD-9.0-RELEASE-amd64-memstick.img od=g: --progress

Получаю ошибку 5: Доступ запрещен (Access Denied)

Поиск в интернете выдал следующее рещение:Необходимио воспользоваться командой работы с дисками diskpart

  • 1) diskpart
  • 2) Набираем команду «list disk»
  • 3) Из списка дисков находим свой, запоминаем номер
  • 4) Выбираем диск командой select disk №диска, в моем примере select disk 2
  • 5) Набираем команду «clean»

Теперь выходим из diskpart командой «exit».Повторяем командуD:\Distr\dd\dd-0.6beta3>dd if=FreeBSD-9.0-RELEASE-amd64-memstick.img od=g: --progress

Процесс пошел:

Процесс завершился:

Вытаскиваем флешку, вставляем в сервер, в биосе выбираем загрузку с флешки и работаем.

blog.volobuev.su

установка FreeBSD 7.0, 7.1, 7.2, 8.0 с flash drive (флешки)

#Так же способ установки виндов с флешки#http://clsv.livejournal.com/12234.html

Всем привет.Дома валялся компьютер без винта CPU AMD Athlon 64 3200+, MB ASUS AM2(хрен знает какая, лень искать марку), VGA Asus Geforce 6600GT, RAM 1024mb, 3 сетевухи, одна из них встроенная, нашелся винт 250gb WD. Привода не имеется, а операционку какую нибудь вкорячить надо. Ставил Debian используя tftp, не очень она меня порадовала, старый софт и прочие баги при работе с сетью(не люблю пингвинов). Не долго думая поставил PC-BSD 7.1-BETA1 Released(используя 2gb flashdrive и PCBSD7.1-BETA1-x86-USB.img), не знаю в чем была трабла но работала просто ужасно, все томрозило и прочая ересь, не стал разбираться...решил поставить чистый и красивый FreeBSD Release 7.1 AMD64.(установка i386 и прочих ничем не отличается) В наличие имеем все ту же 2gb flash drive + 2cd образа скаченных с официального ресурса (7.1-RELEASE-amd64-bootonly.iso && 7.1-RELEASE-amd64-disc1.iso) если интернет медленный и грустный то хватит одного образа 7.1-RELEASE-amd64-disc1.iso.

Начинаем подготовку флешки из WINDOWS. Если вы используете другую ОС то думаю вы разберетесь как установить на flashdrive Grub4Dos, если не разберетесь то пишите попробую разъяснить что куда.Спасибо сайту http://greenflash.su/, очень помог.Можете там зарегистрироваться и прочесть статью Установка GRUB4DOS, ну а если лень регистрироваться то читаем и качаем все здесь.1.Перед началом операции флешку рекомендуется отформатировать программой HPUSBFW(369Кб)(ссылка 1,ссылка 2), предварительно сохранив с неё всё необходимое (если есть).P.S. Я форматировал в FAT32

2. Скачиваем этот файл:GRUB4DOS_GUI(336Кб)(ссылка 1,ссылка 2)

3. Запускаем его. После запуска выбираем (кнопкой Обзор) цель, то есть то устройство на которое будем устанавливать Загрузчик.Это либо Жёсткий диск, либо Флешка.Если собираемся ставить на Флешку, значит выбираем корень флешки Х:\(Х - Буква вашей флешки)Если собираемся ставить на Жёсткий диск, значит выбираем корень диска C:\ (или на какой вы хотите, главное чтоб был Активным)

4. Нажимаем кнопку "Извлечь". После этого программа Grub4Dos Installer 1.1 установится к вам в C:\Program Files и выбросит ярлык на Рабочий Стол. Одновременно с этим на выбранный вами носитель распакуются файлы загрузчика (Папка - Boot; Файлы - grldr, MEMDISK, MENU.LST) и откроется окно программы Grub4Dos Installer 1.1.

5. В окне программы Grub4Dos Installer 1.1, в самой верхней строчке (выпадающем меню), выбираем цель для установки загрузчика(HDD или Флешка) Больше ничего выбирать не надо.

7.Если всё успешно, то вы увидите окно консоли с предложением нажать Enter, Нажимаем Enter.

Добрые люди даж на видео засняли что как делать)

З.Ы.:На сайте еще много полезных статей(не реклама)

Поехали далее....Если мы все проделали правильно, то при загрузке наша флешка может выдать нечто подобное как:

Осталась маленькая часть всей работы....####################2 образа####################Если у нас есть 2 образа FreeBSD: 7.1-RELEASE-amd64-bootonly.iso И 7.1-RELEASE-amd64-disc1.iso

1. На флешке создаем каталог freebsd и копируем туда 7.1-RELEASE-amd64-bootonly.iso с переименованием в bootonly.iso

2. Из образа 7.1-RELEASE-amd64-disc1.iso в корень флешки копируем директории "7.1-RELEASE" и "packages"(если хорошо разбираетесь в дистрибутиве можете порезать то что ненужно)

3. Завершающий этап. Открываем файл MENU.LST он находится в корне флешки и добавляем туда строки:

title FreeBSD 7.1 install map /freebsd/bootonly.iso (hd32) map --hook chainloader (hd32) boot

сохраняем.

####################1 образ####################Если у нас есть 1 образ FreeBSD: 7.1-RELEASE-amd64-disc1.iso

1. Открываем образ 7.1-RELEASE-amd64-disc1.iso ISO редактором.

2. Вынимаем оттуда папки "7.1-RELEASE" и "packages" и сохраняем их в корень нашей флешки и сохраняем ISO образ без папок("7.1-RELEASE" и "packages") с именем bootonly.iso

3.На флешке создаем каталог freebsd и копируем туда наш образ bootonly.iso

4. Завершающий этап. Открываем файл MENU.LST он находится в корне флешки и добавляем туда строки:

title FreeBSD 7.1 install map /freebsd/bootonly.iso (hd32) map --hook chainloader (hd32) boot

сохраняем.

Все флешка полностью готова для установки с нее FreeBSD 7.1 Release.

1.При загрузке компьютера вызываем boot menu(это где указываем откуда грузиться)2.Выбираем там нашу флешку, если все верно и компьютер поддерживает загрузку то мы увидим Grub4Dos(вроде скелетон какой то на заднем фоне)3.В окне выбираем пункт "FreeBSD 7.1 install"4.Eсли вы сделали все правильно то начнется загрузка установщика freebsd(sysinstall). 5.Проходим все стандартные пункты http://www.lissyara.su/?id=10436.В финале выбираем пункт где выбирается путь установки

7.Выбираем DOS(Флешка у нас формата Fat32 и в корне ее лежат все необходимые файлы для установки FreeBSD 7.1

8.Откидываемся на спинку стула и ждем окончания установки.

Все вопросы сюда или в аську: 173320Всем спасибо всем удачи.

UPD 10.04.10Столкнулся вчера с ошибками.1. При выборе Install FreeBSD образ отказывался грузиться и выдавал следующую ошибку Error 60: File for drive emulation must be in one contiguous disk areaВся проблема в том, что образ записался в разные сектора и он не считается непрерывным(не фрагментированным).Должны были помочь данные утилиты contig и wincontig но не помогли)2. Ошибка когда я все таки запустил sysinstall из за природы материнской платы, флешка не определилась сразу, поэтому привыборе источника установки возникли проблемы, нажава ctrl+alt+delete я перезапустил устнаовку выбрав Restart, флека определилась, но в конечном счете при копирование файлов, установка падала)UPD 16.04.10Решение проблемы с невиденьем флешки в sysinstallsysinstall - options Re-scan Devices <*> Продолжаем спокойно установку)

clsv.livejournal.com

Установка FreeBSD на флешку для seedbox машины | xnix

Попалась на харабре интересная статья про установку FreeBSD на флешку.

FreeBSD01.jpg

 

На многие домашние seedbox'ы (имеется в виду маленький пограничный роутер для Интернета) довольно часто ставятся старые жесткие диски, из принципа «не жалко». Важных данных туда все равно не пишется, и когда они помирают, ничего страшного не происходит, за исключением проблем с перестановкой ОС.

Для минимизирования риска смерти ОС, можно вынести ее на отдельный физический носитель. Один из вариантов — на маленькую флешку. Речь дальше пойдет об установке и настройке FreeBSD (7.0-8.0) на флешке.

[Размер флешки]

Исходя из моих экспериментов, в 200 мегабайт (на 256 меговую флешку) легко влезает вполне рабочий роутер с dhcp/dns/vpn сервером. При этом из ядра выкидываются все ненужные драйвера, а также опции отладки и профилирования, а из мира убираются manы. Конечно, исходники (/usr/src) и порты (/usr/ports) туда не поместятся, но их можно без особых проблем монтировать и с другого носителя.

Под роутер с функциями seedbox лучше иметь флешку побольше, поскольку там потребуется и apache, и perl, и php. Для данного примера возьмем глючную флешку на 4 гигабайта :).

[Проблемы с надежностью]

Поскольку флешки очень не любят перезапись секторов, гайдбук рекомендует монтировать корень только на чтение, а все разделы, требующие доступа на запись, выносить в память. Таким образом, /var будет смонтирован как диск в оперативной памяти и каждая перезагрузка будет удалять все его содержимое.

[Подготовка разделов]

 

Установку удобнее всего делать из под FreeBSD (я делал с виртуалки), в которой уже собрано нужное вам ядро и мир.

Итак, вставляем флешку, смотрим как она определилась в dmesg (далее da0). Для начала флешку надо отформатировать. Создаем flash_disk.proto:

# slice type start length # создаем два слайса p 1 0xa5 63 1429722 p 3 0xa5 2040255 6072570 # делаем первый активным a 1 Поскольку флешка у меня глючная (попытка чтения данных из участка между 700 и 1000 мегабайтами вызывает отваливание контроллера), то пространство у меня дробится на два слайса. С нормальной флешкой можно создавать один кусок на всю флешку.

Форматируем:

fdisk -f flash_disk.proto -i da0 Создаем загрузчик: # создаем MBR boot0cfg -B da0 # по-умолчанию грузимся с первого slice boot0cfg -s 1 da0 # запрещаем загрузчику перезаписывать себя boot0cfg -o noupdate da0 Теперь разметим наш слайс. Создаем flash_labels.proto: # size offset fstype [fsize bsize bps/cpg] a: 1429722 0 4.2BSD 0 0 0 c: * 0 unused 0 0 # "raw" part, don't edit Размечаем диск и создаем файловую систему: # Размечаем в соответствии с созданным файлом bsdlabel -R da0s1 flash_labels.proto # Создаем файловую систему newfs -U da0s1a Монтируем наш слайс mount /dev/da0s1 /mnt/flash [Установка системы и портов] Чтобы каждый раз при make install не указывать путь, временно выставим DESTDIR флаг в make.conf на рабочей системе: DESTDIR=/mnt/flash Теперь устанавливаем на флешку ядро, мир, системные конфиги и скрипты (etc): cd /usr/src make installkernel make installworld cd /usr/src/etc make distrib-dirs make distribution У меня в make.conf, помимо прочего, выключена сборка info и man (NO_INFO=YES NO_MAN=YES), поэтому, для нормальной установки портов на флешку, потребуется вручную поставить texinfo, как описано здесь. cd /usr/src/gnu/usr.bin/texinfo make install После этого правим fstab на флешке: # Device Mountpoint FStype Options Dump Pass# /dev/da0s1a / ufs ro 1 1 md /tmp mfs rw,-s24M,noatime 0 0 md /var mfs rw,-s128M,noatime` 0 0 Поскольку /var будет смонтирован в памяти, необходимо перенести /var/db на флешку, чтобы данные об установленных портах не терялись между перезапусками. Для этого создаем ссылку: mkdir /mnt/flash/etc/pkg ln -s ../../etc/pkg /mnt/flash/var/db/pkg Теперь можно настраивать систему на флешке, править конфиги и ставить порты с рабочей системы (необходимо только в resolv.conf на флешке прописать dns-сервера). Например: cd /usr/ports/net/isc-dhcp30-server make make install Флаг DESTDIR в make.conf укажет make install что ставить порт нужно на флешку.

[Проблемы с dns-сервером named]

По-умолчанию named запускается системой в песочнице (chroot'ом) в каталоге /var/named. Вынести этот каталог на флешку нельзя, поскольку named должен иметь возможность писать в свой маленький /var. Вариант, который использовал я, заключается в добавлении в rc.local копирования конфига named каждый раз при старте системы: # копируем конфиг named mkdir -p /var/named/etc cp -Rp /usr/local/etc/namedb /var/named/etc /etc/rc.d/named start На мой взгляд, это несколько коряво и я с удовольствием выслушал бы другие варианты решения.

[Загрузка установленной системы]

Подключаем флешку к роутеру и выставляем в биосе загрузку с нее. На некоторых материнках возможен баг, когда флешка не успевает определиться к тому моменту, когда загрузчик начинает монтировать корень. Хак для данной проблемы описан в конце этой статьи на Хабре. После загрузки системы можно продолжить ее настройку. Для этого достаточно перемонтировать корень на запись: mount -uw /

После внесения нужных изменений (установки портов/правки конфигов/добавления пользователей и т.д.) нужно вернуть корень в доступ только на чтение:

mount -ur /

 

UPDATE: Как отметили в комментариях, нет смысла вручную монтировать /var и /tmp. В случае, если при загрузке /var и /tmp доступны только на чтение, будет автоматически вызван /etc/rc.initdiskless, который, по-умолчанию, смонтирует эти разделы в оперативную память. Поэтому из fstab можно убрать строчки про /var и /tmp, а в /etc/rc.conf добавить параметры для скрипта rc.initdiskless:

tmpmfs=true tmpsize=24M varmfs=true varsize=128M

[Ссылки]

microsin.net

Как сделать загрузочную USB флешку с FreeBSD на Mac OS

Сегодня будет экзотика - расскажу как сделать загрузочную USB флешку с FreeBSD на Mac OS X. Да нормальная тема, учитывая что понадобилось организовать OpenVPN сервер и хочется стабильности - один раз настроил и забыл, так как DSR-500N о котором писал ранее, проявил себя не с лучшей стороны, не пережив аварийного отключения электричества.

Железка, на которой будет крутиться данный сервер не менее экзотическая - Lenovo IdeaCentre Q190, вот она:

Для начала качаем дистрибутив с www.freebsd.org. На данный момент имеем последний FreeBSD 10.1-RELEASE, выбираем файл в имени которого присутствует memstick (для платформы i386 это будет FreeBSD-10.1-RELEASE-i386-memstick.img).

Теперь смотрим как наша флешка называется в системе. Запускаем «Дисковую утилиту», и выбрав флешку, кликаем по кнопке отображения дополнительной информации (выделена на картинке).

Поле «Идентификатор диска» содержит название флешки (в данном случае disk2), соответственно путь до флешки будет /dev/disk2.

Осталось записать дистрибутив на флешку, запускаем терминал и выполняем следующие команды:

sudo diskutil umountDisk /dev/disk2 sudo dd if=Desktop/FreeBSD-10.1-RELEASE-i386-memstick.img of=/dev/disk2 bs=10240 conv=sync

Первой командой мы размонтируем флешку из системы, иначе записать не получится. Вторая команда осуществляет саму запись. Команда dd должна быть знакома юниксоидам. Обратите внимание, что обе команды выполняются с правами суперпользователя, соответственно у вас запросят пароль.

Остается дождаться окончания процесса, во время которого ничего на экране не отображается, а об успешном завершении скажут подобные строки:

64148+0 records in 64148+0 records out 656875520 bytes transferred in 404.228724 secs (1625010 bytes/sec)

Если считаете статью полезной,не ленитесь ставить лайки и делиться с друзьями.

mdex-nn.ru

записки юного БСДешника: FreeBSD на флешке

Сделал себе наконец спасательную флешку, пока в стадии эксперимента, просто проверить возможность создания, но думаю надо оптимизировать процесс. Наверное у многих возникал вопрос а почему вокруг так сного различных лайвСД с лунуксами, и многие из них можно установить на флешку, и вроде бы почти не видно аналогов с FreeBSD, но все наверное довольно просто, никаких особых ухищрений для установки системы на флеш-носитель и не требуется, с лайвСД вроде ситуация не намного хуже, да есть ряд специализированных дистрибьютивов например frenzy.Итак купил флешку, благо стоят они сейчас не много :) и практически без проблем установил на неё систему, по вот этой инструкции, перепечатывать и переводить пожалуй не буду ибо там вроде все и так понятно, а то что имеет значение просто приведено списком команд и перевода не требует, сделаю лиш ряд замечаний, с тем что стоит выбрать именно i386 в принципе согласен, ибо оно может иметь более широкое применение, размер получаюшейся системы, без дополнительных пакетов и без оптимизаций около 200MB, в принципе после установки получается обычная система, хотя для интенсивного использования её пожалуй следует оптимизировать, сам пока не занимался но есть план почитать инструкции по скретч системе (по русски) и наверное посмотреть новую frenzy, ибо там были какие то интересные идеи. Да по поводу разметки диска в инструкции пункты 6-10, наверное лучше проделать из sysinstall ну по крайней мере мне было так проше, хотя из интереса разобрался как можно сделать конфиг для fdisk, у меня получился вот такой> cat fdisk.conf andrey:~g c487 h355 s63p 1 165 63 7614747p 2 6 7614810 208845a 1Структура довольно простая, первая строка описывает геометрию, и сейчас стандартна, дальше идет описание разделов, в моем случае первый FreeBSD (№1, идентификатор ФС 165, начальный блок 63, размер в блоках 7614747), и второй msdos (№2, идентификатор ФС 6, начальный блок 7614810, размер в блоках 208845), и последняя строка номер загрузочного раздела, для интересующихся можно рекомендовать man fdisk, все как всегда толково и с примерами, вот только считать в блоках очень не удобно, сознаюсь значения содрал с уже сконфигурированных sysinstall разделов :)Флешка размечается в таком случае элементарно fdisk -f fdisk.conf /dev/da0Ну вот вроде пока и все.

f-andrey.blogspot.com

Hilik » FreeBSD. Маршрутизатор на флешке.

Жесткие диски — самое больное место современных серверов, не зря большинство аппаратных маршрутизаторов используют в качестве накопителей флешки. Флеш диск имеет меньше ресурсов перезаписи, но он не имеет движущихся частей, поэтому логичным является перенос роутера на флешку, запись нужной конфигурации и перевод диска в состояние read-only. Кроме всего прочего, я держу флешки в зеркале, с помощью gmirror и выход из строя одного диска, не приводит к прерыванию сервиса.В принципе для установки достаточно флешки на 512 Мб, но большого смысла в такой экономии нет, можно конечно ставить CardRider и использовать SD карты, но у меня эта технология не прижилась. Использую обычные USB карты, монтирую их в сервере вместо дисков, используя внешние USB порты со старых системных блоков. Получается достаточно удобно, открываешь отсек меняешь флешку и все, продолжается работа.Для того, что бы создать такой роутер нужн прежде всего компьютер с FreeBSD, а дальше вставляем в него флешку и начинаем с того, что создадим файловую систему(у меня флешка определилась как da0):

fdisk -BI /dev/da0 bsdlabel -B -w /dev/da0s1 newfs -U /dev/da0s1a

fdisk -BI /dev/da0 bsdlabel -B -w /dev/da0s1 newfs -U /dev/da0s1a

Файловую систему мы создали.Можем примонтировать в /mnt, сюда мы будем инсталировать мир и ядро.Монтируем:

В принципе смонтировать флешку можно и позже, потому что сейчас нужно в первую очередь собрать мир, а для этого нужно создать /etc/src.conf, в котором отключить все лишнее, что не обязательно иметь на флешке.У меня он выглядит так:

WITHOUT_ASSERT_DEBUG=yes WITHOUT_ATM=yes WITHOUT_AUTHPF=yes WITHOUT_BLUETOOTH=yes WITHOUT_CVS=yes WITHOUT_DICT=yes WITHOUT_EXAMPLES=yes WITHOUT_GAMES=yes WITHOUT_HTML=yes WITHOUT_I4B=yes WITHOUT_INET6=yes WITHOUT_IPFILTER=yes WITHOUT_IPX=yes WITHOUT_KERBEROS=yes WITHOUT_LPR=yes WITHOUT_NCP=yes WITHOUT_NIS=yes WITHOUT_SHAREDOCS=yes WITHOUT_WPA_SUPPLICANT_EAPOL=yes

WITHOUT_ASSERT_DEBUG=yes WITHOUT_ATM=yes WITHOUT_AUTHPF=yes WITHOUT_BLUETOOTH=yes WITHOUT_CVS=yes WITHOUT_DICT=yes WITHOUT_EXAMPLES=yes WITHOUT_GAMES=yes WITHOUT_HTML=yes WITHOUT_I4B=yes WITHOUT_INET6=yes WITHOUT_IPFILTER=yes WITHOUT_IPX=yes WITHOUT_KERBEROS=yes WITHOUT_LPR=yes WITHOUT_NCP=yes WITHOUT_NIS=yes WITHOUT_SHAREDOCS=yes WITHOUT_WPA_SUPPLICANT_EAPOL=yes

Я уверен можно еще много чего убрать из сборки, но в принципе достаточно и этого.И теперь можно, почистить старую сборку мира:

и собрать новый мир для флешки:

и установить на флешку(она у нас примонтирована в /mnt):

make installworld DESTDIR=/mnt

make installworld DESTDIR=/mnt

Затем собрать и установить ядро:

make buildkernel KERNCONF=flashka make installkernel KERNCONF=flashka DESTDIR=/mnt

make buildkernel KERNCONF=flashka make installkernel KERNCONF=flashka DESTDIR=/mnt

Конфиг ядра мало чем отличается от обычного, добавлены нужные опции:

options GEOM_MIRROR options NETGRAPH options NETGRAPH_NETFLOW options IPFIREWALL options IPFIREWALL_VERBOSE options IPFIREWALL_VERBOSE_LIMIT=100 options IPFIREWALL_DEFAULT_TO_ACCEPT options IPFIREWALL_FORWARD options ZERO_COPY_SOCKETS options HZ=2000

options GEOM_MIRROR options NETGRAPH options NETGRAPH_NETFLOW options IPFIREWALL options IPFIREWALL_VERBOSE options IPFIREWALL_VERBOSE_LIMIT=100 options IPFIREWALL_DEFAULT_TO_ACCEPT options IPFIREWALL_FORWARD options ZERO_COPY_SOCKETS options HZ=2000

Ну и убрать максимум лишнего из ядра.

После того, как поставили ядро нужно установить файлы дистрибутива:

make distribution DESTDIR=/mnt

make distribution DESTDIR=/mnt

и теперь осталось создать недостающие файлы fstab и rc.conf, содержимое fstab:

/dev/da0s1a / ufs ro 1 1 md /tmp mfs rw,-s16M,nosuid 0 0

/dev/da0s1a / ufs ro 1 1 md /tmp mfs rw,-s16M,nosuid 0 0

При этом, система при загрузке, определив, что / смонтирован в ro, создаст /var в памяти.содержимое rc.conf стандартное:

hostname="flashka.hilik.org.ua" ifconfig_em0="inet 89.252.34.110/24" defaultrouter="89.252.34.107" gateway_enable="YES" sshd_enable="YES"

hostname="flashka.hilik.org.ua" ifconfig_em0="inet 89.252.34.110/24" defaultrouter="89.252.34.107" gateway_enable="YES" sshd_enable="YES"

И теперь можно перезагружаться и настраивать как обычный сервер. Добавлять пользователей и тп.Дополнительный софт(quagga, net-snmp) я добавляю пакетами(pkg_add), жесткие диски отключаются, добавляется вторая флешка и собирается в gmirror.В fstab мы прописали опцию ro, в дальнейшем, если нужно перемонтировать в rw, для внесения изменений, то выполняется команда:

mount -o rw /dev/da0s1a /

mount -o rw /dev/da0s1a /

После внесения изменений назад в ro:

При непредвиденной перезагрузке, время подъема системы минимально, что опять таки является плюсом и несмотря на кажущуюся кустарность, подбная технология хорошо себя проявила

www.hilik.org.ua