Commit Graph

161 Commits

Author SHA1 Message Date
Jérôme Duval
1ea618c556 added BOOT_MODE define instead of adding dprintf_no_syslog()
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22478 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-07 19:52:24 +00:00
Jérôme Duval
94302e2f82 dprintf_no_syslog is needed for openfirmware platform
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22464 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-06 18:40:32 +00:00
Ingo Weinhold
6748659272 Added an identify_file_system() hook to the FS modules. The boot loader
does no longer give partitioning systems precedence over file systems.
The one with the greater identification priority wins. ATM, if a file
system wins, we still mount the first file system that recognized the
partition at all, though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22446 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-04 23:16:31 +00:00
Ingo Weinhold
0e69ce7702 Define _BOOT_MODE.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22427 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-03 22:10:06 +00:00
Axel Dörfler
4421183286 * Changed Ld rule to allow adding resource files.
* Changed ResAttr rule to allow not deleting the file before writing the
  attributes.
* Added application signatures for the runtime_loader and zbeos, just so that
  they may have an icon, too (hint, hint) :-)
* As a side effect, this also let's FileTypes handle these two as apps (even
  though they aren't), so that I can close bug #606.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22412 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-02 15:22:13 +00:00
Jérôme Duval
ec9f5ea799 fixed ppc build. It was broken since r21611. Obviously it's not tested.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21626 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-07-16 19:12:37 +00:00
Ingo Weinhold
9e8dc2a9bb [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
2007-07-15 02:10:15 +00:00
Ingo Weinhold
018cf36396 Clear out/initialize IDT and GDT using their virtual addresses after
they have been mapped. The previous method relied on their physical
pages living in the identity mapped region, which they wouldn't, when
the boot loader allocated enough memory before.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21610 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-07-15 00:54:16 +00:00
Ingo Weinhold
bf8e5ecab7 * Reduced the region allocated for the uncompressed data to 16 MB. With
32 MB the kernel's VM initialization code would run into trouble.
  Accessing freshly mapped memory in the generic page mapper would
  result in a page fault. To be investigated.
* Apparently in the boot loader the file systems are responsible for
  resolving symbolic links (instead of the VFS). We do that now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21608 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-07-15 00:45:10 +00:00
Ingo Weinhold
dcb3c6c321 * Added support for symlinks.
* Prepared for other uses than just boot floppies (/CDs). We first try to
  inflate the contents of the given device at offset 0 before using the
  floppy disk offset. This will make it easy to mount tgz files loaded via
  network or built into the boot loader itself.
* Increased the max possible size of inflated data to 32 MB.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21583 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-07-07 01:49:02 +00:00
Ingo Weinhold
4dac6ac8de Allow building the BootLoaderTest (and zlib) for BeOS.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21581 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-07-07 01:28:04 +00:00
Axel Dörfler
eef8417e27 * Added (non-working) EFI module to the boot loader and its test application.
* Fixed a warning in efi_gpt.cpp.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21532 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-06-30 15:31:01 +00:00
Axel Dörfler
8ba7bc695a * Calms down a superfluous GCC 2 warning.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21468 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-06-20 00:51:20 +00:00
Axel Dörfler
b2ed0e7acf Implemented "fail_safe_video_mode" boot option; if you're using it, the app_server
will not load any graphics driver (other than VESA).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21310 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-06-03 20:20:19 +00:00
Ingo Weinhold
87ac9f1d46 Fixed boot loader BFS build which I broke with my recent changes.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20861 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-27 14:31:18 +00:00
Travis Geiselbrecht
831486a2d3 Turn the assembly optimized memcpy (simple rep movsd) back on for x86. Had to hack around the make system a bit, and the result is pretty nasty, specifically due to the amount of places in the system where various targets poke their fingers into the libroot directory.
The solution is less than optimal, but should work for now.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20722 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-16 06:17:14 +00:00
Oliver Tappe
07628e25b1 * changed to use TARGET_CC instead of host as.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20229 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-25 15:47:10 +00:00
Ingo Weinhold
550f2171c1 Mostly aesthetical changes. "jam pxehaiku" worked here before and still
does. Marcus, what problem did you encounter?

The BuildPXEstage1 actions use "as" ATM, which is not correct, since it
should actually use the target platform assembler (i.e.
cross-compilation won't work). It should be replaced by $(TARGET_CC),
but that results in the following errors, when compiling with gcc 2.95.3:

/home/bonefish/develop/haiku/haiku/src/system/boot/platform/pxe_ia32/pxe_stage1.S:
Assembler messages:
/home/bonefish/develop/haiku/haiku/src/system/boot/platform/pxe_ia32/pxe_stage1.S:39:
Error: missing ')'
/home/bonefish/develop/haiku/haiku/src/system/boot/platform/pxe_ia32/pxe_stage1.S:96:
Error: `0x6(%edx)' is not a valid 16 bit base/index expression
/home/bonefish/develop/haiku/haiku/src/system/boot/platform/pxe_ia32/pxe_stage1.S:102:
Error: `0xa(%edx)' is not a valid 16 bit base/index expression
/home/bonefish/develop/haiku/haiku/src/system/boot/platform/pxe_ia32/pxe_stage1.S:127:
Error: `2(%edx)' is not a valid 16 bit base/index expression
/home/bonefish/develop/haiku/haiku/src/system/boot/platform/pxe_ia32/pxe_stage1.S:128:
Error: `0(%edx)' is not a valid 16 bit base/index expression
/home/bonefish/develop/haiku/haiku/src/system/boot/platform/pxe_ia32/pxe_stage1.S:147:
Error: `16(%ebx)' is not a valid 16 bit base/index expression
/home/bonefish/develop/haiku/haiku/src/system/boot/platform/pxe_ia32/pxe_stage1.S:149:
Error: `20(%ebx)' is not a valid 16 bit base/index expression
/home/bonefish/develop/haiku/haiku/src/system/boot/platform/pxe_ia32/pxe_stage1.S:173:
Error: `2(%edx)' is not a valid 16 bit base/index expression
/home/bonefish/develop/haiku/haiku/src/system/boot/platform/pxe_ia32/pxe_stage1.S:174:
Error: `0(%edx)' is not a valid 16 bit base/index expression
/home/bonefish/develop/haiku/haiku/src/system/boot/platform/pxe_ia32/pxe_stage1.S:298:
Error: `(%esi)' is not a valid 16 bit base/index expression
/home/bonefish/develop/haiku/haiku/src/system/boot/platform/pxe_ia32/pxe_stage1.S:299:
Error: `(%edi)' is not a valid 16 bit base/index expression
/home/bonefish/develop/haiku/haiku/src/system/boot/platform/pxe_ia32/pxe_stage1.S:306:
Error: `(%esi)' is not a valid 16 bit base/index expression
/home/bonefish/develop/haiku/haiku/src/system/boot/platform/pxe_ia32/pxe_stage1.S:307:
Error: `(%edi)' is not a valid 16 bit base/index expression


For the gcc 4 configuration all but the first errors disappear. It looks
like these are bugs in older assembler version. Any reasonable
work-around?



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20043 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-02 09:42:22 +00:00
Jérôme Duval
5efe9479fe ACPI boot menu item is for bios_ia32
added a kernel settings option to disable ACPI



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19791 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-01-13 19:55:14 +00:00
Jérôme Duval
1f2d4a5e2d fix build
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19782 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-01-13 12:49:12 +00:00
Marcus Overhagen
43792b9eed 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
2007-01-12 22:27:48 +00:00
Marcus Overhagen
93b2b9ce66 made a copy
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19779 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-01-12 21:05:47 +00:00
Jérôme Duval
173acea776 added a boot menu option "Disable ACPI" and code to avoid loading the ACPI module when it's active. untested (because of sudden reboots when boot menu is used).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19777 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-01-12 20:01:08 +00:00
Axel Dörfler
32e2879f10 We now ignore all memory beyond the 4 GB barrier in 32-bit mode.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19743 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-01-08 17:44:32 +00:00
Axel Dörfler
3e161fb661 * Instead of its home-brewn solution, mmu_init() now uses the functions declared
in addr_range.h to add ranges to the arrays. This fixes the crashing bug reported
  by Larry Baydak.
* Added some more exported functions to kernel_args.cpp (prototypes are in addr_range.h).
* TODO: let the PPC/OpenFirmware implementation use those as well.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19739 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-01-08 12:14:06 +00:00
Marcus Overhagen
aa86f3868f Cleanup naming of PXE stage2. It no longer interferes with zbeos build process.
You can build it using:

TARGET_BOOT_PLATFORM=pxe_ia32 jam pxehaiku-loader

Building the PXE stage1 using:

TARGET_BOOT_PLATFORM=pxe_ia32 jam pxehaiku

is still broken. however, it can be build using:

cd src/system/boot/platform/pxe_ia32/
as -o pxe_stage1.o pxe_stage1.S
ld --oformat binary --Ttext 0x7C00 -o pxe_stage1.bin pxe_stage1.o
cp pxe_stage1.bin /tftpboot/pxehaiku


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19722 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-01-06 13:46:41 +00:00
Axel Dörfler
97ad772ada * Moved PXE page directory and page tables below the 1 MB limit.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19718 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-01-06 11:51:21 +00:00
Marcus Overhagen
dceaa55687 updated comment to account for PXE memory ranges
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19690 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-01-03 20:39:33 +00:00
Marcus Overhagen
ec9d1637b5 fixed copy & paste bugs
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19639 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-26 20:15:27 +00:00
Marcus Overhagen
db5b50665b Fixed gcc4 "error: cast from 'foobar *' to 'uint16' loses precision" problem by doubly casting.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19638 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-26 19:57:21 +00:00
Marcus Overhagen
203cf32414 Disabled debug output, but show errors with dprintf.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19637 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-26 19:30:33 +00:00
Marcus Overhagen
99784f5666 reduce debug output and add an additional test
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19636 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-26 19:21:31 +00:00
Marcus Overhagen
6d92b426ae Use only the immediate buffer to send data.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19635 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-26 19:18:30 +00:00
Marcus Overhagen
c4a05ef079 Determine client IP address and make it known to the ethernet interface.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19634 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-26 19:17:28 +00:00
Marcus Overhagen
6378dd7cf4 Fixed endian errors in UDP source and destination port handling.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19633 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-26 19:12:35 +00:00
Marcus Overhagen
569f4174e1 Fixed setting of the "don't fragment" bit, it was placed into the wrong byte.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19631 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-26 18:00:27 +00:00
Marcus Overhagen
03c2b46cdf fix build when TRACE is enabled
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19630 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-26 17:50:34 +00:00
Marcus Overhagen
c828668959 Return -1 when no data is available in receive hook, and 0 to indicate a retry, to make the net stack happy.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19629 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-26 16:23:37 +00:00
Marcus Overhagen
57a88e1c79 Implemented UNDI ethernet interface, receiving frames already appears to work.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19628 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-26 16:00:35 +00:00
Marcus Overhagen
5fd605e278 prettify formatting
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19623 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-25 03:05:00 +00:00
Marcus Overhagen
8456183dfd implemented the first pxe bios call
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19622 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-25 02:48:50 +00:00
Marcus Overhagen
578e3c2607 fixed the bugs, calling the pxe bios now works
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19621 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-25 02:48:08 +00:00
Marcus Overhagen
f7110a4231 first attempt to call the pxe bios, still untested
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19620 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-25 00:47:41 +00:00
Marcus Overhagen
84a31142ed Added some code to call real mode pxe bios functions, based on Axel's bios_ia32/bios.S
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19619 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-24 01:21:17 +00:00
Marcus Overhagen
0ecd75e986 Made the idt_descriptor symbol global to share it with pxe_ia32.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19618 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-24 01:18:52 +00:00
Marcus Overhagen
fd992230f6 Fixed pxe zbeos build, got broken by recent edid changes.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19617 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-24 01:02:24 +00:00
Axel Dörfler
d2de13bdd4 The boot loader (BIOS IA32 only) now chooses the default video mode by looking at the
EDID info from the monitor if available through VESA/DDC.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19588 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-21 14:20:17 +00:00
Axel Dörfler
d6edf65b05 Fixed error checks for EDID retrieval.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19582 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-20 22:49:53 +00:00
Axel Dörfler
5d7d960fac Added EDID version 1 retrieval from VESA; doesn't do anything yet besides dumping the
info to the serial line - not tested yet (as Qemu doesn't support DDC/EDID).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19580 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-20 21:44:03 +00:00
Marcus Overhagen
8d16d3335d added ethernet interface framework, taken from openfirmware boot platform
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19453 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-09 22:52:23 +00:00