The boot loader now has special support for being booted from a boot image

like floppy or CD boot.
This allows it to reduce the number of scans needed to identify the boot
partition - when booted from a real floppy, this speeds up the boot
process by a magnitude.
Also, the loader now has a fall back in case there were no "boot" links
on the disk - the current boot floppy script doesn't create them.
With these changes, I was able to boot into a HD based Haiku installation
from a floppy disk. It's not yet enough to boot from CD (as the boot
device selection is a bit too simplistic right now), but it will eventually
come next. Testing is a lot slower here, though, as neither qemu nor
Bochs support multi-session CDs (at least I have no idea how to get them
to do this).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14380 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Axel Dörfler
2005-10-14 11:34:18 +00:00
parent 313ffb09da
commit e3fcb58ebb
8 changed files with 112 additions and 40 deletions
+6 -2
View File
@@ -10,6 +10,8 @@
#include <disk_device_manager.h>
struct file_system_module_info;
namespace boot {
class Partition : public Node, public partition_data {
@@ -25,8 +27,8 @@ class Partition : public Node, public partition_data {
Partition *AddChild();
status_t Mount(Directory **_fileSystem = NULL);
status_t Scan(bool mountFileSystems);
status_t Mount(Directory **_fileSystem = NULL, bool isBootDevice = false);
status_t Scan(bool mountFileSystems, bool isBootDevice = false);
void SetParent(Partition *parent) { fParent = parent; }
Partition *Parent() const { return fParent; }
@@ -38,6 +40,8 @@ class Partition : public Node, public partition_data {
int FD() const { return fFD; }
private:
status_t _Mount(file_system_module_info *module, Directory **_fileSystem);
int fFD;
NodeList fChildren;
Partition *fParent;