Hi Eric, What still needs to be done in order to remove the need for mkelfImage at all on kernel images?
On 30 Mar 2002, Eric W. Biederman wrote: > > I finally have a clean kernel patch that gives the Linux kernel > a clean 32bit entry point, and implements LinuxBIOS support. Removing > one of the major functions of mkelfImage. > > The code available as multiple is at: > ftp://download.lnxi.com/pub/src/linux-kernel-patches/boot/ > > An entire diff against 2.5.7 is at: > ftp://download.lnxi.com/pub/src/linux-kernel-patches/boot/linux-2.5.7.boot.diff > > Please tell me what you think. > > Eric > > > > This is a log of a series of patches that cleans up and enhances the > x86 boot process. > > 2.5.7.boot.linuxbios 8 > ============================================================ > Support for reading information from the linuxbios table. > For now I just get the memory size more to come as things > evolve. > > 2.5.7.boot.proto 7 > ============================================================ > Update the boot protocol to include: > - A compiled in command line > - A 32bit entry point > - File and memory usage information enabling a 1 to 1 > conversion between the bzImage format and the static ELF > executable file format. > > - In setup.c split the parameters between those that > are compiled in and those that are > > 2.5.7.boot.build 6 > ============================================================ > Rework the actual build/link step for kernel images. > - remove the need for objcopy > - Kill the ROOT_DEV Makefile variable, the implementation > was only half correct and there are much better ways > to specify your root device than modifying the kernel. > - Don't loose information when the executable is built > > Except for a few extra fields in setup.S the binary image > is unchanged. > > 2.5.7.boot.heap 5 > ============================================================ > Modify video.S so that mode_list is also allocated from > the boot time heap. This probably saves a little memory, > and makes a compiled in command line a sane thing to implement. > > - Made certain we don't overwrite code with the E820_MAP > > - Changed the lables around the setup.S to _setup && _esetup > > > 2.5.7.boot.pic16 4 > ============================================================ > All changes are syntactic the generate code should not > be affected at all. > > - Modify the 16 bit code files bootsect.S video.S setup.S so they may > linked with any virtual address, not just 0. The code is already > PIC this just makes the build process the same. > > - e820.h Add define E820ENTRY_SIZE > > - Add define KERNEL_START in setup.S so if I need this > value more than once it is easy to get at. > > 2.5.7.boot.32bit_entry 3 > ============================================================ > - trampoline.S fix comments, and enter the kernel at > secondary_startup_32 instead of startup_32 > - trampoline.S fix gdt_48 to have the correct gdt limit > - Save all of the registers we get from any 32bit entry point, > and don't assume they have any particular value. > - head.S split up startup_32 > - secondary_startup_32 handles the SMP case > - move finding the command line to startup.c > - Don't copy the kernel parameters to the initial_zero_page, > instead just pass setup.c where they are located. > All of these are what it takes to remove the assumptions > of what register values we get on entry. And let's us > handle those assumptions up in C code. > - Seperate the segments used by setup.S from the rest of the kernel. > This way bootloader can continue to make assumptions about > which segments setup.S uses while the rest of the kernel > can do whatever is convinient. > - Move boot specific defines into boot.h > > 2.5.7.boot.vmlinuxlds 2 > ============================================================ > - i386/Makefile remove bogus linker command line of -e stext > - Fix vmlinux.lds so vmlinux knows it loads at 0x100000 (1MB) > - Fix vmlinux.lds so we correctly use startup_32 for our entry point > > 2.5.7.boot.boot_params 1 > ============================================================ > - Introduce asm-i386/boot_param.h and struct boot_params > - Implement struct boot_params in misc.c & setup.c > > This removes a lot of magic macros and by keeping all of the > boot parameters in a structure it becomes much easier to track > which boot_paramters we have and where they live. Additionally > this keeps the names more uniform making grepping easier. > >