diff options
author | marcel <marcel@FreeBSD.org> | 2002-11-18 08:37:46 +0000 |
---|---|---|
committer | marcel <marcel@FreeBSD.org> | 2002-11-18 08:37:46 +0000 |
commit | 5f52e523f035a7b304df0aa841272a5483d8b4fd (patch) | |
tree | fbf3c9f4fccdcc5123be6c6aad3934f895cb3553 /usr.sbin | |
parent | bb7a6e62c794ea7617672473e4be91689d8faed7 (diff) | |
download | FreeBSD-src-5f52e523f035a7b304df0aa841272a5483d8b4fd.zip FreeBSD-src-5f52e523f035a7b304df0aa841272a5483d8b4fd.tar.gz |
Create a link /boot -> /<efi>/boot, where <efi> is the mountpoint
of the EFI file system. This makes the EFI partition non-optional.
I don't think that the links are actually correct, given that all
the mount points are under /mnt when sysinstall is run as init.
(ie a non-upgrade). Thus: I think I need to go in once more, but
at least this doesn't get lost...
Diffstat (limited to 'usr.sbin')
-rw-r--r-- | usr.sbin/sade/install.c | 15 | ||||
-rw-r--r-- | usr.sbin/sysinstall/install.c | 15 |
2 files changed, 30 insertions, 0 deletions
diff --git a/usr.sbin/sade/install.c b/usr.sbin/sade/install.c index b6d26c9..329a0c0 100644 --- a/usr.sbin/sade/install.c +++ b/usr.sbin/sade/install.c @@ -1046,12 +1046,27 @@ installFilesystems(dialogMenuItem *self) } #if defined(__ia64__) else if (c1->type == efi && c1->private_data) { + char bootdir[FILENAME_MAX]; + char efi_bootdir[FILENAME_MAX]; PartInfo *pi = (PartInfo *)c1->private_data; if (pi->newfs && (!upgrade || !msgNoYes("You are upgrading - are you SURE you want to newfs /dev/%s?", c1->name))) command_shell_add(pi->mountpoint, "%s %s/dev/%s", pi->newfs_cmd, RunningAsInit ? "/mnt" : "", c1->name); command_func_add(pi->mountpoint, Mount, c1->name); + + /* + * Create a directory boot on the EFI filesystem and create a + * link boot on the root filesystem pointing to the one on the + * EFI filesystem. That way, we install the loader, kernel + * and modules on the EFI filesystem. + */ + sprintf(bootdir, "%s", RunningAsInit ? "/mnt" : ""); + sprintf(efi_bootdir, "%s/%s", bootdir, pi->mountpoint); + strcat(bootdir, "/boot"); + strcat(efi_bootdir, "/boot"); + Mkdir(efi_bootdir); + symlink(efi_bootdir, bootdir); } #endif } diff --git a/usr.sbin/sysinstall/install.c b/usr.sbin/sysinstall/install.c index b6d26c9..329a0c0 100644 --- a/usr.sbin/sysinstall/install.c +++ b/usr.sbin/sysinstall/install.c @@ -1046,12 +1046,27 @@ installFilesystems(dialogMenuItem *self) } #if defined(__ia64__) else if (c1->type == efi && c1->private_data) { + char bootdir[FILENAME_MAX]; + char efi_bootdir[FILENAME_MAX]; PartInfo *pi = (PartInfo *)c1->private_data; if (pi->newfs && (!upgrade || !msgNoYes("You are upgrading - are you SURE you want to newfs /dev/%s?", c1->name))) command_shell_add(pi->mountpoint, "%s %s/dev/%s", pi->newfs_cmd, RunningAsInit ? "/mnt" : "", c1->name); command_func_add(pi->mountpoint, Mount, c1->name); + + /* + * Create a directory boot on the EFI filesystem and create a + * link boot on the root filesystem pointing to the one on the + * EFI filesystem. That way, we install the loader, kernel + * and modules on the EFI filesystem. + */ + sprintf(bootdir, "%s", RunningAsInit ? "/mnt" : ""); + sprintf(efi_bootdir, "%s/%s", bootdir, pi->mountpoint); + strcat(bootdir, "/boot"); + strcat(efi_bootdir, "/boot"); + Mkdir(efi_bootdir); + symlink(efi_bootdir, bootdir); } #endif } |