User Tools

Site Tools


Differences

This shows you the differences between two versions of the page.

Link to this comparison view

freebsd-boot [2019-06-21 14:14] (current)
Line 1: Line 1:
 +======Варианты загрузки FreeBSD======
 +
 +=====Подготовка загрузки ZFS=====
 +  * /​etc/​rc.conf:​
 +<​code>​
 +echo '​zfs_enable="​YES"'​ >> /​etc/​rc.conf ​
 +</​code>​
 +
 +  * /​boot/​loader.conf:​
 +<​code>​
 +vm.kmem_size="​330M"​
 +vm.kmem_size_max="​330M"​
 +vfs.zfs.arc_max="​40M" ​    
 +vfs.zfs.vdev.cache.size="​5M"​
 +
 +zfs_load="​YES"​
 +vfs.root.mountfrom="​zfs:​tank"​
 +</​code>​
 +
 +  * /​etc/​make.conf
 +<​code>​
 +LOADER_ZFS_SUPPORT=yes
 +</​code>​
 +
 +  * Recompile boot loader
 +<​code>​
 +cd /​usr/​src/​sys/​boot
 +make clean
 +make obj
 +make depend
 +make 
 +make install [DESTDIR=/​some]
 +</​code>​
 +
 +
 +=====ZFS+MBR boot=====
 +
 +ZFS можно разместить в любом разделе.
 +Как вариант,​ в BSD-подразделе (!!slice!!).
 +
 +<​code>​
 +MBR->​BSDPART->​ZFS_SUBPART
 +</​code>​
 +
 +
 +<​code>​
 +# создаем таблицу разделов типа MBR
 +gpart create -s MBR da0  ​
 +
 +# создаем раздел в ней; если на весь диск, то размер опускаем
 +grart add -b 1 [-s _SIZE_] -t freebsd da0
 +
 +# создаем под-таблицу разделов BSD, ранее это делалось утилитой bsdlabel
 +gpart create -s BSD da0s1
 +
 +# создаем bsd-подраздел (slice)
 +gpart add -i 1 [ -s _SIZE_ ] da0s1
 +
 +# создаем ZFS пул
 +zpool create zroot da0s1a ​
 +
 +# далее операции с пулом и файловой системой
 +zpool export
 +zpool import
 +zfs create zpool/usr
 +...
 +</​code>​
 +==Пример с рабочей системы==
 +<​code>​
 +# gpart show ad0
 +=>     ​63 ​ 7880481 ​ ad0  MBR  (3.8G)
 +       ​63 ​ 7880481 ​   1  freebsd ​ [active] ​ (3.8G)
 +
 +# gpart show ad0s1
 +=>      0  7880481 ​ ad0s1  BSD  (3.8G)
 +        0  7880481 ​     1  freebsd-zfs ​ (3.8G)
 +</​code>​
 +
 +
 +
 +====Install boot code====
 +Нуждается в уточнении вариантов установки boot part1 & part1
 +
 +<​code>​
 +dd if=/​mnt2/​boot/​zfsboot of=/​dev/​da0s1a bs=512 count=1
 +dd if=/​mnt2/​boot/​zfsboot of=/​dev/​da0s1a bs=512 skip=1 seek=1024
 +</​code>​
 +<​blockquote>​
 +
 +[[http://​wiki.freebsd.org/​ZFSOnRootWithZFSboot|Root On ZFS Configuration using zfsboot]]
 +
 +16. Install ZFS boot
 +
 +- Install the boot1 stage:
 +<​code>​
 +Fixit# dd if=/​mnt2/​boot/​zfsboot of=/​dev/​ad0s3 count=1
 +</​code>​
 +
 +- Install the boot2 zfs stage into the convienient hole in the ZFS filesystem on-disk format which is located just after the ZFS metadata (this is the seek=1024).
 +
 +<​code>​
 +Fixit# dd if=/​mnt2/​boot/​zfsboot of=/​dev/​ad0s3a \
 +  skip=1 seek=1024
 +</​code>​
 +
 +Exit Fixit mode, and sysinstall. Then remove the FreeBSD install CD and the system will boot using the ZFS root. 
 +
 +</​blockquote>​
 +
 +=====UFS+GPT boot=====
 +
 +Под загрузчик !!Stage2!! выделяется отдельный раздел.
 +
 +<​code>​
 +GPT->​BSD_BOOT_PART
 +   ​->​BSD_FREEBSD_UFS_PART
 +</​code>​
 +
 +<​code>​
 +gpart create -s GPT da0
 +gpart add -b 32 -s 128 -t freebsd-boot da0
 +gpart add -b _32+128_ -t freebsd-ufs da0
 +gpart add ...
 +grapt bootcode -b /boot/pmbr -p /​boot/​gptboot -i1 da0
 +newfs -U -L _label_ da0p2
 +..
 +</​code>​
 +
 +
 +=====ZFS+GPT boot=====
 +Аналогично UFS+GPT, инталлируется другой загрузчик Stage2
 +
 +<​code>​
 +GPT->​BSD_BOOT_PART
 +   ​->​BSD_FREEBSD_ZFS_PART
 +</​code>​
 +
 +<​code>​
 +gpart create -s GPT da0
 +gpart add -b 32 -s 128 -t freebsd-boot da0
 +gpart add -b _32+128_ -t freebsd-zfs da0
 +gpart add ...
 +grapt bootcode -b /boot/pmbr -p /​boot/​gptzfsboot -i1 da0
 +zpool create tank da0p2
 +..
 +</​code>​
 +
 +----