Ubuntu 8.04 Desktop, bootbart USB
Jag använder ofta USB-minnen för att visa upp Linux för andra. I skolan där jag jobbar använder vi ett bootbart USB-minne i undervisningen. Jag tänkte skriva ner hur jag bygger det bootbara USB-minnet från ubuntu-skivan om någon annan skulle vilja göra ett sådant.
Till att börja med måste vi ha Ubuntu 8.04 Desktop (vilken Ubuntu-skiva som helst fungerar, till och med Edubuntu, Kubuntu och Xubuntu). Om vi inte har skivan får vi ladda ner den från http://www.ubuntu.com/getubuntu/download .
Vi behöver också installera syslinux som används för att göra USB-minnet bootbart:
$ sudo apt-get install syslinux
När vi har skivan och har installerat syslinux börjar vi med att skapa en katalog, vi utgår från vår hemkatalog (/home/jonas/ i mitt fall) och undviker att blanda in resterande systemet för detta. Vi behöver ha 1 GiB ledigt utrymme om vi bygger från CD-skiva och 2 GiB utrymme ledigt om vi bygger från en nedladdad cd-avbild.
jonas@nx7010:~$ mkdir -p ubuntu/cd
jonas@nx7010:~$ mkdir -p ubuntu/usb
Tanken är att ha cd-avbilden monterad i katalogen cd och kopiera den till USB-minnet som monteras i katalogen usb.
Montera cd-skivan:
Om vi har en CD-skiva och vår cd-enhet heter hdc monterar vi den så här (du ändrar hdc till den enhetsbeteckning din cd-spelare har):
jonas@nx7010:~$ sudo mount /dev/hdc ubuntu/cd
Om vi har en cd-skiveabild monterar vi den så här:
jonas@nx7010:~$ sudo mount -o loop ubuntu804desktop.iso ubuntu/cd
Nu partitionerar vi USB-minnet (som måste vara minst 1GiB!), i mitt system får USB-minnet enhetsbeteckningen sdb kika hur det ser ut i ditt. Enklast är att skriva dmesg efter att du satt in USB-minnet.
jonas@nx7010:~$ sudo umount /dev/sdb1
jonas@nx7010:~$ sudo cfdisk /dev/sdb
Vi skapar en partition som är 1GiB stor och gör den bootbar, vi sparar ändringarna och stänger ner cfdisk. Nu skapar vi ett filsystem på USB-minnet.
jonas@nx7010:~$ sudo umount /dev/sdb1
jonas@nx7010:~$ sudo mkfs.vfat -F 16 -n ubuntu /dev/sdb1
Anledningen till att vi använder umount innan allt är att GNOME gärna vill montera enheten automatiskt och det är inte så lyckat när vi gör detta.
Det är dags att montera USB-minnet i katalogen ubuntu/usb:
jonas@nx7010:~$ sudo mount /dev/sdb1 ubuntu/usb
Nu kopierar vi in CD-skivan på USB-minnet:
jonas@nx7010:~$ rsync -ax ubuntu/cd/ ubuntu/usb
Vi kommer få felmeddelanden om symboliska länkar som inte går att skapa, det är ingen fara. Anledningen är att filsystemet FAT16 som vi skapade USB-minnet med inte stödjer symboliska länkar.
Nu kopierar vi kärnan och initrd till rotkatalogen på USB-minnet:
jonas@nx7010:~$ sudo cp -rf ubuntu/usb/casper/vmlinuz ubuntu/usb/casper/initrd.gz ubuntu/usb/
Dags att ordna så att syslinux kan starta USB-minnet:
jonas@nx7010:~$ cd ubuntu/usb
jonas@nx7010:~/ubuntu/usb$ sudo mv isolinux.cfg syslinux.cfg
jonas@nx7010:~/ubuntu/usb$ sudo sed -i ’s/\/cdrom\///g’ syslinux.cfg
jonas@nx7010:~/ubuntu/usb$ sudo sed -i ’s/\/casper\///g’ syslinux.cfg
Om vi vill att USB-minnet skall starta med svenskt språk som standard skapar vi filen LANG på USB-minnet och lägger in texten sv_SE i den:
jonas@nx7010:~/ubuntu/usb$ sudo vi LANG
Jag använder textredigeraren vi för detta, du kan använda den textredigerare du gillar bäst (pico, nano, joe?). Skriv in sv_SE i filen och spara.
Slutligen skall vi avmontera USB-minnet och göra det bootbart:
jonas@nx7010:~/ubuntu/usb$ cd
jonas@nx7010:~$ sudo umount ubuntu/usb/
jonas@nx7010:~$ sudo syslinux -sf /dev/sdb1
jonas@nx7010:~$ sudo sync
Nu är det bara att starta om datorn och se till att den bootar från USB-enheter så kommer Ubuntu starta från USB-minnet.