Commit Graph

276 Commits

Author SHA1 Message Date
Jonathan Lemon
9ebf93dc6d This is `liloboot', which creates a file which can be treated like a
Linux kernel image, and is designed to be dropped into a Linux system
and booted via LILO.  Once booted, the user is greeted by the FreeBSD
loader.  This still isn't quite complete, as the the root= specification
from LILO isn't currently passed to the loader yet.
2000-07-17 17:06:04 +00:00
John Baldwin
1dce5cb37f The new and improved boot0, v1.1. This version adds the following:
- Autodetection and support of the BIOS EDD extensions to work around the
  1024 cylinder limit on all but really ancient BIOS's.
- To work around some BIOS's which break when EDD is used with older drives,
  we only attempt to use EDD if the cylinder is > 1023.
- Since this new code required more space than we had left, expand boot0 to
  2 sectors (1024 bytes) in length.
- Add support for boot0 being multiple sectors using predefined constants.
  If boot0 needs to be extended in the future, all that is required is
  bumping the NUM_SECTORS constant.
- Now that we have more room to work with, add a few more fs type
  descriptions while making others more verbose.
2000-07-12 18:11:54 +00:00
John Baldwin
18601b5712 Remove commented out NOMAN variable. 2000-07-07 20:37:11 +00:00
John Baldwin
8dfe6fb59c - Inline all the functions that are only called once. This results in a
savings of 68 bytes in boot2.
- Also add a comment warning that you can't remove the empty exit()
  function.
2000-07-06 01:51:27 +00:00
John Baldwin
54ff3ae038 Doh. The disklabel is not 0x200 bytes of zeros, but it is 0x200 bytes long. 2000-07-06 00:29:40 +00:00
John Baldwin
a6bef20793 Clarify the comments in here a bit. The first sector of boot2 is not just
zeros, it is actually the disklabel itself.  boot2.ldr is simply a
placeholder in the boot2 binary.
2000-07-06 00:22:50 +00:00
John Baldwin
bd61ce880f Emulate the WBINVD instruction when it is called by the BIOS. 2000-07-06 00:13:21 +00:00
John Baldwin
0b74850760 Change the fault message to say 'BTX halted' isntead of 'System halted' to
avoid confusion.

Submitted by:	George Scott <George.Scott@its.monash.edu.au>
2000-06-29 08:24:50 +00:00
John Baldwin
52f5035190 Rework the detecting of the rdmsr and wrmsr instructions in the v86
monitor so that the codepath is cleaner and easier to maintain in the
future.
2000-06-29 01:25:31 +00:00
John Baldwin
bce816b9cc - Don't blindly assume that there are 8 hard drives installed. Instead,
use the BIOS Equipment List to determine how many hard drives are
  installed and if the drive number we received in %dl is valid.
- Don't bother to disable interrupts when setting up the stack.  The 8086
  and beyond implicitly disable interrupts after an instruction that sets
  %ss (for example, a pop or a mov) so that you can safely set %ss and %sp
  in two consecutive instructions.  An exception to this is the lss
  instruction, which can set both registers simultaneously and thus doesn't
  need this hack.
- Add support for EDD BIOS extensions to support booting off of hard drives
  of nearly arbitrary length.
2000-06-27 20:04:10 +00:00
John Baldwin
2960c255b4 Comment this. 2000-06-26 23:58:04 +00:00
John Baldwin
cbf3fb883e Add in support for EDD to support large disks via LBA. This uses a
method similar to that of the loader to avoid potentially breaking older
drives in that we only use EDD if the desired cylinder is > 1023.
2000-06-26 22:57:16 +00:00
John Baldwin
35bdac5bbd Comment this bad boy. Hopefully the next person that comes along won't
have to spend a few hours reading the code to figure all this out.
2000-06-19 22:50:46 +00:00
John Baldwin
335dd56674 - Add some more details to the 'lsdev' output for FAT file systems.
- Add in support for the EDD (Enhanced Disk Drive) BIOS extensions to
  use LBA mode for accessing drives past cylinder 1024.  This should allow
  us to load a kernel from anywhere on a newer drive up to 2 TB.  Part
  of this came from the PR below.

PR:		i386/13847
Submitted by:	Tor Egge <Tor.Egge@fast.no>
2000-06-19 17:44:40 +00:00
John Baldwin
1ddb0ab555 Add support for emulating the RDMSR and WRMSR instructions into BTX. In
theory, this should allow the K7V Athlon motherboard to boot ok with boot
virus protection enabled.  However, I have no hardware to test this.  It
shouldn't break anything though. :)

Prodded by:	Kelly Yancey <kbyanc@posi.net>
2000-06-17 06:45:40 +00:00
Paul Saab
cc3d937224 Delay calling the device cleanup routines until the absolute last
moment.  We were cleaning up after PXE too early and the module
dependancy code would not be able to load any files if it needed
too.
2000-06-14 10:34:29 +00:00
Ruslan Ermilov
5737d0e1d4 Treat \t and \n inside /boot.config as whitespaces.
PR:		19215
2000-06-13 13:07:53 +00:00
Daniel C. Sobral
5ae8a644f6 Bump loader version due to copyin, copyout, setenv&cia. 2000-06-07 22:12:21 +00:00
John Baldwin
e1efa49a84 Convert the short stub of real-mode code into 16-bit assembly. 2000-05-24 02:20:34 +00:00
John Baldwin
a1a611ed6b Grrr, fix a silly 'movl' -> 'movw' typo in both pxeldr and cdldr. Also,
remove unnecessary cruft from the Makefiles for both.
2000-05-23 12:31:32 +00:00
John Baldwin
af54a4fe47 Clean up some more 16-bit code and get rid of more m4 macros. 2000-05-23 12:28:31 +00:00
John Baldwin
638bac9fc0 Clean up all of the 16-bit assembly code in the x86 bootstrap to work
with the new binutils.  Now that we have a decent assembler, all the old
m4 macros are no longer needed.  Instead, straight assembly can be used
since as(1) now understands 16-bit addressing, branches, etc.  Also,
several bugs have been fixed in as(1), allowing boot0.s to be further
cleaned up.
2000-05-23 12:18:49 +00:00
Daniel C. Sobral
536f89a623 This file got repo-copied to common/. 2000-05-19 08:44:48 +00:00
Daniel C. Sobral
a2aa3427cf Move man page directives to common/Makefile.inc. 2000-05-19 08:41:45 +00:00
Daniel C. Sobral
d9f7c44adf Make corrections to allow for Alpha. 2000-05-18 12:44:50 +00:00
Doug White
325bde0fb7 Remove metion of the 'magic options.' Apparently PXE doesn't require the
special options on 0.99c (it mumbles something about 'PXE server not found'
but works anyway), and it won't work at all with PXE 2.0.
2000-05-09 18:28:07 +00:00
John Baldwin
773065b3b8 Switch to using the .code16 as(1) directive and using 16-bit assembly
code instead of using 32-bit code and having to just "know" that it's
really 16-bit instructions when things run.  This also allows the code
to use fewer macros and more actual assembly statements, which eases
maintenance.  Unfortunately, due to as(1) brokenness, we still use m4
macros for all 16-bit addresses, and all short jumps (i.e., 8-bit
relative addresses in the jump instruction) must be wrapped in .code32
directives to avoid useless bloat by as(1).  This also fixes a few
problems that were preventing boot0 from compiling with the latest
and greatest version of as(1).
2000-05-05 13:22:10 +00:00
Paul Saab
90c25bd74a Remove the static heap. It is unknown why it was needed in the
beginning, but it no longer is required.  This has been tested with
many different revisions of the PXE rom from Intel.
2000-05-05 07:24:03 +00:00
Daniel C. Sobral
4eb5b7979d Make documentation on recently added heap? command reflect reality. 2000-05-04 22:51:21 +00:00
Daniel C. Sobral
a1d54dfc62 Add "heap?" to loader's man page. 2000-05-04 21:26:26 +00:00
Daniel C. Sobral
19c80876dc Further improve ordering. 2000-05-04 21:22:55 +00:00
Daniel C. Sobral
c45393b59c Sort entries in FreeBSD-specific FICL commands. 2000-05-04 21:18:26 +00:00
Doug White
55ebf88553 Add man page for pxeboot.
Reviewed By:	asmodai
2000-05-02 05:01:38 +00:00
Paul Saab
482cb52dcb Wrap the failure warnings around PXE_DEBUG in the cleanup routine.
It does not matter if they fail, so dont print anything about it
unless we are debugging.
2000-05-01 17:55:05 +00:00
Boris Popov
801e789e01 Update loader logic to distinguish modules vs. files.
Add support for module metadata. The old way of dependancy
handling will be supported for a while.

Reviewed by:	peter
2000-05-01 17:41:25 +00:00
Paul Saab
95394e643f Fall back to /pxeroot as the location of the NFS exported directory
if we are not given one by dhcp.
Remove extra includes while I am here.

Reminded by:	jlemon
2000-04-29 23:08:49 +00:00
Jonathan Lemon
8e30378f89 Teach the loader about the ext2fs filesystem, extended partitions, and
the new readdir function.
2000-04-29 20:49:33 +00:00
Paul Saab
f14ad6978f Make PXE do a dhcp request to find out where its files are. The
DHCP server is no longer required to also act as the NFS/TFTP
server.
2000-04-27 12:30:28 +00:00
Paul Saab
e7fd6f003e Don't report errors when we UDP_WRITE fails with a status of 1. 2000-04-27 03:23:50 +00:00
John Baldwin
eeb5db2946 Now that we are compiling PXE into libi386, we don't need ../libi386 in
.PATH anymore.
2000-04-26 19:54:49 +00:00
Paul Saab
d08ae64b1d Bring support in for Intel Wired for Management 1.1 (PXE 0.99 and
below).  This did not work previously because interrupts were
disabled when PXE calls were being made, and they must be enabled.
This should also allow us to be compliant with all newer PXE rom's
from Intel.

For PXE 0.99, this has been tested using the Intel N440BX motherboard
and I am confident it will work on the Intel L440GX motherboard.

Lots of help/information from: jhb, peter

I would like to thank Michael Johnston <michael.johnston@intel.com>,
Mike Henry <mike.henry@intel.com>, and all the other PXE developers
at Intel for their help, and information in helping solve this
problem.
2000-04-26 07:38:40 +00:00
John Baldwin
36273c5d79 Don't disable interrupts when calling a vm86 mode interrupt or routine
from user mode.  Don't disable interrupts when returning from vm86 mode
to user mode either.  Now, we only disable interrupts before calling a
hardware interrupt handler, which is the only time we _should_ be
disabling interrupts.

Because of this, err, feature, any routine that one called in vm86 mode
had to re-enable interrupts by setting the interrupt flag or interrupts
would remain disabled even after the routine returned.  For example, I
have a simple debugging routine that uses a vm86 mode function to dump
any arbitrary memory word that I use to read the BIOS timer or any other
memory location.  This function does 1 load instruction from memory and
then returns.  Since it didn't re-enable interrupts, the first time I
called it to read the BIOS timer, it disabled interrupts.   This also
affected the PXE bootstrap as it needs interrupts enabled while it is
processing.  This patch fixes both of those situations so that those
functions do not worry about having to enable interrupts.  Hardware
interrupt handlers worked fine with the old code because they always
enable interrupts as part of their routine.

If you have any problems with the loader after this commit, please
let me know.  I'd like to MFC it in a week or two since PXE support
needs it.

Noticed by:	ps, Michael Johnston <michael.johnston@intel.com>
2000-04-26 04:35:25 +00:00
Paul Saab
43e797fd31 Move the building of the PXE module into libi386. 2000-04-21 22:06:02 +00:00
Paul Saab
2339dc037f Make the loader a little smarter about when it is and is not allowed
to call PXE.
2000-04-21 04:58:51 +00:00
Paul Saab
5d5b2077f1 Don't call the PXE cleanup routine if PXE is not enabled. This
should fix the "Invalid partition table" error people were seeing.
2000-04-21 03:04:16 +00:00
Paul Saab
6450dd3cb4 Add a cleanup function. This is needed for PXE where you should
shutdown the UNDI and unload the stack.
2000-04-20 00:06:15 +00:00
Paul Saab
e938899cc3 Use !PXE api over PXENV+ api.
Magic trampoline by: peter (at 4am and after a good whipping at airhockey)
Do a better job of returning and detecting errors.
2000-04-19 11:22:38 +00:00
John Baldwin
2cb6d95d48 Add a missing dependency: boot2 depends on the BTX kernel. 2000-04-11 14:49:13 +00:00
Jordan K. Hubbard
4fbd258bcc Nuke duplicate struct declaration from somebody's paste-o 2000-04-08 22:50:18 +00:00
Paul Saab
d8af287caf Make PXE use the UDP API. This allows for both TFTP and NFS support.
You may specify TFTP or NFS via compile time options in the loader,
but not both at this time.

Also, remove a warning about not knowing how to boot from network
devices.  We can obviously do that now.
2000-04-08 01:22:14 +00:00