Мы — долго запрягаем, быстро ездим, и сильно тормозим.

FreeBSD
  настройка
  подсчёт трафика
  программы
  почтовые системы
  Шелезяки
  Мелочи
  Файловая система
  mount_nullfs
  badsect
  clri
  bsdlabel
  dump (rdump)
  dumpfs
  ffsinfo
  fsirand
  mount_nfs
  mount_smbfs
  swapon
  tunefs
  umount
  recovery files
  growfs
  Pax
  clonehdd
  Мониторинг RAID
  gstripe
  fusefs-ntfs
  UFS->ZFS
  RAID5
  freebsd lvm
  root ZFS, GPT
  FreeBSD on flash
  Восстановление ZFS
  Лечим FFS
  gmirror
  WWW
  Security
  system
  Games Servers
  X11
  Programming
Очумелые Ручки
OpenBSD
Cisco


www.lissyara.su —> статьи —> FreeBSD —> Файловая система —> FreeBSD on flash

Опыт миграции на usb

Автор: manefesto.


Как то не везет мне с винтами последнее время.
Уже умирает третий винт подряд, до этого мерли Seageate, а теперь приказал долго жить WD
Переустановка, настройка доставляет достаточно мороки.
Было принято решении переехать на USB Flash и установить минимальный джентельменский набор для работы своего роутера.
В интернетах описаны методы установки из образа диска.
Ну во первых желания устанавливать из образа у меня нету, да и хотел сделать все по феншую.
Что мы имеем, Freebsd 8.2-prerelease и флешку на 2 Гб.
Форматируем флешку
fdisk -BI /dev/da0

создаем метки
bsdlabel -B -w da0s1

создаем файловую систему и создаем на ней UFS метку
newfs -U -L RootOnUSB /dev/da0s1a

Первая часть окончена, флешка подготовлена к развертыванию на ней системы.
Монтируем ее
mount /dev/ufs/RootOnUSB /mnt/tmp

идем в /usr/src где мы собирали наш мир с ядром.
устанавливаем мир на флешку
cd /usr/src
make installworld DESTDIR=/mnt/tmp

Мир установлен, осталось поставить ядро и конфигурационные файлы
Ядро ставим, точнее копируем банально:
cp -rf /boot/kernel/* /mnt/tmp/boot/kernel/

я например скопировал только кастомное ядро и пару модулей, в частности zfs.ko,opensolaris.ko
Ставим конфигурационные файлы, я это сделаю дважды, для надежности
cd /usr/src/etc
make distrib-dirs DESTDIR=/mnt/tmp
make distribution DESTDIR=/mnt/tmp

а теперь копируем с живой системы
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, мы создадим
локальную базу данных и запретим еженедельное обновление:

# chroot /mnt /bin/sh
# mount_devfs devfs /dev
# /etc/periodic/weekly/310.locate
Rebuilding locate database:
# echo 'weekly_locate_enable="NO"' >> /etc/periodic.conf 
# echo 'weekly_whatis_enable="NO"' >> /etc/periodic.conf
ctrl+^D

Поставим весь необходимый мне софт из имеющейся Freebsd на флешку.
Маленьким скриптом создал пакеты из имеющихся в системе
#!/bin/sh
mkdir /home/pkg
cd /home/pkg
for i in `pkg_info | awk '{print $1}'`; do
 pkg_create -b $i
done

монтируем папку с пакетами на флешку

mkdir /mnt/tmp/usr/pkg
mount_nullfs /home/pkg /mnt/tmp/usr/pkg
chroot /mnt/tmp /bin/sh
cd /usr/pkg
pkg_add .....(тут уж ставьте что хотите)

fstab поправили, пакеты поставили, осталось сделать флешку загрузочной.
Отмонтируем ее
umount /mnt/tmp

и запишем загрузчик
boot0cfg -v -B -o noupdate da0

В принципе все готово.
UPD[2010-12-16 3 часа ночи]
Скрипт для клонирования флешки
#!/bin/sh
dir="/mnt/tmp"
drive=da1
label=`date "+%Y%m%d%n"`

echo "preparing disk for duplicate system"
fdisk -BI /dev/$drive
bsdlabel -B -w "/dev/$drive"s1
newfs -U -L $label "$drive"s1a

echo "mount duplicate drive"
mount /dev/ufs/$label $dir

echo "start copy system"
for i in `ls -al /|grep d|awk '{print $9}'|grep -v "^\."|grep -v mnt`;do
        echo "create direcotry $i"
        mkdir /mnt/$i
        echo "duplicate live system directory $i"
        cd /$i
        pax -p eme -X -rw . /$dir/$i
done

echo "write fstab"
echo "/dev/ufs/$label / ufs rw,noatime 1       1" > $dir/etc/fstab
echo "/proc /proc procfs rw,noauto 0       0" >> $dir/etc/fstab

echo "umount drive and write loader"
umount /dev/ufs/$label
boot0cfg -v -B -o noupdate $drive

Немного пояснения, строки 2 и 3 описываю переменные куда будет монтироваться флешка.
Желательно отключить все шары которые не смонтированы в  /mnt,
а куда то в другое место, например /share,/pub

Статья является симбиозом статей установки freebsd из образа и установки мира в jail
Информация взята из
http://www.opennet.ru/base/sys/freebsd_stick.txt.html
и еще куска про jail, уже не помню где брал
PS: Таким образом в принципе можно переносить и на новый жесткий диск, планах написать скрипт который бы делал копию имеющейся флешки.
2011-10-24: Держать в памяти разделы оказалось не совсем удобно. В частности при клонировании флешки переполнялся tmp который приводил к переполнению памяти. Так же из-за var в памяти не корректно работает samba




Ссылка на обсуждение: Incorrect URL.

размещено: 2010-12-07,
последнее обновление: 2011-10-24,
автор: manefesto

оценить статью:

mak_v_, 2010-12-07 в 11:40:00

Замечательно, для множества маршрутизаторов - самое то, вот только старые железки не все адекватно ведут себя с юзб, но это уже из другой оперы.
Сам делал подобное на флешках по 1гб. работало, если честно, не оч.стабильно, хоть и все в рам....

manefesto, 2010-12-07 в 12:24:50

для меня этот вариант более стабилен чем работа с хардом, третий уже вылетел

adre, 2010-12-07 в 13:53:56

шикарно...

ufs, 2010-12-07 в 18:41:39

WD RE3/RE4 заюзай, раз не везет :-)

Foxduck, 2010-12-07 в 20:23:40

Аналогично делал только для системы бэкапа..когда не хотел на винты ставить систему а отдал все их пространство для хранения данных
С самой флешки сделал 3 копии на случай форс-мажора..

opt1k, 2010-12-07 в 23:50:38

По моим наблюдениям флешки менее надёжны чем винты...

manefesto, 2010-12-08 в 7:15:32

лучше купить 3 флешки по 2 гига по 200 рублей чем 3 винта

WarWar, 2010-12-08 в 14:04:20

Спасибо за труды.

Dominator, 2010-12-08 в 17:50:50

Опередил меня :)
Я тоже хотел написать статью на такую же тематику :)

alex, 2010-12-08 в 23:22:29

Поправь, плз...
"Ставим конфигурационные файлы:
make destrib-dirs DESTDIR=/mnt/tmp
make destribution DESTDIR=/mnt/tmp"
(надо distrib..., а не destrib...)

manefesto, 2010-12-09 в 7:46:37

готово

SergeySL, 2010-12-09 в 8:33:22

Огромное спасибо!

Evil, 2010-12-09 в 10:28:34

Если чесно то роутер на флешке звучит как извращения.

Dominator, 2010-12-13 в 12:53:20

Роутер на флешке - самое то, особенно против всяких проверок.
В умелых руках флешка с FreeBSD - довольно мощное оружие(nfs и ему подобные не учитываются): и систему забекапить, и сервак с FreeBSD поднять, и данные свистнуть, и вирусы почистить. Было бы место на флешке и терпение...

Алекс, 2010-12-15 в 16:04:26

А мониторинг SMART на винтах не спасал ни разу? Просто интересно, раз у вас так сыпятся :).

manefesto, 2010-12-15 в 21:18:24

а при чем тут смарт ?
системы не флешке удобне разворачивать чем инсталить с нуля

Алекс, 2010-12-18 в 21:05:13

Я про то, помогал ли мониторинг SMART определить, что винту скоро трындец, или его не мониторили совсем, решив, что раз у гугля не получилось на нем делать предсказания, то и вам не стоит?

BTI, 2010-12-20 в 10:22:48

Алекс, да какая нафиг разница проморгал - не проморгал. факт в том что хард сдох, а флешка подешевле будет. да и если писать по минимуму - понадежнее.

Dominator, 2010-12-21 в 10:31:13

Мне SMART не помог. Уже два винта полетело, а смарт говорит, мол все ништяк.
Вот когда я просканировал винт викторией, вот тогда только смарт среагировал на бэд блоки, которых было более 100000

Алекс, 2010-12-21 в 11:25:14

Да вот на небольшой оффтоп прибило, сорри.

Dominator вы про BIOS говорите? Т.е. bios не среагировал сразу, я правильно понимаю? Другими средствами мониторинг SMART не осуществлялся?

Просто у меня не было такого - чтобы винт сдох, и smart в порядке. Стаж  10 лет, компов за это время в организации сменили несколько сотен.

Dominator, 2010-12-22 в 14:38:57

Алекс, вы правильно меня поняли. BIOS не отреагировал на бэды. Другими утилитами не мониторил.

polkan, 2010-12-29 в 8:24:25

замени  построение

pkg_info | awk '{print $1}'
на
pkg_info -aE

оно само умеет выкусывать имя пакета :)

Marivanna, 2011-01-14 в 20:40:59

У FreeBSD существует свой проект NanoBSD, специально для таких конфигураций с флешками.
http://www.freebsd.org/doc/en_US.ISO8859-1/articles/nanobsd/howto.html

Удобство в том, что там система работает в режиме read-only, для сохранения настроек монтируется отдельный раздел. Т.о. каол-во записей на флэшку уменьшается в разы. Удалось БСД 7.3 записать на флешку в 128 Мб.
Перенос небольшого шлюза на работу с флэшки очень удобно. Даже если накрылась, быстренько из бэкапа заливаешь образ и радуешься.

InventoR, 2011-01-25 в 8:52:34

Винты просто так не летят, проверяй напряжение из БП и просадку.

Александр, 2011-03-14 в 18:18:25

Ребята, поломка винтов - это не только появление бедов.

Мониторинг смарт никак вас не спасет, например, от скачков напряжения, кз, физических изменений головок, разрушения подшипника шпинделя, когда у вас в момент либо контроллер на винте полетит, либо головка попортить поверхность блина.

Есть реальный пример, когда в лаборатории восстановления данных не смогли нам восстановить винт.

Как ни пытайся сравнивать, но прецизионная механика менее надежней электроники. Хотя и usb-flash не есть 100% надежный накопитель

Итак, самое правильное применение, систем в ro режиме + ежедневные инкрементные бекапы на случай быстрого восстановления. (бекапы надо делать на другой комп в другом помещении, тогда и пожары не страшны).

Однако автору надо сказать спасибо за проделанный труд, на случай когда это роутер без изменения и образ флешки слит - это самый выгодный вариант вариант по цене/качество.

ronin, 2011-08-17 в 2:51:28

обратите внимани на nanobsd
или на http://bsdrp.net/

adre, 2011-09-03 в 20:28:04

Зачем?
Кому надо о ней знают.

Mainbrain, 2011-09-11 в 13:15:18


>>> Installing everything
--------------------------------------------------------------
cd /usr/src; make -f Makefile.inc1 install
===> share/info (install)
===> lib (install)
===> lib/csu/i386-elf (install)
cc -O2 -pipe  -I/usr/src/lib/csu/i386-elf/../common  -I/usr/src/lib/csu/i386-elf/../../libc/include -std=gnu99  -Wsystem-headers -Werror -Wall -Wno-format-y2k -W -Wno-unused-parameter -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wreturn-type -Wcast-qual -Wwrite-strings -Wswitch -Wshadow -Wcast-align -Wunused-parameter -Wchar-subscripts -Winline -Wnested-externs -Wredundant-decls -Wno-pointer-sign -c crti.S
cc: not found
*** Error code 127

Stop in /usr/src/lib/csu/i386-elf.
*** Error code 1

Stop in /usr/src/lib.
*** Error code 1

Stop in /usr/src.
*** Error code 1

Stop in /usr/src.
*** Error code 1

Stop in /usr/src.
*** Error code 1

Stop in /usr/src.

manefesto, 2011-09-11 в 13:41:17

Мир проверь

Mainbrain, 2011-09-11 в 22:40:46

пересобрал пока что все ок

Dusya, 2012-04-29 в 5:51:56

Афтар еблан
Вместо того чтоб Б,П сменить на нормальный сжог 3 харда и занялся хиутой

Dominator, 2012-11-24 в 14:42:48

Dusya, 2012-04-29 в 5:51:56

Только и можешь поливать грязью? Если да, то тебе здесь не место.

Автору - респект. Статья уже который раз спасает. Сейчас как раз фряха на флешке спасла (дисковода нет): в ходе экспериментов убил на винте разделы.

Happy_demon, 2016-09-23 в 15:01:07

Сейчас, когда pkg_info нет, а есть pkg тело скрипта, для создания пакетов чуть отличается.
#!/bin/sh
mkdir /home/pkg
cd /home/pkg
for i in `pkg query %n-%v `; do
pkg create $i
done

А так- отличный туториал.


Оставьте свой комментарий:
Ваше имя:   *
e-mail:  
жирный
наклонный
подчёркнутый
ссылка
цвет
Нынешний год:   *
 


Хостинг HOST-FOOD

2014-07-27, lissyara
gmirror

Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9

Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
2011-11-20, BlackCat
Разъём на WiFi-карту

Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
2011-09-14, manefesto
Настройка git+gitosis

Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
2011-08-14, zentarim
Wi-FI роутер + DHCP + DNS

Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ
2011-06-15, -ZG-
Охранная система на FreeBSD+LPT

В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией.
2011-03-13, terminus
ng_nat

Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat
2011-02-20, Капитан
Nagios+Digitemp

Статья описывает создание системы оповещения о превышении температуры в специальных помещениях на основе Nagios с использованием программы Digitemp.
подписка

    вверх      
Статистика сайта
Сейчас на сайте находится: 23 чел.
За последние 30 мин было: 80 человек
За сегодня было
5361 показов,
1001 уникальных IP
 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.1241 секунд
Из них PHP: 53%; SQL: 47%; Число SQL-запросов: 77 шт.
Исходный размер: 99901; Сжатая: 19508