Announcement

Collapse
No announcement yet.

Booting HP QuickWeb (v3) with Grub2

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Booting HP QuickWeb (v3) with Grub2

    Hello,

    On new HP EliteBook series (8460p and 8560p) is preinstalled HP Linux distribution call HP QuickWeb (v3). This distribution is booting only when notebook is started with Web button on keyboard (instead power button). I found way how to boot this Linux distribution from Grub2. My investigation how HP firmware booting QuickWeb:

    1. Find first FAT32 partition with label HP_TOOLS. First GPT then BIOS/MBR type.
    2. Check if partition has file Hewlett-Packard/QuickWeb/oprom.bin which is syslinux in NTLDR bootloader format. This bootloader is signed (file Hewlett-Packard/QuickWeb/oprom.S09) and HP firmware show error if signature is not valid.
    3. NTLDR oprom.bin bootloader (syslinux) then will read config file Hewlett-Packard/QuickWeb/qw.cfg (classic syslinux configuration file)
    4. It will load kernel image /hewlett-packard/quickweb/kern and initrd image /hewlett-packard/quickweb/init.gz and boot it.

    I was talking with HP support (instant chat) and they told me that QuickWeb is EFI application. But I was not able to boot it in EFI. There is no EFI application and oprom.bin is NTLDR bootloader (maybe windows EFI bootloader can boot NTLDR bootloader so HP support think that it is EFI ).

    There is one problem that bootloader or kernel does not support GPT partitions (but HP firmware support it). So HP_TOOLS must be BIOS/MBR or GPT Hybrid type. I spend a lot of time until I find out this.


    I do not have installed any Windows and I want to try HP QuickWeb without installing Windows. I backuped original HP_TOOLS parition (default factory image) and I see that this image contains working HP QuickWeb distribution. I wrote above steps to grub2 and then grub2 was able to boot QuickWeb too (not needed to start notebook with web button instead power!)

    Working fine option which boot oprom.bin ntldr bootloader and also working option to boot directly kernel (with initrd) image (see qw.cfg).

    Here is grub2 script which is called when generating grub.cfg. Save it to /etc/grub.d/42_hp_quickweb and make it executable.
    Code:
    #!/bin/sh -e
    
    # HP QuickWeb is Linux distribution preinstalled on some HP notebooks.
    # HP notebooks firmware will search for first BIOS/MBR FAT32 partition
    # with label HP_TOOLS and try to boot ntldr bootloader saved in
    # Hewlett-Packard/QuickWeb/oprom.bin (typicaly it is syslinux in ntldr
    # format). This bootloader is signed oprom.S09 so cannot be modified.
    # HP QuickWeb kernel does not have support for GPT so HP_TOOLS partition
    # must be BIOS/MBR or hybrid GPT - this is why we use part_msdos
    
    LABEL="HP_TOOLS"
    NTLDR="Hewlett-Packard/QuickWeb/oprom.bin"
    
    # Find device which has HP_TOOLS label
    if which blkid 1>/dev/null 2>&1; then
    	DEVICE="$(blkid -o device -t LABEL=$LABEL 2>/dev/null)" || exit 0
    elif test -h /dev/disk/by-label/$LABEL; then
    	DEVICE="$(readlink -f /dev/disk/by-label/$LABEL 2>/dev/null)" || exit 0
    fi
    
    DEVICE="$(echo $DEVICE | head -n1)"
    test "$DEVICE" = "" && exit 0
    
    # Find mountpoint (or mount temporary) and check if ntldr loader exists
    MOUNT="$(mount | grep $DEVICE | cut -d' ' -f3)"
    
    if test "$MOUNT" = ""; then
    	MOUNT="/tmp/$LABEL"
    	mkdir -p $MOUNT
    	mount $DEVICE $MOUNT -t vfat 2>/dev/null || exit 0
    	test -f "$MOUNT/$NTLDR" || exit 0
    	umount $DEVICE 2>/dev/null || true
    else
    	test -f "$MOUNT/$NTLDR" || exit 0
    fi
    
    echo "Found HP QuickWeb ($NTLDR) on $LABEL ($DEVICE)" >&2
    cat << EOF
    menuentry "HP QuickWeb" {
    	insmod part_msdos
    	insmod fat
    	insmod ntldr
    	search --no-floppy --label --set=root $LABEL
    	ntldr /$NTLDR
    }
    EOF
Working...
X