#
62f80a2a |
|
04-Jul-2021 |
Jessica Hamilton <jessica.l.hamilton@gmail.com> |
loader: fetch all potential boot partitions for device This also keeps the functionality of hrev53848, which simplifies the list of disks searched for bootable partitions; however, it maintains the previous behaviour of platform_get_boot_partitions that continues to iterate over a list of possible boot partitions, which should allow finding a bootable BFS partition better in more circumstances. Particularly, there are numerous reports of the UEFI loader entering the boot menu despite it finding a bootable partition, which this should address. EFI's device_contains_partition is also structured such that it compares the disk GPT table of the partition the loader is querying of the EFI disk's GPT table, in the case that there are multiple disks, as the most reliable method of comparison, with a generic fallback for non-GPT disks, which will be less reliable. This reverts commit 0d932a49ada8af6314cd3f20c3f597143f1f555d. Change-Id: I5fac8608035d56b8bb4dc6c3d495ec6db42fa9b7 Reviewed-on: https://review.haiku-os.org/c/haiku/+/4149 Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>
|
#
0d932a49 |
|
08-Feb-2020 |
Fredrik Holmqvist <fredrik.holmqvist@gmail.com> |
Revert "loader: fetch all potential boot partitions for boot device." This reverts commit e888217124fa9fb214ffa790e6a66dca3917f25e. Change-Id: I06be82ac863f615796d9edc86f5ef903b8123a9d Reviewed-on: https://review.haiku-os.org/c/haiku/+/2231 Reviewed-by: waddlesplash <waddlesplash@gmail.com>
|
#
e1b41d44 |
|
13-Jun-2010 |
Andreas Faerber <andreas.faerber@web.de> |
boot loader: Wire up net_stack_cleanup() Add a platform cleanup hook before starting the kernel. The openfirmware and PXE loaders clean up their network stack there, while the other loaders currently do nothing. This closes ticket #6166 Change-Id: I34765892dfd9b2310c6af97c9ff7d414afae49e5 Reviewed-on: https://review.haiku-os.org/c/50 Reviewed-by: Adrien Destugues <pulkomandy@gmail.com> Reviewed-by: waddlesplash <waddlesplash@gmail.com>
|
#
f286626c |
|
17-May-2017 |
Jessica Hamilton <jessica.l.hamilton@gmail.com> |
pxe_ia32: add missing include for boot::Partition
|
#
e8882171 |
|
13-May-2017 |
Jessica Hamilton <jessica.l.hamilton@gmail.com> |
loader: fetch all potential boot partitions for boot device. This allows the loader to skip BFS partitions that don't contain a bootable system. Useful when you have a BFS data partition that comes before the system partition when iterated over. Currently, only the UEFI loader actually returns more than one possible partition.
|
#
766f6823 |
|
06-Aug-2016 |
Adrien Destugues <pulkomandy@gmail.com> |
Fix build and first runtime problem in network boot The boot still crashes some time later, but at least it is easier to test now. - PackageFS included in the net boot archive - Tell the system it is booted "from image" when netbooting
|
#
93cb9538 |
|
20-Jun-2012 |
Alex Smith <alex@alex-smith.me.uk> |
Don't store a KMessage in kernel_args for the boot volume, only the buffer address/size. Pointers in kernel_args are going to be changed to unconditionally use 64-bit storage (to make kernel_args compatible with both the x86 and x86_64 kernels). KMessage stores a pointer to its buffer, however since KMessage is used outside of the boot code it is undesirable to change it to use 64-bit storage for the pointer as it may add additional overhead on 32-bit builds. Therefore, only store the buffer address and size and then construct a KMessage from those in the kernel.
|
#
9e8dc2a9 |
|
14-Jul-2007 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
[Sorry, couldn't split this one up any further.] * Images preloaded by the boot loader had to be modules to be of any use to the kernel. Extended the mechanism so that any images not accepted by the module code would later be tried to be added as drivers by the devfs. This is a little hacky ATM, since the devfs manages the drivers using a hash map keyed by the drivers inode ID, which those drivers obviously don't have. * The devfs emulates read_pages() using read(), if the device driver doesn't implement the former (all old-style drivers), thus making it possible to BFS, which uses the file cache which in turn requires read_pages(), on the device. write_pages() emulation is still missing. * Replaced the kernel_args::boot_disk structure by a KMessage, which can more flexibly be extended and deals more gracefully with arbitrarily-size data. The disk_identifier structure still exists, though. It is added as message field in cases where needed (non net boot). Moved the boot_drive_number field of the bios_ia32 platform specific args into the message. * Made the stage 1 PXE boot loader superfluous. Moved the relevant initialization code into the stage 2 loader, which can now be loaded directly via PXE. * The PXE boot loader does now download a boot tgz archive via TFTP. It does no longer use the RemoteDisk protocol (it could actually be removed from the boot loader). It also parses the DHCP options in the DHCPACK packet provided by PXE and extracts the root path to be mounted by the kernel. * Reorganized the boot volume search in the kernel (vfs_boot.cpp) and added support for network boot. In this case the net stack is initialized and the network interface the boot loader used is brought up and configured. Since NBD and RemoteDisk are our only options for net boot (and those aren't really configurable dynamically) ATM, the the boot device is found automatically by the disk device manager. Booting via PXE does work to some degree now. The most grievous problem is that loading certain drivers or kernel modules (or related activity) causes a reboot (likely a triple fault, though one wonders where our double fault handler is on vacation). Namely the keyboard and mouse input server add-ons need to be deactivated as well as the media server. A smaller problem is the net server, which apparently tries to (re-)configure the network interface we're using to boot, which obviously doesn't work out that well. So, if all this stuff is disabled Haiku does fully boot, when using the RemoteDisk protocol (not being able to use keyboard or mouse doesn't make this a particular fascinating experience, though ;-)). I had no luck with NBD -- it seemed to have protocol problems with the servers I tried. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21611 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
43792b9e |
|
12-Jan-2007 |
Marcus Overhagen <marcusoverhagen@gmail.com> |
propagate required settings for the remote disk from boot loader to kernel (client-ip, server-ip, server-port) git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19780 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
dd241323 |
|
25-Oct-2006 |
Marcus Overhagen <marcusoverhagen@gmail.com> |
started the PXE UNDI network device support git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19127 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
93cb9538be54a2dd4ab6097453ac7d521a9a0b6c |
|
20-Jun-2012 |
Alex Smith <alex@alex-smith.me.uk> |
Don't store a KMessage in kernel_args for the boot volume, only the buffer address/size. Pointers in kernel_args are going to be changed to unconditionally use 64-bit storage (to make kernel_args compatible with both the x86 and x86_64 kernels). KMessage stores a pointer to its buffer, however since KMessage is used outside of the boot code it is undesirable to change it to use 64-bit storage for the pointer as it may add additional overhead on 32-bit builds. Therefore, only store the buffer address and size and then construct a KMessage from those in the kernel.
|
#
9e8dc2a9bbbe768acdfd224a6a4af01918bb4ce0 |
|
14-Jul-2007 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
[Sorry, couldn't split this one up any further.] * Images preloaded by the boot loader had to be modules to be of any use to the kernel. Extended the mechanism so that any images not accepted by the module code would later be tried to be added as drivers by the devfs. This is a little hacky ATM, since the devfs manages the drivers using a hash map keyed by the drivers inode ID, which those drivers obviously don't have. * The devfs emulates read_pages() using read(), if the device driver doesn't implement the former (all old-style drivers), thus making it possible to BFS, which uses the file cache which in turn requires read_pages(), on the device. write_pages() emulation is still missing. * Replaced the kernel_args::boot_disk structure by a KMessage, which can more flexibly be extended and deals more gracefully with arbitrarily-size data. The disk_identifier structure still exists, though. It is added as message field in cases where needed (non net boot). Moved the boot_drive_number field of the bios_ia32 platform specific args into the message. * Made the stage 1 PXE boot loader superfluous. Moved the relevant initialization code into the stage 2 loader, which can now be loaded directly via PXE. * The PXE boot loader does now download a boot tgz archive via TFTP. It does no longer use the RemoteDisk protocol (it could actually be removed from the boot loader). It also parses the DHCP options in the DHCPACK packet provided by PXE and extracts the root path to be mounted by the kernel. * Reorganized the boot volume search in the kernel (vfs_boot.cpp) and added support for network boot. In this case the net stack is initialized and the network interface the boot loader used is brought up and configured. Since NBD and RemoteDisk are our only options for net boot (and those aren't really configurable dynamically) ATM, the the boot device is found automatically by the disk device manager. Booting via PXE does work to some degree now. The most grievous problem is that loading certain drivers or kernel modules (or related activity) causes a reboot (likely a triple fault, though one wonders where our double fault handler is on vacation). Namely the keyboard and mouse input server add-ons need to be deactivated as well as the media server. A smaller problem is the net server, which apparently tries to (re-)configure the network interface we're using to boot, which obviously doesn't work out that well. So, if all this stuff is disabled Haiku does fully boot, when using the RemoteDisk protocol (not being able to use keyboard or mouse doesn't make this a particular fascinating experience, though ;-)). I had no luck with NBD -- it seemed to have protocol problems with the servers I tried. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21611 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
43792b9eeda5ba6d5fc57b0779537681a022cfeb |
|
12-Jan-2007 |
Marcus Overhagen <marcusoverhagen@gmail.com> |
propagate required settings for the remote disk from boot loader to kernel (client-ip, server-ip, server-port) git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19780 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
dd2413230f188adad068d984cfce9c9f29c6d0f8 |
|
25-Oct-2006 |
Marcus Overhagen <marcusoverhagen@gmail.com> |
started the PXE UNDI network device support git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19127 a95241bf-73f2-0310-859d-f6bbb57e9c96
|