summaryrefslogtreecommitdiffstats
path: root/sys/boot/i386/loader
Commit message (Collapse)AuthorAgeFilesLines
* Temperarly disable building in the bzip2 support by default so we can fitobrien2005-06-011-1/+1
| | | | on the i386 floppies. Sigh, I hate floppies.
* Put bzip2 support on equal footing with gzip support.obrien2005-05-311-1/+1
| | | | | | Enable bzip2 support by default, set LOADER_NO_BZIP2_SUPPORT to disable it. Pointy hat to: sobomax
* - Add support to the loader for multiple consoles.jhb2005-05-271-4/+8
| | | | | | | | | | | | | - Teach the i386 and pc98 loaders to honor multiple console requests from their respective boot2 binaries so that the same console(s) are used in both boot2 and the loader. - Since the kernel doesn't support multiple consoles, whichever console is listed first is treated as the "primary" console and is passed to the kernel in the boot_howto flags. PR: kern/66425 Submitted by: Gavin Atkinson gavin at ury dot york dot ac dot uk MFC after: 1 week
* NOFORTH -> NO_FORTHru2004-12-211-1/+1
|
* Remove the last vestiges of the userconfig option. None of this actuallyscottl2004-12-011-8/+0
| | | | did anything, so this commit should be considered a NO-OP.
* Pick up loader.rc from its old home.ru2004-11-291-1/+1
|
* Disable the beastie menu. It offends some and annoys everyone else, and I'mscottl2004-11-292-18/+1
| | | | | frankly tired of the controversy. When people ask me why FreeBSD isn't user- friendly, I'll tell them that I tried. RIP.
* Respect RB_MULTIPLE flag.simokawa2004-10-221-0/+2
|
* Document boot_cdrom, boot_multicons, and boot_serial.ru2004-09-301-1/+1
| | | | | Reduce diffs between help.common and loader(8). Mention that boot_userconfig is currently a no-op.
* Add the loader side of support for preloading ELF relocatable objectiedowse2004-08-291-0/+4
| | | | | | | | | | format modules, which are currently only used on the amd64 platform. This initial implementation just parses enough of the module to allow it to extract dependencies and load all the bits into the right place in memory, so the kernel must still do the full relocation and linking. The details of the loaded sections are passed to the kernel by supplying a copy of the ELF section header table as module metadata with the MODINFOMD_SHDR tag.
* Fixed misspellings of 0 as NULL.bde2004-03-141-2/+2
|
* For some reason crt0.o needs to be linked first for pxeboot(8) toru2004-02-271-2/+5
| | | | | | work. This is odd because loader(8) doesn't suffer from this problem. Perhaps pxeboot bootstrap can be fixed to handle this better. Anyway, PXE booting should work again.
* Clean CLEANFILES.ru2004-02-121-1/+1
|
* kzip(8) is long dead.ru2004-02-111-2/+0
|
* - Factor out -nostdlib to an upper level Makefile.inc.ru2004-02-091-13/+8
| | | | | | | | | | | - Now that bsd.prog.mk deals with programs linked with -nostdlib better, and has a notion of an "internal" program, use PROG where possible. This has a good impact on the contents of .depend files and causes programs to be linked with cc(1). XXX: boot2 couldn't be converted as it's actually two programs. Tested on: i386, amd64
* Argh, unbreak "make depend" for AMD64.ru2004-02-071-1/+1
| | | | Reported by: kris
* - Removed -elf which is not a valid gcc(1) option anymore.ru2004-02-071-4/+0
| | | | - Removed -ffreestanding; it's enforced by ../Makefile.inc.
* Untangle building of AMD64 boot code.ru2004-02-071-1/+1
| | | | Tested on: amd64 (sledge)
* First round of cleanups to sys/boot/ makefiles:ru2004-02-061-42/+21
| | | | | | | | | | | | - do not use PROG for what's not a real C program, - use sys.mk transformation rules where possible, - only create the "machine" symlink on AMD64, - removed MAINTAINER lines in individual makefiles, - added the LIBSTAND defitinion to <bsd.libnames.mk>, - somewhat better contents in .depend files. Tested on: i386, amd64 Prodded by: bde
* Inherit BINDIR from a parent Makefile.inc.ru2004-02-061-1/+0
|
* Only include ../Makefile.inc once in loader/Makefile.ru2004-02-061-3/+1
|
* With the beastie menu a problem was introduced in which selecting adcs2003-11-211-3/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | different kernel to boot with kernel="NAME" would load the kernel and loader.conf-selected modules from /boot/NAME, but it would not change module_path. So, for instance, the automatically loaded acpi.ko would come from /boot/kernel/acpi.ko, *always*. Mind you, this happened for unassisted boot. If you interrupted, typed "unload" and then "boot NAME", it would Do The Right Thing. The source of the problem is the double initialization with beastie's loader.rc. One would happen inside "start", and would load the kernel. The next one would happen later in the loader.rc script, resetting module_path. Because module_path is set to the Right Value by the functions in support.4th that actually load the kernel, when beastie.4th proceeded to boot module_path would remain wrong, as the kernel was already loaded. This can be corrected by removing either initialization, and also by changing the command used by beastie.4th from "boot" to "boot-conf", which makes sure you use the right kernel and modules. I chose to remove the second initialization, since this let you interrupt (or confirm) boot before beastie even comes up. I avoid also doing the boot-conf change because that would simply cause the kernel and modules to be loaded twice (in fact, that was my original patch, until, in writing this very commit message, I saw the error of my ways). This commit changes the semantics of module loading when using the beastie menu. Now it does what one would expect it to, but not what it was actually doing, so something may break for unusual setups depending on broken behavior. As our japanese friends so nicely put it, shikata ga nakatta. :-) Approved by: re (scottl)
* Use __FBSDID().obrien2003-08-252-4/+6
| | | | Also some minor copyright style cleanups.
* Build on amd64. Yes, I know this isn't particularly nice.peter2003-06-261-1/+1
|
* Enable the new bootloader for i386 only. The new loader.rc is will onlyscottl2003-05-312-1/+21
| | | | | | | be installed if an old one does not exist, i.e. only during install, not during upgrades. Approved by: re
* Add a new bootloader menu. Pull in screen.4th and frames.4th from thescottl2003-05-301-0/+1
| | | | | | | examples directory to support it. This is installed only on i386 for now. It will be enabled in a later commit. Approved by: re
* Enable the i386 loader to load and run an amd64 kernel. If this putspeter2003-05-012-0/+4
| | | | | | | | | | | | | | | things over floppy size limits, I can exclude it for release builds or something like that. Most of the changes are to get the load_elf.c file into a seperate elf32_ or elf64_ namespace so that you can have two ELF loaders present at once. Note that for 64 bit kernels, it actually starts up the kernel already in 64 bit mode with paging enabled. This is really easy because we have a known minimum feature set. Of note is that for amd64, we have to pass in the bios int 15 0xe821 memory map because once in long mode, you absolutely cannot make VM86 calls. amd64 does not use 'struct bootinfo' at all. It is a pure loader metadata startup, just like sparc64 and powerpc. Much of the infrastructure to support this was adapted from sparc64.
* Simplify the Makefile by just using our standard PROG variable.obrien2003-01-181-9/+8
|
* Renamed the loader's zipfs to gzipfs. zipfs.c was repo-copied to gzipfs.c.jake2002-12-191-1/+1
|
* Don't call INT 12H anymore in boot program.iwasaki2002-10-011-0/+4
| | | | | | | | | | | Many recent machine have a broken INT 12H (Get base memory size) implementation and boot program stops if INT 12H is called. This commit should solve the problem at very first step of FreeBSD installation occurred on newer some machines. Reviewed by: bde, jhb MFC after: 1 week
* Revert previous untested revision. The i386 loader consists of three parts:jhb2002-08-301-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | At the front is btxldr, in the middle is BTX itself (our mini-kernel), and then the 'client' (loader.bin) which is the actual loader itself. boot2 just executes a raw ELF or a.out binary with the only setup provided being that a bootinfo structure is passed on the stack. Now, since loader.bin is a BTX client, the loader needs to be able to locate a BTX kernel for the client to execute in the context. Thus, just like pxelder, btxldr uses the a.out header on the loader binary to find the BTX kernel stored in the loader and set it up. It does _not_ just reuse the BTX kernel that boot2 invoked it with. This is because it can't assume that it will _have_ a "spare" BTX kernel lying around. For example, when cdboot loads the loader there isn't an existing BTX kernel. In fact, cdboot will only work with an a.out loader as well since it also "borrows" the BTX kernel in the loader binary (which it finds by parsing the a.out header) just as pxeldr does. The only difference between cdboot and pxeldr is where they get /boot/loader from. If we wanted to make /boot/loader be an actual ELF binary we would need to change the following utilites to handle that (and they all have to be able to handle locating the BTX kernel inside of an ELF binary somehow): - btxldr - pxeldr - cdboot If we didn't want to require a flag day but make the transition smooth then we need to be able to support both a.out and ELF versions of /boot/loader which isn't exactly trivial since all three of these utilities are written in assembly. Pointy-hat to: peter
* s/hint.acpi.0.disable/hint.acpi.0.disabled/iwasaki2002-08-301-1/+1
| | | | | | | | | Fix device hints entry for disabling acpi(4). This also should fix the arbitration with apm(4) when both drivers are enabled. Note that your /boot/device.hints needs to be updated if you want to stop auto-loading acpi.ko or disable acpi(4).
* Try #2 at having /boot/loader default to ELF. Have pxeldr build itspeter2002-08-291-1/+1
| | | | | own a.out version of loader.bin rather than depend on ../loader/loader being a.out.
* Initiate deorbit burn of i386 a.out kld "support" in loader. Note thatpeter2002-08-292-5/+0
| | | | | | this was quite broken, it never was updated for metadata support. The a.out kld file support was never really used, as it wasn't necessary. You could always load elf kld's, even in an a.out kernel.
* Add help about hint.acpi.0.disable.iwasaki2002-08-091-0/+4
|
* Revert the part of Kirks UFS2 commit which added divdi3.c and moddi3.cphk2002-06-211-1/+1
| | | | to libi386, this issue was resolved already in a cleaner way.
* This commit adds basic support for the UFS2 filesystem. The UFS2mckusick2002-06-211-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | filesystem expands the inode to 256 bytes to make space for 64-bit block pointers. It also adds a file-creation time field, an ability to use jumbo blocks per inode to allow extent like pointer density, and space for extended attributes (up to twice the filesystem block size worth of attributes, e.g., on a 16K filesystem, there is space for 32K of attributes). UFS2 fully supports and runs existing UFS1 filesystems. New filesystems built using newfs can be built in either UFS1 or UFS2 format using the -O option. In this commit UFS1 is the default format, so if you want to build UFS2 format filesystems, you must specify -O 2. This default will be changed to UFS2 when UFS2 proves itself to be stable. In this commit the boot code for reading UFS2 filesystems is not compiled (see /sys/boot/common/ufsread.c) as there is insufficient space in the boot block. Once the size of the boot block is increased, this code can be defined. Things to note: the definition of SBSIZE has changed to SBLOCKSIZE. The header file <ufs/ufs/dinode.h> must be included before <ufs/ffs/fs.h> so as to get the definitions of ufs2_daddr_t and ufs_lbn_t. Still TODO: Verify that the first level bootstraps work for all the architectures. Convert the utility ffsinfo to understand UFS2 and test growfs. Add support for the extended attribute storage. Update soft updates to ensure integrity of extended attribute storage. Switch the current extended attribute interfaces to use the extended attribute storage. Add the extent like functionality (framework is there, but is currently never used). Sponsored by: DARPA & NAI Labs. Reviewed by: Poul-Henning Kamp <phk@freebsd.org>
* -ffreestanding is the word for /sys.obrien2002-05-101-0/+1
|
* Install files via FILES, there's no reason to compare them before installing.ru2002-04-171-18/+6
|
* Needs a.out support built into the loader.obrien2002-03-281-0/+3
|
* Add splitfs vfs layer into libstand, which allows loading big kernels andsobomax2002-03-171-0/+1
| | | | | | | | | | | | | | | | | | | | | | modules split across several physical medias. Following is how it works: The splitfs code, when asked to open "foo" looks for a file "foo.split" which is a text file containing a list of filenames and media names, e.g. foo.aa "Kernel floppy 1" foo.ab "Kernel floppy 2" foo.ac "Kernel and modules floppy" For each file segment, the process is: - try to open the file - prompt "Insert the disk labelled <whatever> and press any key..." - try to open the file - return error if file could not be located RE team is free to use this feature in the upcoming 5.0-DP1. Reviewed by: msmith, dcs
* - Add 'fwrite' and 'fseek' words for writing to and seeking on files.jhb2001-12-111-0/+1
| | | | | | | | | | | | | - Change the 'fopen' keyword to accept a mode parameter. Note that this will break existing 4th scripts that use fopen. Thus, the loader version has been bumped and loader.4th has been changed to check for a sufficient version on i386 and alpha. Be sure that you either do a full world build or install or full build and install of sys/boot after this since loader.old won't work with the new 4th files and vice versa. PR: kern/32389 Submitted by: Jonathan Mini <mini@haikugeek.com> Sponsored by: ClickArray, Inc.
* - If we are booted via cdboot, use bc_add() to instantiate the cd0 devicejhb2001-11-051-14/+16
| | | | | | from the loader. - Cleanup extract_currdev() some and add support for setting the currdev to cd0 when booted via cdboot.
* Hook up the bioscd driver and the cd9660 filesystem.jhb2001-11-051-0/+2
|
* Add support for loading bzip2-compressed kernels and modules. This supportsobomax2001-09-182-0/+12
| | | | | | | | | | | | | | is turned off by default and could be enabled by defining LOADER_BZIP2_SUPPORT make variable. Also make gzip support optional (turned on by default) - it could be turned off via LOADER_NO_GZIP_SUPPORT make variable. Please note, that due to limit on the amount of memory available to the loader(8), it is possible to load modules/kernels compressed with the smallest block size supported by the bzip2 - 100k (`-1' bzip2(1) option), however even in this mode bzip2(1) usually provides better compression ratio than gzip(1) in its best compression mode. MFC after: 1 month
* Create backup copies using install(1).ru2001-09-121-3/+1
|
* Mention that the ACPI module load can be disabled by unsetting $acpi_loadmsmith2001-08-301-0/+14
|
* Teach the loader how to find the system ACPI information, and autoloadmsmith2001-08-301-0/+3
| | | | | | | the ACPI module if the system apperars to be ACPI compliant. This is an initial cut; the load should really be done by Forth support code, and we should check both the BIOS build date and a blacklist.
* OK, now I am scared of pxeldr. It had /boot/loader appended ontopeter2001-08-221-1/+1
| | | | | | the end of it and decoded the headers. Submitted by: jhb
* Generate an ELF /boot/loader instead of fake a.out. The fake a.out wrapperpeter2001-08-221-1/+1
| | | | did not work with old a.out-only bootblocks anyway. :-(
OpenPOWER on IntegriCloud