freebsd-nq/lib
John Baldwin f352a0d45f First cut at support for booting a GPT labeled disk via the BIOS bootstrap
on i386 and amd64 machines.  The overall process is that /boot/pmbr lives
in the PMBR (similar to /boot/mbr for MBR disks) and is responsible for
locating and loading /boot/gptboot.  /boot/gptboot is similar to /boot/boot
except that it groks GPT rather than MBR + bsdlabel.  Unlike /boot/boot,
/boot/gptboot lives in its own dedicated GPT partition with a new
"FreeBSD boot" type.  This partition does not have a fixed size in that
/boot/pmbr will load the entire partition into the lower 640k.  However,
it is limited in that it can only be 545k.  That's still a lot better than
the current 7.5k limit for boot2 on MBR.  gptboot mostly acts just like
boot2 in that it reads /boot.config and loads up /boot/loader.  Some more
details:
- Include uuid_equal() and uuid_is_nil() in libstand.
- Add a new 'boot' command to gpt(8) which makes a GPT disk bootable using
  /boot/pmbr and /boot/gptboot.  Note that the disk must have some free
  space for the boot partition.
  - This required exposing the backend of the 'add' function as a
    gpt_add_part() function to the rest of gpt(8).  'boot' uses this to
    create a boot partition if needed.
- Don't cripple cgbase() in the UFS boot code for /boot/gptboot so that
  it can handle a filesystem > 1.5 TB.
- /boot/gptboot has a simple loader (gptldr) that doesn't do any I/O
  unlike boot1 since /boot/pmbr loads all of gptboot up front.  The
  C portion of gptboot (gptboot.c) has been repocopied from boot2.c.
  The primary changes are to parse the GPT to find a root filesystem
  and to use 64-bit disk addresses.  Currently gptboot assumes that the
  first UFS partition on the disk is the / filesystem, but this algorithm
  will likely be improved in the future.
- Teach the biosdisk driver in /boot/loader to understand GPT tables.
  GPT partitions are identified as 'disk0pX:' (e.g. disk0p2:) which is
  similar to the /dev names the kernel uses (e.g. /dev/ad0p2).
- Add a new "freebsd-boot" alias to g_part() for the new boot UUID.

MFC after:	1 month
Discussed with:	marcel (some things might still change, but am committing
			what I have so far)
2007-10-24 21:33:00 +00:00
..
bind Remove the special atomic.h case for arm, and allow it to use 2007-06-05 22:17:16 +00:00
csu
libalias - Bump share library version which were missed in last bump 2007-06-18 18:47:54 +00:00
libarchive Fix reading of files that use pax 'size' attribute to store size. 2007-10-24 04:01:31 +00:00
libatm
libautofs
libbegemot
libbluetooth
libbsm Install getaudit_addr(2) and setaudit_addr(2) links to getaudit(2) and 2007-10-19 10:37:34 +00:00
libbsnmp - Bump share library version which were missed in last bump 2007-06-18 18:47:54 +00:00
libbz2
libc Back out 2nd part of wrong iswascii() change in prev. commit. 2007-10-23 17:39:28 +00:00
libc_r
libcalendar
libcam
libcom_err
libcompat
libcrypt
libdevinfo
libdevstat
libdisk Translate partitions of type "PART" to chunks of the same type 2007-09-21 16:24:01 +00:00
libedit Merge NetBSD changes, among them: 2007-06-10 19:06:09 +00:00
libelf Consistently use the word 'flag' to refer to ELF_F_* constants. 2007-10-22 03:38:43 +00:00
libexpat
libfetch Enable FTP_COMBINE_CWDS. 2007-05-24 20:28:14 +00:00
libftpio
libgeom
libgpib
libgssapi If the mech_type argument to gss_display_status is null, use a default 2007-07-05 13:40:07 +00:00
libipsec Commit IPv6 support for FAST_IPSEC to the tree. 2007-07-01 12:08:08 +00:00
libipx
libkiconv
libkse For 7.0 make the shared lib "version" '3'. 2007-10-10 16:59:14 +00:00
libkvm - When using kvm use the new conversion method to derive swtime. 2007-09-21 04:11:34 +00:00
libmagic FreeBSD has <limits.h>. 2007-05-24 22:10:22 +00:00
libmd
libmemstat
libmilter
libmp
libncp
libnetgraph
libngatm
libopie
libpam - Convert NO_INSTALLLIB option to a new syntax: makefiles should 2007-10-20 19:01:50 +00:00
libpcap Update for libpcap 0.9.8 import 2007-10-16 02:10:44 +00:00
libpmc
libradius
librpcsvc
librt
libsbuf
libsdp
libsm
libsmb
libsmdb
libsmutil
libstand First cut at support for booting a GPT labeled disk via the BIOS bootstrap 2007-10-24 21:33:00 +00:00
libtacplus
libtelnet
libthr - Stop calling libthr alternative as it's now the default 2007-10-22 10:13:38 +00:00
libthread_db Include string.h for memcpy() and memcmp(). 2007-05-25 13:43:14 +00:00
libufs
libugidfw
libusbhid
libutil Minor mdoc cleanup: Every sentence should start on its own line. 2007-10-13 11:09:45 +00:00
libvgl
libwrap
liby
libypclnt
libz
msun Oops, back out previous commit since it was backwards to a wrong branch. 2007-06-14 05:57:13 +00:00
ncurses - Convert NO_INSTALLLIB option to a new syntax: makefiles should 2007-10-20 19:01:50 +00:00
Makefile Tweak the handling of "WITHOUT_LIBPTHREAD". Also remove the accidental 2007-10-09 23:31:11 +00:00
Makefile.inc