Skip to content

Instantly share code, notes, and snippets.

@janderssonse
Created July 9, 2021 22:31
Show Gist options
  • Save janderssonse/9880b1fbcabc3bb135850895e10e930c to your computer and use it in GitHub Desktop.
Save janderssonse/9880b1fbcabc3bb135850895e10e930c to your computer and use it in GitHub Desktop.
Att skapa en startbar USB-enhet med starthanteraren EXTLINUX

Att skapa en startbar USB-enhet med starthanteraren EXTLINUX

Denna korta instruktion visar hur man kan skapa en startbar USB-enhet med starthanteraren EXTLINUX. Det kan vara användbart om du exempelvis byggt din egen Linuxkärna och ditt eget root-filsystem, som i denna instruktion.

Mer om EXTLINUX

Till skillnad från SYSLINUX som är till för FAT-formaterade enheter kan EXTLINUX användas för EXT2/3/4 och btrfs-formaterade enheter.

Partionera enheten (som root)

Lista dina fysiska enheter i ditt system:

# fdisk -l

I detta system identifierades USB-enheten som /dev/sdc. Anpassa efter ditt system.

Radera data på enheten. Var noggrann med att inte partionera/formatera fel enhet! Vi skapar här en EXT3-partition (hela enheten) och markerar den som uppstartbar.

# fdisk /dev/sdc

o<ENTER>
n<ENTER>
p<ENTER>
1<ENTER>
<first cylinder, ENTER>
<last cylinder, ENTER>
t<ENTER>
83<ENTER>  <-- partition type : Linux
a<ENTER>
1<ENTER>
w<ENTER>

Partionering klar!

Skapa filsystemet på enheten

Nu när enheten är partionerad måste ett filsystem skapas på /dev/sdc1 (partitionen vi nyss skapade):

# mkfs -t ext3 /dev/sdc1 -L <namn>

<namn> är enhetens namn.

TIPS: ändra enhetsnamn
# tune2fs -L <nyttnamn> /dev/sdc1

Installera starthanteraren EXTLINUX på enheten

Montera enheten (som root)

# mkdir /mnt/usb
# mount /dev/sdc1 /mnt/usb

Hämta senaste paketet med SYSLINUX/EXTLINUX (6.03 när detta skrevs. Jag fann dock ingen mbr.bin i det så jag tog hem 5.x-serien)

# wget https://www.kernel.org/pub/linux/utils/boot/syslinux/5.xx/syslinux-5.10.tar.bz2
# tar xvjf syslinux*.tar.bz2
# cd syslinux*

Installera MBR på enheten

# cd mbr
# cat mbr.bin >/dev/sdc

Installera EXTLINUX

# cd ../extlinux
# ./extlinux --install /mnt/usb

Skapa en konfigurationsfil, extlinux.conf som innehåller följande:

# nano /mnt/usb/extlinux.conf

DEFAULT linux
LABEL linux
SAY Starar nu kärnan från SYSLINUX/EXTLINUX...
KERNEL bzImage
APPEND ro root=/dev/sda1 initrd=initramfs.cpio.gz

Lägg till din Linuxkärna, här kallad bzImage. Lägg till ditt root-filsystem, här som initramfs.cpio.gz.

Avmontera din USB-enhet

# cd && umount /mnt/usb

Testkör din USB-enhet genom att starta från den, på riktigt, i Qemu eller Virtuabox.

Inspirerad av https://agentoss.wordpress.com/2011/02/28/how-to-create-a-bootable-linux-usb-drive-using-extlinux/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment