The problem: We can't always run the kernel at 1MB or 2MB, and so people who need different addresses must build multiple kernels. The bzImage format can't even represent loading a kernel at other than it's default address. With kexec on panic now starting to be used by distros having a kernel not running at the default load address is starting to become common. The goal of this patch series is to build kernels that are relocatable at run time, and to extend the bzImage format to make it capable of expressing a relocatable kernel. In extending the bzImage format I am replacing the existing unused bootsector with an ELF header. To express what is going on the ELF header will have type ET_DYN. Just like the kernel loading an ET_DYN executable bootloaders are not expected to process relocations. But the executable may be shifted in the address space so long as it's alignment requirements are met. The x86_64 kernel is simply built to live at a fixed virtual address and the boot page tables are relocated. The i386 kernel is built to process relocations generated with --embedded-relocs (after vmlinux.lds.S) has been fixed up to sort out static and dynamic relocations. Currently there are 33 patches in my tree to do this. The weirdest symptom I have had so far is that page faults did not trigger the early exception handler on x86_64 (instead I got a reboot). There is one outstanding issue where I am probably requiring too much alignment on the arch/i386 kernel. Can anyone find anything else? Eric - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
- Follow-Ups:
- Re: [RFC] ELF Relocatable x86 and x86_64 bzImages
- From: Vivek Goyal <[email protected]>
- Re: [Fastboot] [RFC] ELF Relocatable x86 and x86_64 bzImages
- From: Don Zickus <[email protected]>
- Re: [RFC] ELF Relocatable x86 and x86_64 bzImages
- From: "Magnus Damm" <[email protected]>
- Re: [RFC] ELF Relocatable x86 and x86_64 bzImages
- From: Vivek Goyal <[email protected]>
- Re: [RFC] ELF Relocatable x86 and x86_64 bzImages
- From: Vivek Goyal <[email protected]>
- [PATCH 1/33] i386: vmlinux.lds.S Distinguish absolute symbols
- From: "Eric W. Biederman" <[email protected]>
- [PATCH 23/33] x86_64: cleanup segments
- From: "Eric W. Biederman" <[email protected]>
- [PATCH 13/33] x86_64: Remove assumptions about the kernel start address from e820/bad_addr()
- From: "Eric W. Biederman" <[email protected]>
- [PATCH 24/33] x86_64: Add EFER to the set registers saved by save_processor_state
- From: "Eric W. Biederman" <[email protected]>
- [PATCH 15/33] x86_64: Fix kernel direct mapping size check
- From: "Eric W. Biederman" <[email protected]>
- [PATCH 31/33] x86_64 boot: Add serial output support to the decompressor
- From: "Eric W. Biederman" <[email protected]>
- [PATCH 20/33] x86_64: fix early_printk to use the standard ISA mapping
- From: "Eric W. Biederman" <[email protected]>
- [PATCH 33/33] x86_64: Make bzImage a valid 64bit elf executable.
- From: "Eric W. Biederman" <[email protected]>
- [PATCH 12/33] x86_64: fixup indentation in e820.c
- From: "Eric W. Biederman" <[email protected]>
- [PATCH 8/33] kallsyms.c: Generate relocatable symbols.
- From: "Eric W. Biederman" <[email protected]>
- [PATCH 7/33] elf: Add ELFOSABI_STANDALONE to elf.h
- From: "Eric W. Biederman" <[email protected]>
- [PATCH 14/33] x86_64: Properly report in /proc/iomem the kernel address
- From: "Eric W. Biederman" <[email protected]>
- [PATCH 5/33] i386 Kconfig: Add a range definition to config PHYSICAL_START
- From: "Eric W. Biederman" <[email protected]>
- [PATCH 16/33] x86_64: Assembly safe page.h and pgtable.h
- From: "Eric W. Biederman" <[email protected]>
- [PATCH 17/33] x86_64: Separate normal memory map initialization from the hotplug case
- From: "Eric W. Biederman" <[email protected]>
- [PATCH 29/33] x86_64: __pa and __pa_symbol address space separation
- From: "Eric W. Biederman" <[email protected]>
- [PATCH 11/33] i386 boot: Add an ELF header to bzImage
- From: "Eric W. Biederman" <[email protected]>
- [PATCH 9/33] i386 boot: Add serial output support to the decompressor
- From: "Eric W. Biederman" <[email protected]>
- [PATCH 25/33] x86_64: 64bit PIC SMP trampoline
- From: "Eric W. Biederman" <[email protected]>
- [PATCH 30/33] x86_64: Remove CONFIG_PHYSICAL_START
- From: "Eric W. Biederman" <[email protected]>
- [PATCH 32/33] x86_64: Relocatable kernel support
- From: "Eric W. Biederman" <[email protected]>
- [PATCH 10/33] i386: Relocatable kernel support.
- From: "Eric W. Biederman" <[email protected]>
- [PATCH 21/33] x86_64: modify copy_bootdata to use virtual addresses
- From: "Eric W. Biederman" <[email protected]>
- [PATCH 28/33] x86_64: Remove the identity mapping as early as possible.
- From: "Eric W. Biederman" <[email protected]>
- [PATCH 26/33] x86_64: 64bit PIC ACPI wakeup
- From: "Eric W. Biederman" <[email protected]>
- [PATCH 27/33] x86_64: Modify discover_ebda to use virtual addresses
- From: "Eric W. Biederman" <[email protected]>
- [PATCH 19/33] x86_64: Cleanup the early boot page table.
- From: "Eric W. Biederman" <[email protected]>
- [PATCH 2/33] i386: define __pa_symbol
- From: "Eric W. Biederman" <[email protected]>
- [PATCH 18/33] x86_64: Kill temp_boot_pmds
- From: "Eric W. Biederman" <[email protected]>
- [PATCH 3/33] i386 setup.c: Reserve kernel memory starting from _text
- From: "Eric W. Biederman" <[email protected]>
- [PATCH 22/33] x86_64: Fix gdt table size in trampoline.S
- From: "Eric W. Biederman" <[email protected]>
- [PATCH 4/33] i386: CONFIG_PHYSICAL_START cleanup
- From: "Eric W. Biederman" <[email protected]>
- [PATCH 6/33] Make linux/elf.h safe to be included in assembly files
- From: "Eric W. Biederman" <[email protected]>
- Re: [RFC] ELF Relocatable x86 and x86_64 bzImages
- Prev by Date: Re: the " 'official' point of view" expressed by kernelnewbies.org regarding reiser4 inclusion
- Next by Date: [PATCH 6/33] Make linux/elf.h safe to be included in assembly files
- Previous by thread: [PATCH] kbuild fixes
- Next by thread: [PATCH 6/33] Make linux/elf.h safe to be included in assembly files
- Index(es):