GUID Partition Table

GUID Partition Table

GUID Partition Table • Unified Extensible Firmware Interface (UEFI) • GUID Partition Table (GPT) • gpart(8) • Root On ZFS • FreeBSD9 – bsdinstall • Soft-Update Journaling (SU+J) Computer Center, CS, NCTU CS, Computer Center, Unified Extensible Firmware Interface BIOS limitations • 16-bit processor mode • 1MB addressable space UEFI advantages • UEFI v2.3.1 in April 2011 • Disk device compatibility (GUID Partition Table) • Processor compatibility (x86, x64, ARM) 2 Computer Center, CS, NCTU CS, Computer Center, GUID Partition Table – (1) Limitation of MBR partition table • Partition record active(1)、first CHS(3)、type(1)、last CHS(3)、start LBA(4)、size(4) • Maximum capacity (232-1) x 512 bytes ~ 241 bytes = 2TBytes GPT • Maximum capacity: 8ZBytes (273 bytes) • Used on some BIOS system 3 Computer Center, CS, NCTU CS, Computer Center, GUID Partition Table – (2) GPT • LBA 0: Legacy MBR • LBA 1: GPT Header • LBA 2~33: Partition Entries 128 partitions • LBA 34~: Partitions • LBA -34 ~ -1: Secondary GPT data Misaligned block • SSD (1K LBA) • WD (4K sector) 4 Computer Center, CS, NCTU CS, Computer Center, GUID Partition Table – (3) Legacy MBR (LBA 0) • A single partition of type 0xEE, and of whole disk size (max 2T) • For OSes which cannot read GPT: unknown partition, no space • For GPT-aware OSes: check the “protective MBR” 5 Computer Center, CS, NCTU CS, Computer Center, GUID Partition Table – (4) Partition header table (LBA 1) Offset Length Contents 0 8 bytes Signature ("EFI PART", 45 46 49 20 50 41 52 54) Revision (For GPT version 1.0 (through at least UEFI version 2.3.1), the value is 8 4 bytes 00 00 01 00) 12 4 bytes Header size in little endian (in bytes, usually 5C 00 00 00 meaning 92 bytes) 16 4 bytes CRC32 of header (0 to header size), with this field zeroed during calculation 20 4 bytes Reserved; must be zero 24 8 bytes Current LBA (location of this header copy) 32 8 bytes Backup LBA (location of the other header copy) 40 8 bytes First usable LBA for partitions (primary partition table last LBA + 1) 48 8 bytes Last usable LBA (secondary partition table first LBA - 1) 56 16 bytes Disk GUID (also referred as UUID on UNIXes) 72 8 bytes Partition entries starting LBA (always 2 in primary copy) 80 4 bytes Number of partition entries 84 4 bytes Size of a partition entry (usually 128) 88 4 bytes CRC32 of partition array 92 * Reserved; must be zeroes for the rest of the block (420 bytes for a 512-byte LBA) 6 Computer Center, CS, NCTU CS, Computer Center, GUID Partition Table – (5) Partition header table (LBA 1) # dd if=/dev/ada0 bs=512 count=1 skip=1 | hd 00000000 45 46 49 20 50 41 52 54 00 00 01 00 5c 00 00 00 |EFI PART....\...| 00000010 e6 f0 27 96 00 00 00 00 01 00 00 00 00 00 00 00 |..'.............| 00000020 2f 60 38 3a 00 00 00 00 22 00 00 00 00 00 00 00 |/`8:....".......| 00000030 0e 60 38 3a 00 00 00 00 7f a3 90 90 46 b4 de 11 |.`8:........F...| 00000040 8e b8 00 21 85 12 22 74 02 00 00 00 00 00 00 00 |...!.."t........| 00000050 80 00 00 00 80 00 00 00 e0 9d 1a 52 00 00 00 00 |...........R....| 00000060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00000200 7 Computer Center, CS, NCTU CS, Computer Center, GUID Partition Table – (6) Partition entries (LBA 2~33) • 128 bytes for each partition entry Offset Length Contents 0 16 bytes Partition type GUID 16 16 bytes Unique partition GUID 32 8 bytes First LBA (little-endian) 40 8 bytes Last LBA (inclusive, usually odd) 48 8 bytes Attribute flags (e.g. bit 60 denotes read-only) 56 72 bytes Partition name (36 UTF-16LE code units) 128 Total 8 Computer Center, CS, NCTU CS, Computer Center, GUID Partition Table – (7) Partition type GUID freebsd-boot 83BD6B9D-7F41-11DC-BE0B-001560B84F0F freebsd 516E7CB4-6ECF-11D6-8FF8-00022D09712B freebsd-swap 516E7CB5-6ECF-11D6-8FF8-00022D09712B freebsd-ufs 516E7CB6-6ECF-11D6-8FF8-00022D09712B freebsd-vinum 516E7CB8-6ECF-11D6-8FF8-00022D09712B freebsd-zfs 516E7CBA-6ECF-11D6-8FF8-00022D09712B 9 Computer Center, CS, NCTU CS, Computer Center, FreeBSD – gpart (1) gpart(8) • Control utility for the disk partitioning GEOM class (ad0) GEOM_PART_MBR (ad0 ad0s1) – GEOM_PART_BSD (ad0s1 ad0s1a) GEOM_PART_GPT (ad0 ad0p1) • gpart create -s mbr ad0 gpart add -t freebsd ad0 (ad0 ad0s1) gpart create -s bsd ad0s1 • gpart create -s gpt ad0 • gpart destroy [ -F ] ad0 -F: forced destroying of the partition table 10 Computer Center, CS, NCTU CS, Computer Center, FreeBSD – gpart (2) gpart(8) • gpart add -t type [ … ] ad0 type: freebsd-boot, freebsd-swap, freebsd-ufs, freebsd-zfs, freebsd -b start -s size -a alignment: -a 4k for 4K-sector HDD -i index -l label: used on partitioning schemes that support partition labels • gpart delete –i index ad0 • gpart show [ -l | -r ] [ -p ] ad0 -l: print partition labels instead of partition type -r: show GUID -p: show provider names instead of partition indexes 11 Computer Center, CS, NCTU CS, Computer Center, FreeBSD – gpart (3) gpart(8) • gpart bootcode [ -b bootcode ] [ -p partcode -i index ] ad0 -b: embed bootstrap code into the partitioning scheme’s metadata -p: write bootstrap code into a partition Bootstraping for MBR scheme – /boot/mbr or /boot/boot0 in partition table’s metadata » /boot/mbr searches partition with active attribute » /boot/boot0 has a boot manager – /boot/boot in BSD partition table’s metadata Bootstraping for GPT scheme – /boot/pmbr in the first disk sector (Protective MBR) » /boot/pmbr searches the freebsd-boot partition – /boot/gptboot or /boot/gptzfsboot in freebsd-boot partition » /boot/gptboot searches the freebsd-ufs partition to run /boot/loader » /boot/gptzfsboot searches the freebsd-zfs partition to run /boot/zfsloader 12 Computer Center, CS, NCTU CS, Computer Center, FreeBSD – gpart (4) gpart(8) • gpart modify -i index [ -l label ] [ -t type ] ad0 • gpart resize -i index [ -a alignment ] [ -s size ] ad0 • gpart { set | unset } -a attrib -i index ad0 Set "Active" for MBR scheme – gpart set -a active –i 1 ad0 • gpart { backup | restore } ad0 • gpart recover ad0 GPT-only • gpart { command … -f x | commit | undo } ad0 13 Computer Center, CS, NCTU CS, Computer Center, Root On ZFS – (1) Root On ZFS • Using MBR disk UFS /boot FreeBSD-ZFS partition in a FreeBSD MBR slice – dd if=/mnt2/boot/zfsboot of=/dev/ad0s3 count=1 – dd if=/mnt2/boot/zfsboot of=/dev/ad0s3a skip=1 seek=1024 FreeBSD MBR slice – Fails to boot • Using GPT disk Disadvantage – Can’t dual boot using FreeBSD commercial bootcode – Using GPT-aware grub setup and hybrid GPT/MBR http://wiki.freebsd.org/RootOnZFS now for 8.x • 9.0 http://www.aisecure.net/2011/05/01/root-on-zfs-freebsd-current/ 14 Computer Center, CS, NCTU CS, Computer Center, Root On ZFS – (2) Creating a bootable ZFS Filesystem • Create GPT disk gpart create -s gpt ad0 • Create the boot, swap and zfs partitions gpart add -s 64k -t freebsd-boot ad0 gpart add -s 4g -t freebsd-swap -l swap0 ad0 gpart add -t freebsd-zfs -l disk0 ad0 • Install the Protected MBR (pmbr) and gptzfsboot loader gpart bootcode -b pmbr -p gptzfsboot -i 1 ad0 • Load ZFS kernel module kldload zfs • Create ZFS Pool zroot zpool create zroot /dev/gpt/disk0 zpool set bootfs=zroot zroot 15 Computer Center, CS, NCTU CS, Computer Center, Root On ZFS – (3) Installing FreeBSD to the ZFS filesystem • Create ZFS filesystem hierarchy 16 Computer Center, CS, NCTU CS, Computer Center, Root On ZFS – (4) Installing FreeBSD to the ZFS filesystem • Install FreeBSD to zroot Manually install base, kernel(s), lib32, games, doc, … • Make /var/empty readonly zfs set readonly=on zroot/var/empty • Manually configure chroot /etc/rc.conf – hostname, networks, zfs_enable, sshd, ntpd, … /boot/loader.conf – zfs_load, vfs.root.mountfrom root password Time zone … 17 Computer Center, CS, NCTU CS, Computer Center, Root On ZFS – (5) Installing FreeBSD to the ZFS filesystem • Install zpool.cache to the ZFS filesystem zpool export zroot zpool import –o cachefile=/tmp/zpool.cache zroot Copy /tmp/zpool.cache into zroot/boot/zfs/ Finish install • Create /etc/fstab swap • Set mount points for zfs filesystems zfs set mountpoint=blah zroot/blah Alternatively, you can specify these in /etc/fstab 18 Computer Center, CS, NCTU CS, Computer Center, Root On ZFS – (6) gpart show # gpart show => 34 83886013 ada0 GPT (40G) 34 128 1 freebsd-boot (64k) 162 4194304 2 freebsd-swap (2.0G) 4194466 79691581 3 freebsd-zfs (38G) swapinfo # swapinfo Device 1K-blocks Used Avail Capacity /dev/gpt/swap0 2097152 0 2097152 0% 19 Computer Center, CS, NCTU CS, Computer Center, Root On ZFS – (7) zpool status -v # zpool status -v pool: zroot state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM zroot ONLINE 0 0 0 ada0p3 ONLINE 0 0 0 errors: No known data errors 20 Computer Center, CS, NCTU CS, Computer Center, Root On ZFS – (8) zfs list # zfs list NAME USED AVAIL REFER MOUNTPOINT zroot 657M 36.5G 344M legacy zroot/home 31K 36.5G 31K legacy zroot/tmp 36K 36.5G 36K /tmp zroot/usr 311M 36.5G 311M /usr zroot/usr/ports 95K 36.5G 33K /usr/ports zroot/usr/ports/distfiles 31K 36.5G 31K /usr/ports/distfiles zroot/usr/ports/packages 31K 36.5G 31K /usr/ports/packages zroot/usr/src 31K 36.5G 31K /usr/src zroot/var 461K 36.5G 126K /var zroot/var/crash 31.5K 36.5G 31.5K /var/crash zroot/var/db 116K 36.5G 85K /var/db zroot/var/db/pkg 31K 36.5G 31K /var/db/pkg zroot/var/empty 31K 36.5G 31K /var/empty zroot/var/log 45K 36.5G 45K /var/log zroot/var/mail 31K 36.5G 31K /var/mail zroot/var/run 48.5K 36.5G 48.5K /var/run zroot/var/tmp 32K 36.5G 32K /var/tmp 21 Computer Center, CS, NCTU

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    40 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us