User:Fchmmr: Difference between revisions

From coreboot
Jump to navigation Jump to search
No edit summary
No edit summary
Line 8: Line 8:


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


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


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


Line 30: Line 43:


Now need to compile grub2
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:
come out of coreboot:
cd ..
cd ..


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


Now we need to create a grub elf file as the payload:
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
note: in grub source root directory, make a coreboot.cfg with your grub config text inside


do that command:
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
 
./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).
test qemu.elf in a coreboot.rom compiled for qemu first (not covered in this guide).
assuming that it works, continue on...
assuming that it works, continue on...


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


and now a coreboot.rom is in ./build/
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
 
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:
most important:
cd build
- cd build
dd if=coreboot.rom of=top64k.bin bs=1 skip=$[$(stat -c %s coreboot.rom) - 0x10000] count=64k
- 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=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
- 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.
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)
 
(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:
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)


---
---

Revision as of 20:39, 5 December 2013

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


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:


---

.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