From bea22f624015d11d59d3b93d76358e035ccc013a Mon Sep 17 00:00:00 2001 From: Michael Lotz Date: Sat, 14 Feb 2009 22:51:50 +0000 Subject: [PATCH] * Add overlay filesystem to the boot floppy and normal image. * When booting from an iso, mount the boot volume with the overlay layer. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29202 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- build/jam/FloppyBootImage | 4 ++-- build/jam/HaikuImage | 2 +- src/system/kernel/fs/vfs_boot.cpp | 6 +++++- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/build/jam/FloppyBootImage b/build/jam/FloppyBootImage index caff58b654..728dacb579 100644 --- a/build/jam/FloppyBootImage +++ b/build/jam/FloppyBootImage @@ -33,8 +33,8 @@ BOOT_ADD_ONS_NET = BEOS_ADD_ONS_BUS_MANAGERS = pci $(X86_ONLY)isa ide scsi config_manager agp_gart usb ; -BEOS_ADD_ONS_FILE_SYSTEMS = bfs iso9660 ; -#cdda fat googlefs iso9660 nfs ; +BEOS_ADD_ONS_FILE_SYSTEMS = bfs iso9660 overlay ; +#cdda fat googlefs nfs ; # modules diff --git a/build/jam/HaikuImage b/build/jam/HaikuImage index 8df4682d5b..e17f14a098 100644 --- a/build/jam/HaikuImage +++ b/build/jam/HaikuImage @@ -138,7 +138,7 @@ BEOS_ADD_ONS_DRIVERS_NET = $(X86_ONLY)3com $(X86_ONLY)broadcom440x BEOS_ADD_ONS_BUS_MANAGERS = pci $(X86_ONLY)ps2 $(X86_ONLY)isa ide scsi config_manager agp_gart usb firewire $(X86_ONLY)acpi ; -BEOS_ADD_ONS_FILE_SYSTEMS = bfs cdda ext2 fat iso9660 nfs $(GPL_ONLY)reiserfs ; +BEOS_ADD_ONS_FILE_SYSTEMS = bfs cdda ext2 fat iso9660 nfs overlay $(GPL_ONLY)reiserfs ; #googlefs $(GPL_ONLY)ntfs ; diff --git a/src/system/kernel/fs/vfs_boot.cpp b/src/system/kernel/fs/vfs_boot.cpp index eee6ef29fa..bdacabd0dd 100644 --- a/src/system/kernel/fs/vfs_boot.cpp +++ b/src/system/kernel/fs/vfs_boot.cpp @@ -442,8 +442,12 @@ vfs_mount_boot_file_system(kernel_args *args) if (bootPartition->GetPath(&path) != B_OK) panic("could not get boot device!\n"); + const char *fsName = NULL; + if (strcmp(bootPartition->ContentType(), "ISO9660 File System") == 0) + fsName = "iso9660:overlay"; + TRACE(("trying to mount boot partition: %s\n", path.Path())); - gBootDevice = _kern_mount("/boot", path.Path(), NULL, 0, NULL, 0); + gBootDevice = _kern_mount("/boot", path.Path(), fsName, 0, NULL, 0); if (gBootDevice >= B_OK) break; }