User:Fchmmr

From coreboot
Revision as of 20:37, 5 December 2013 by Fchmmr (talk | contribs)
Jump to navigation Jump to search

For X60

Compile GNUtoo's fork of coreboot with:

- GRUB2 payload
- native graphics (replacement for VGA option ROM / Video BIOS / VBIOS)

This version also removes the nonfree microcode.

I have tested this on an X60s 170237G. GNUtoo uses this on an X60. I hope to test it on more machines also.

git clone git://gitorious.org/gnutoo-for-coreboot/build-makefiles.git (get the grub config, etc) that is where i got the grub.cfg from. rename it to coreboot.cfg and put it in the root of the grub source code directory (see below) note: i'm not using this. i adapted my own.

git clone git://gitorious.org/gnutoo-for-coreboot/coreboot.git cd coreboot git checkout 6ec9b1637b4e75de0ae4e2de258f72a7811aafbf (the checkout gets gnutoo's patches to remove microcode, etc)

the .config (included in this post), put it in the coreboot directory. I got it from here, which GNUtoo uploaded: http://paste.debian.net/68794

Now coreboot is there, with the right config.

Now need to compile grub2 use this guide: http://www.coreboot.org/index.php?title=GRUB2&oldid=11812 (note to self: include a backup of this)

come out of coreboot: cd ..

do that: git clone git://git.savannah.gnu.org/grub.git cd grub ./autogen.sh ./configure --with-platform=coreboot make

Now we need to create a grub elf file as the payload: note: in grub source root directory, make a coreboot.cfg with your grub config text inside

do that command: ./grub-mkstandalone --grub-mkimage=./grub-mkimage -O i386-coreboot -o grub2-X60.elf --modules='ahci pata ehci uhci ohci usb_keyboard usbms part_msdos xfs ext2 fat at_keyboard part_gpt usbserial_usbdebug cbfs' --install-modules='ls linux search configfile normal cbtime cbls memrw iorw minicmd lsmmap lspci halt reboot hexdump pcidump regexp setpci lsacpi chain test' --fonts= --themes= --locales= -d grub-core/ /boot/grub/grub.cfg=coreboot.cfg


test qemu.elf in a coreboot.rom compiled for qemu first (not covered in this guide). assuming that it works, continue on...

ok, just put grub2-X60.elf (it will be in the root of the grub source directory) in coreboot directory. in make menuconfig, change the path to say grub2-X60.elf then: make

and now a coreboot.rom is in ./build/

if you are flashing this for the first time on a machine that has the factory bios, then using the coreboot.rom just follow the wiki insturctions, especially with regards to the dd commands and the bucts commands

most important: cd build dd if=coreboot.rom of=top64k.bin bs=1 skip=$[$(stat -c %s coreboot.rom) - 0x10000] count=64k dd if=coreboot.rom bs=1 skip=$[$(stat -c %s coreboot.rom) - 0x20000] count=64k | hexdump dd if=top64k.bin of=coreboot.rom bs=1 seek=$[$(stat -c %s coreboot.rom) - 0x20000] count=64k conv=notrunc

flash the resulting coreboot.com like you normally would. (with the dd commands you should also be able to use the flashing procedure from factory BIOS, but I haven't tested that. yet)

see below:

---

phcoder sasy to remove memdisk.tar and rebuild grub2.elf, if you want to change something

boot from grub cli, eg: grub> linux (ahci0,1)/vmlinuz root=/dev/sda1 grub> initrd (ahci0,1)/initrd.img grub> boot (on grub command line. this can boot a kernel)

---

.config (put it in root coreboot source directory) is like this:

  1. This image was built using git revision 6ec9b1637b4e75de0ae4e2de258f72a7811aafbf

CONFIG_LOCALVERSION="7BETC7WW (2.08 )" CONFIG_CBFS_PREFIX="fallback" CONFIG_COMPILER_GCC=y CONFIG_USE_OPTION_TABLE=y CONFIG_COMPRESS_RAMSTAGE=y CONFIG_INCLUDE_CONFIG_FILE=y CONFIG_EARLY_CBMEM_INIT=y CONFIG_VENDOR_LENOVO=y CONFIG_BOARD_SPECIFIC_OPTIONS=y CONFIG_MAINBOARD_DIR="lenovo/x60" CONFIG_MAINBOARD_PART_NUMBER="ThinkPad X60 / X60s" CONFIG_IRQ_SLOT_COUNT=18 CONFIG_MAINBOARD_VENDOR="Lenovo" CONFIG_MAX_CPUS=2 CONFIG_RAMTOP=0x200000 CONFIG_HEAP_SIZE=0x4000 CONFIG_RAMBASE=0x100000 CONFIG_VGA_BIOS_ID="8086,27a2" CONFIG_DRIVERS_PS2_KEYBOARD=y CONFIG_DCACHE_RAM_BASE=0xffdf8000 CONFIG_DCACHE_RAM_SIZE=0x8000 CONFIG_SERIAL_CPU_INIT=y CONFIG_ACPI_SSDTX_NUM=0 CONFIG_MMCONF_BASE_ADDRESS=0xf0000000 CONFIG_ID_SECTION_OFFSET=0x80 CONFIG_XIP_ROM_SIZE=0x10000 CONFIG_MMCONF_SUPPORT_DEFAULT=y CONFIG_BOARD_LENOVO_X60=y CONFIG_MAX_REBOOT_CNT=1 CONFIG_MAINBOARD_SMBIOS_MANUFACTURER="LENOVO" CONFIG_SEABIOS_PS2_TIMEOUT=3000 CONFIG_LOGICAL_CPUS=y CONFIG_IOAPIC=y CONFIG_SMP=y CONFIG_TTYS0_BAUD=115200 CONFIG_TTYS0_BASE=0x3f8 CONFIG_TTYS0_LCS=3 CONFIG_DEFAULT_CONSOLE_LOGLEVEL=8 CONFIG_CONSOLE_SERIAL8250=y CONFIG_USBDEBUG=y CONFIG_MAXIMUM_SUPPORTED_FREQUENCY=0 CONFIG_CPU_ADDR_BITS=32 CONFIG_BOARD_ROMSIZE_KB_2048=y CONFIG_COREBOOT_ROMSIZE_KB_2048=y CONFIG_COREBOOT_ROMSIZE_KB=2048 CONFIG_ROM_SIZE=0x200000 CONFIG_MAINBOARD_SERIAL_NUMBER="L3BY949" CONFIG_MAINBOARD_VERSION="ThinkPad X60" CONFIG_MAINBOARD_SMBIOS_PRODUCT_NAME="ThinkPad X60 / X60s" CONFIG_ARCH_X86=y CONFIG_X86_ARCH_OPTIONS=y CONFIG_MARK_GRAPHICS_MEM_WRCOMB=y CONFIG_AP_IN_SIPI_WAIT=y CONFIG_STACK_SIZE=0x1000 CONFIG_NUM_IPI_STARTS=2 CONFIG_X86_BOOTBLOCK_SIMPLE=y CONFIG_BOOTBLOCK_SOURCE="bootblock_simple.c" CONFIG_PC80_SYSTEM=y CONFIG_BOOTBLOCK_NORTHBRIDGE_INIT="northbridge/intel/i945/bootblock.c" CONFIG_HAVE_CMOS_DEFAULT=y CONFIG_CMOS_DEFAULT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.default" CONFIG_BOOTBLOCK_SOUTHBRIDGE_INIT="southbridge/intel/i82801gx/bootblock.c" CONFIG_IOAPIC_INTERRUPTS_ON_FSB=y CONFIG_HPET_ADDRESS=0xfed00000 CONFIG_HAVE_ARCH_MEMSET=y CONFIG_HAVE_ARCH_MEMCPY=y CONFIG_HAVE_ARCH_MEMMOVE=y CONFIG_SOCKET_SPECIFIC_OPTIONS=y CONFIG_HAVE_INIT_TIMER=y CONFIG_HIGH_SCRATCH_MEMORY_SIZE=0x0 CONFIG_CPU_INTEL_MODEL_6EX=y CONFIG_CPU_INTEL_MODEL_6FX=y CONFIG_SMM_TSEG_SIZE=0 CONFIG_CPU_INTEL_SOCKET_MFCPGA478=y CONFIG_SSE2=y CONFIG_UDELAY_LAPIC=y CONFIG_LAPIC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_CACHE_ROM=y CONFIG_CACHE_AS_RAM=y CONFIG_AP_SIPI_VECTOR=0xfffff000 CONFIG_MMX=y CONFIG_SSE=y CONFIG_CPU_MICROCODE_CBFS_NONE=y CONFIG_VIDEO_MB=0 CONFIG_NORTHBRIDGE_SPECIFIC_OPTIONS=y CONFIG_NORTHBRIDGE_INTEL_I945=y CONFIG_NORTHBRIDGE_INTEL_SUBTYPE_I945GM=y CONFIG_CHANNEL_XOR_RANDOMIZATION=y CONFIG_CBFS_SIZE=0x200000 CONFIG_HPET_MIN_TICKS=0x80 CONFIG_MAX_PIRQ_LINKS=4 CONFIG_EHCI_BAR=0xfef00000 CONFIG_EHCI_DEBUG_OFFSET=0xa0 CONFIG_AMD_SB_SPI_TX_LEN=4 CONFIG_SOUTHBRIDGE_INTEL_COMMON=y CONFIG_SOUTHBRIDGE_INTEL_I82801GX=y CONFIG_SOUTHBRIDGE_RICOH_RL5C476=y CONFIG_SUPERIO_NSC_PC87382=y CONFIG_SUPERIO_NSC_PC87392=y CONFIG_EC_ACPI=y CONFIG_EC_LENOVO_H8=y CONFIG_EC_LENOVO_PMH7=y CONFIG_MAINBOARD_HAS_NATIVE_VGA_INIT=y CONFIG_MAINBOARD_DO_EDID=y CONFIG_MAINBOARD_DO_NATIVE_VGA_INIT=y CONFIG_PCI=y CONFIG_PCIX_PLUGIN_SUPPORT=y CONFIG_PCIEXP_PLUGIN_SUPPORT=y CONFIG_AGP_PLUGIN_SUPPORT=y CONFIG_CARDBUS_PLUGIN_SUPPORT=y CONFIG_PCIEXP_COMMON_CLOCK=y CONFIG_PCIEXP_ASPM=y CONFIG_PCI_BUS_SEGN_BITS=0 CONFIG_FRAMEBUFFER_VESA_MODE_117=y CONFIG_FRAMEBUFFER_VESA_MODE=0x117 CONFIG_DRIVERS_ICS_954309=y CONFIG_MMCONF_SUPPORT=y CONFIG_EARLY_CONSOLE=y CONFIG_SQUELCH_EARLY_SMP=y CONFIG_CONSOLE_SERIAL=y CONFIG_CONSOLE_SERIAL_COM1=y CONFIG_CONSOLE_SERIAL_115200=y CONFIG_HAVE_USBDEBUG=y CONFIG_USBDEBUG_IN_ROMSTAGE=y CONFIG_USBDEBUG_HCD_INDEX=0 CONFIG_USBDEBUG_DEFAULT_PORT=1 CONFIG_USBDEBUG_DONGLE_STD=y CONFIG_USBDEBUG_OPTIONAL_HUB_PORT=0 CONFIG_CONSOLE_CBMEM=y CONFIG_CONSOLE_CBMEM_BUFFER_SIZE=0x10000 CONFIG_CONSOLE_CAR_BUFFER_SIZE=0xc00 CONFIG_DEFAULT_CONSOLE_LOGLEVEL_8=y CONFIG_NO_POST=y CONFIG_HAVE_UART_IO_MAPPED=y CONFIG_HAVE_ACPI_RESUME=y CONFIG_HAVE_HARD_RESET=y CONFIG_HAVE_MONOTONIC_TIMER=y CONFIG_HAVE_OPTION_TABLE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_CACHE_ROM_SIZE=0x200000 CONFIG_USE_WATCHDOG_ON_BOOT=y CONFIG_GFXUMA=y CONFIG_RELOCATABLE_MODULES=y CONFIG_HAVE_ACPI_TABLES=y CONFIG_HAVE_MP_TABLE=y CONFIG_HAVE_PIRQ_TABLE=y CONFIG_MULTIBOOT=y CONFIG_GENERATE_ACPI_TABLES=y CONFIG_GENERATE_MP_TABLE=y CONFIG_GENERATE_PIRQ_TABLE=y CONFIG_GENERATE_SMBIOS_TABLES=y CONFIG_PAYLOAD_ELF=y CONFIG_PAYLOAD_FILE="../config/grub2-x60.elf" CONFIG_COMPRESSED_PAYLOAD_LZMA=y CONFIG_HAVE_DEBUG_RAM_SETUP=y CONFIG_WARNINGS_ARE_ERRORS=y