Stepdown recently asked on reboot.pro about how to detect specific makes\models of hardware so that the correct linux kernel parameters can be used automatically.
For instance, a certain model of system may not boot using the default linux kernel parameters unless nomodeset or a 'blacklist' module is specified as a kernel parameter.
The 'sample' example below shows how you can detect the type of system you are using and automatically use the correct kernel parameters for that system.
I will put example .mnu files in E2B v1.91b and later versions.
Check BIOS for Make\Model string
# Look for a BIOS string to find PC Model
# Search strings (e.g. "eeepc") are not case-sensitive
# 0x7ff+0x01 searches 512 bytes at end of BIOS ROM, 0x600+0x40 will search the BIOS VGA ROM area
# 0x680+0x180 searches all of BIOS from 0xD000:0 to 0xFFFF:F (and so will be slower)
# remove the " > nul" text if you want to see the strings that it has found
# This example sets blacklist modules depending on what Model we find
# We can also set nomodeset parameter for specific models
# Note that a blacklist must NOT contain spaces or the values after the space won't be parsed correctly by linux!
# ATTENTION: The modules used are for example only - they are not real module names!
iftitle [if exist $HOME$/ubuntu-16.10-desktop-amd64.iso] Boot Ubuntu (detect system model for blacklist)\n Auto-detect based on BIOS strings
set ISO=ubuntu-16.10-desktop-amd64.iso
set GOTSTR=
set MATCH=
set bl=
set modeset=
if not exist MATCH call /%grub%/SearchBS.g4b 0x780+0x80 "eeepc" > nul
if not exist MATCH if "%GOTSTR%"=="1" set bl=emodule1,module2 && set MATCH=1
if not exist MATCH call /%grub%/SearchBS.g4b 0x780+0x80 "ASUS Z87" > nul
if not exist MATCH if "%GOTSTR%"=="1" set bl=modulez87 && set MATCH=1
if not exist MATCH call /%grub%/SearchBS.g4b 0x780+0x80 "virtualbox" > nul
if not exist MATCH if "%GOTSTR%"=="1" set bl=vbmodule1,module3 && set modeset=nomodeset && set MATCH=1
# add more pairs of lines here
if exist bl echo -e -n $[0x0E]Using blacklist=%bl% %modeset% && pause --wait=3 > nul
# suppress messages from QRUN
set redir=> nul
# Map ISO automatically by calling QRUN
/%grub%/QRUN.g4b $HOME$/%ISO%
# (0xff) will have ISO - root should be (0xff)
if not exist /casper/vmlinuz.efi pause ERROR: Wrong ISO? && configfile (md)0xa000+0x50
kernel /casper/vmlinuz.efi file=/cdrom/preseed/ubuntu.seed boot=casper blacklist=%bl% %modeset% quiet splash ---
initrd /casper/initrd.lz
# can boot to linux here...
boot
PCI ID detection example
# This example sets blacklist modules depending on what PCI IDs we find
# We can also set nomodeset parameter for specific models
# Note that a blacklist must NOT contain spaces or the values after the space won't be parsed correctly by linux!
# ATTENTION: The modules used are for example only - they are not real module names!
iftitle [if exist $HOME$/ubuntu-16.10-desktop-amd64.iso] Boot Ubuntu (detect PCI ID for blacklist)\n Auto-detect based on PCI IDs
set ISO=ubuntu-16.10-desktop-amd64.iso
set bl=
set modeset=
# get PCI IDs of this system into memory
/%grub%/DPMS/chkpci > (md)0x300+2
set bl=
cat --locatei=EN_8086&DEV_27B9 (md)0x300+2 > nul && set bl=vbmodule1,module3 && set modeset=nomodeset
# add more lines here
if exist bl echo -e -n $[0x0E]Using blacklist=%bl% %modeset% && pause --wait=3 > nul
# suppress messages from QRUN
set redir=> nul
# Map ISO automatically by calling QRUN
/%grub%/QRUN.g4b $HOME$/%ISO%
# (0xff) will have ISO - root should be (0xff)
if not exist /casper/vmlinuz.efi pause ERROR: Wrong ISO? && configfile (md)0xa000+0x50
kernel /casper/vmlinuz.efi file=/cdrom/preseed/ubuntu.seed boot=casper blacklist=%bl% %modeset% quiet splash ---
initrd /casper/initrd.lz
# can boot to linux here...
boot
For instance, a certain model of system may not boot using the default linux kernel parameters unless nomodeset or a 'blacklist' module is specified as a kernel parameter.
The 'sample' example below shows how you can detect the type of system you are using and automatically use the correct kernel parameters for that system.
I will put example .mnu files in E2B v1.91b and later versions.
Check BIOS for Make\Model string
# Look for a BIOS string to find PC Model
# Search strings (e.g. "eeepc") are not case-sensitive
# 0x7ff+0x01 searches 512 bytes at end of BIOS ROM, 0x600+0x40 will search the BIOS VGA ROM area
# 0x680+0x180 searches all of BIOS from 0xD000:0 to 0xFFFF:F (and so will be slower)
# remove the " > nul" text if you want to see the strings that it has found
# This example sets blacklist modules depending on what Model we find
# We can also set nomodeset parameter for specific models
# Note that a blacklist must NOT contain spaces or the values after the space won't be parsed correctly by linux!
# ATTENTION: The modules used are for example only - they are not real module names!
iftitle [if exist $HOME$/ubuntu-16.10-desktop-amd64.iso] Boot Ubuntu (detect system model for blacklist)\n Auto-detect based on BIOS strings
set ISO=ubuntu-16.10-desktop-amd64.iso
set GOTSTR=
set MATCH=
set bl=
set modeset=
if not exist MATCH call /%grub%/SearchBS.g4b 0x780+0x80 "eeepc" > nul
if not exist MATCH if "%GOTSTR%"=="1" set bl=emodule1,module2 && set MATCH=1
if not exist MATCH call /%grub%/SearchBS.g4b 0x780+0x80 "ASUS Z87" > nul
if not exist MATCH if "%GOTSTR%"=="1" set bl=modulez87 && set MATCH=1
if not exist MATCH call /%grub%/SearchBS.g4b 0x780+0x80 "virtualbox" > nul
if not exist MATCH if "%GOTSTR%"=="1" set bl=vbmodule1,module3 && set modeset=nomodeset && set MATCH=1
# add more pairs of lines here
if exist bl echo -e -n $[0x0E]Using blacklist=%bl% %modeset% && pause --wait=3 > nul
# suppress messages from QRUN
set redir=> nul
# Map ISO automatically by calling QRUN
/%grub%/QRUN.g4b $HOME$/%ISO%
# (0xff) will have ISO - root should be (0xff)
if not exist /casper/vmlinuz.efi pause ERROR: Wrong ISO? && configfile (md)0xa000+0x50
kernel /casper/vmlinuz.efi file=/cdrom/preseed/ubuntu.seed boot=casper blacklist=%bl% %modeset% quiet splash ---
initrd /casper/initrd.lz
# can boot to linux here...
boot
PCI ID detection example
# This example sets blacklist modules depending on what PCI IDs we find
# We can also set nomodeset parameter for specific models
# Note that a blacklist must NOT contain spaces or the values after the space won't be parsed correctly by linux!
# ATTENTION: The modules used are for example only - they are not real module names!
iftitle [if exist $HOME$/ubuntu-16.10-desktop-amd64.iso] Boot Ubuntu (detect PCI ID for blacklist)\n Auto-detect based on PCI IDs
set ISO=ubuntu-16.10-desktop-amd64.iso
set bl=
set modeset=
# get PCI IDs of this system into memory
/%grub%/DPMS/chkpci > (md)0x300+2
set bl=
cat --locatei=EN_8086&DEV_27B9 (md)0x300+2 > nul && set bl=vbmodule1,module3 && set modeset=nomodeset
# add more lines here
if exist bl echo -e -n $[0x0E]Using blacklist=%bl% %modeset% && pause --wait=3 > nul
# suppress messages from QRUN
set redir=> nul
# Map ISO automatically by calling QRUN
/%grub%/QRUN.g4b $HOME$/%ISO%
# (0xff) will have ISO - root should be (0xff)
if not exist /casper/vmlinuz.efi pause ERROR: Wrong ISO? && configfile (md)0xa000+0x50
kernel /casper/vmlinuz.efi file=/cdrom/preseed/ubuntu.seed boot=casper blacklist=%bl% %modeset% quiet splash ---
initrd /casper/initrd.lz
# can boot to linux here...
boot
No comments:
Post a Comment