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

05.01.2009

Текушие эксперементы

Что то никак не получается написать что нибудь полезное, да и вообще, что то не совсем все клеится, ещё до нового года прибарахлился дисками которые бодро, в течении пары дней воткнул в десктоп, так он с той поры и стоит не живой :) все не доходят руки как следует заняться, ибо СДюка там нету, а хочется поставить новую систему, а альтернативные способы что то дают сбои.
PXE загрузка в принципе довольно простой, и эффективный способ, и вроде все срабатывает, но что то ядро не грузится, загрузчик стаскивается по tftp а вот на ядро ему как то силенок не хватает, и ведь ладно бы первый раз делал, ан нет уже даже писал о успешном восстановлении системы после сбоя диска, а вот теперь никак, видать новый год и работать нельзя :)
Зато еше раз потренировался в изготовлении FreeBSD on tfe flesh, и после этого даже как то странно видеть такой вал народа с поисковыми запросами по установке FreeBSD на флешку, процесс в принципе сейчас ни фига не сложен, правда в моем случае я еше применил новую схему разметки основанную на GEOM, с помошью gpart. В принципе с ее же помошью собираюсь, и пробую инсталить и десктоп но пока что то там прогресс идет хреновенько но все таки ZFS raid с прямой загрузкой, это не так уж просто поэтому полон энтузиазма.
Мой рецепт приготовления флешки с FreeBSD на борту, за основу взят рецепт Warner Losh но немного модернизирован под более новые средства и свои задачи.
  1. make buildworld
  2. make buildkernel KERNCONF=MY
  3. Gpart (смотри далее по тексту)
  4. newfs /dev/da0p2
  5. mount /dev/da0p2 /mnt
  6. make installworld DESTDIR=/mnt
  7. make installkernel DESTDIR=/mnt KERNCONF=MY
  8. make distrib-dirs DESTDIR=/mnt
  9. make distribution DESTDIR=/mnt
  10. echo /dev/da0p2 / ufs ro 1 1 > /mnt/etc/fstab
  11. echo ifconfig_DEFAULT=DHCP > /mnt/etc/rc.conf
  12. echo hostname=demo >> /mnt/etc/rc.conf
Если кому лень сходить по ссылке, то я не стал устанавливать переменные окружения, ибо собирал систему с одинаковой архитектурой, хотя если вы будете делать на основе этого рецепта спасательную флешку, то все таки лучше остановится на i386 архитектуре, так же я не стал отключать дебаг, и использовал не стандартное ядро, что опять же обусловлено условиями применения, данной флешки, а хотел я чтоб на ней была корневая система будущего обновленного десктопа, но после пробы отказался от этой затеи, предвидя проблемы дальнейшего обновления, когда делал флешку поразила, медлительность записи, чтобы залить систему надо было часа три, а может и больше, что абсолютно за гранью добра и зла, да конечно большую часть в виде каталога /usr, и /var с нее можно унести и в дальнейшем оптимизировать ядро, но все одно как то неприятно, она даже грузится не быстрее чем с жесткого диска, к тому же решил попробовать непосредственную загрузку с ZFS.
Обещанный пример употребления Gpart, если кто не в курсе то это утилита претендующая на то что бы занять место, fdisk, и bsdlabel заодно, ну и может ещё чего, и сулящая нам избавления от пережитков начала компьютерной эры в виде MBR, ограничений на число разделов, и прочие пакости.
test# gpart create -s GPT da0
da0 created
test# gpart bootcode -b /boot/pmbr da0
da0 has bootcode
test# gpart show da0
=> 34 3905340 da0 GPT (1.9G)
34 3905340 - free - (1.9G)
Первой тройкой команд, на свежей не размеченной флешке я создал, схему GPT потом записал bootcode для того чтоб системы понимающие mbr тоже могли работать с флешкой, ну и третья команда показывает что вышло.
test# gpart add -b 34 -s 2000000 -t freebsd-ufs da0
da0p1 added
test# gpart show da0
=> 34 3905340 da0 GPT (1.9G)
34 2000000 1 freebsd-ufs (977M)
2000034 1905340 - free - (930M)

test# gpart add -b 2000034 -s 1905340 -t freebsd-ufs da0
da0p2 added
test# gpart show da0
=> 34 3905340 da0 GPT (1.9G)
34 2000000 1 freebsd-ufs (977M)
2000034 1905340 2 freebsd-ufs (930M)
Потом для примера создал пару разделов примерно по Gb каждый, как видно делается это просто, и отображается весьма наглядно, есть только одна неприятность размер надо задавать в секторах, что не всегда наглядно, надо будет или подумать об автоматизации процесса, но думаю что это детская болезнь утилиты, а может просто фича.
Так как теперь мы не связаны тесными рамками MBR то можно создавать специализированные загрузочные разделы, вот так
test# gpart add -b 34 -s 128 -t freebsd-boot da0
da0p1 added
test# gpart show da0
=> 34 3905340 da0 GPT (1.9G)
34 128 1 freebsd-boot (64K)
162 3905212 - free - (1.9G)
test# gpart bootcode -p /boot/gptboot -i 1 ad0
И соответственно писать в них всякие хитрые загрузчики, например для загрузки с самой схемы GPT , ну или zfsboot, для прямой загрузки с ZFS раздела. Размер такого раздела в принципе может быть произвольным, но в man написано что 64Кб пока хватит :)
Удаление разделов происходит так же изящно
test# gpart delete -i 3 da0
da0p3 deleted
test# gpart destroy da0
Перед удалением схемы GPT надо удалить все разделы.
Вот такая прекрасная утилитка появилась и развивается с версии 7.0 если кто не в курсе, конечно пока сыровата, и не совсем полна функциональностью, но по моему у нее не плохие шансы что бы стать стандартом, и облегчить нам жизнь :)
Во вспомнил тут ещё, с ее помощью можно весьма наглядно посмотреть что у вас творится с дисками, вот пример с моего десктопа, когда к нему подрублена флешка, ну и два винта уже размечены под будующий пул ZFS
# gpart show
=> 34 1953525101 ad4 GPT (932G)
34 4000000 1 freebsd-swap (1.9G)
4000034 1949525101 2 freebsd-zfs (930G)

=> 34 1953525101 ad6 GPT (932G)
34 4000000 1 freebsd-swap (1.9G)
4000034 1949525101 2 freebsd-zfs (930G)

=> 34 3905340 da0 GPT (1.9G)
34 128 1 freebsd-boot (64K)
162 2000000 2 freebsd-ufs (977M)
2000162 1905212 3 freebsd-ufs (930M)
По моему весьма не плохая функция.

3 комментария:

  1. Hello,
    Sorry for English but my Russian is much worse. Would you be so kind to give me an advice is it possible to be prepared bootable usb stick with installation of Free BSD on it but formatted like super floppy. I know this is an extraordinary question but my BIOS recognizes only emulation of usb super floppy and don't this of usb hdd.

    10x in advance.

    ОтветитьУдалить
  2. My English is much worse too :(
    Mayby add boot floppy, or boot of network on pxe

    ОтветитьУдалить

Здесь можно записать свои мысли о посте :)
Если ваш ответ не появился сразу, не паникуйте, тут работает спамоловка, и вероятно вы угодили в неё, так как были анонимом или в вашем посте ссылка, ну или вас не любит google.
Я проснусь и одобрю комент ;)