diff options
author | marcel <marcel@FreeBSD.org> | 2010-01-09 22:54:29 +0000 |
---|---|---|
committer | marcel <marcel@FreeBSD.org> | 2010-01-09 22:54:29 +0000 |
commit | e1c64beebc41d28b21e9e6b120a7a361bd6acd52 (patch) | |
tree | 10075f9ec03989accec7e9481bd42bccf1d14068 /sys/boot/ia64 | |
parent | 8a9b761eedfbc1dde4efb8333b61da39c37e9af0 (diff) | |
download | FreeBSD-src-e1c64beebc41d28b21e9e6b120a7a361bd6acd52.zip FreeBSD-src-e1c64beebc41d28b21e9e6b120a7a361bd6acd52.tar.gz |
Remove file system support based on the simple file system protocol
as this only allows us to access file systems that EFI knows about.
With a loader that can only use EFI-supported file systems, we're
forced to put /boot on the EFI system partition. This is suboptimal
in the following ways:
1. With /boot a symlink to /efi/boot, mergemaster complains about
the mismatch and there's no quick solution.
2. The EFI loader can only boot a single version of FreeBSD. There's
no way to install multiple versions of FreeBSD and select one
at the loader prompt.
3. ZFS maintains /boot/zfs/zpool.cache and with /boot a symlink we
end up with the file on a MSDOS file system. ZFS does not have
proper handling of file systems that are under Giant.
Implement a disk device based on the block I/O protocol instead and
pull in file system code from libstand. The disk devices are really
the partitions that EFI knows about.
This change is backward compatible.
MFC after: 1 week
Diffstat (limited to 'sys/boot/ia64')
-rw-r--r-- | sys/boot/ia64/efi/conf.c | 7 | ||||
-rw-r--r-- | sys/boot/ia64/efi/version | 3 |
2 files changed, 7 insertions, 3 deletions
diff --git a/sys/boot/ia64/efi/conf.c b/sys/boot/ia64/efi/conf.c index a72f79f..69d0927 100644 --- a/sys/boot/ia64/efi/conf.c +++ b/sys/boot/ia64/efi/conf.c @@ -49,15 +49,16 @@ __FBSDID("$FreeBSD$"); /* Exported for libstand */ struct devsw *devsw[] = { - &efifs_dev, + &efipart_dev, &efinet_dev, NULL }; struct fs_ops *file_system[] = { - &efifs_fsops, - &nfs_fsops, + &dosfs_fsops, &ufs_fsops, + &cd9660_fsops, + &nfs_fsops, &gzipfs_fsops, NULL }; diff --git a/sys/boot/ia64/efi/version b/sys/boot/ia64/efi/version index 7d7f566..37a71c3 100644 --- a/sys/boot/ia64/efi/version +++ b/sys/boot/ia64/efi/version @@ -3,6 +3,9 @@ $FreeBSD$ NOTE ANY CHANGES YOU MAKE TO THE BOOTBLOCKS HERE. The format of this file is important. Make sure the current version number is on line 6. +2.0: Provide devices based on the block I/O protocol, rather than the + simple file services protocol. Use the FreeBSD file system code + on top of those devices to access files. 1.2: Restructured. Has some user visible differences. 1.1: Pass the HCDP table address to the kernel via bootinfo if one is present in the EFI system table. |