Portál AbcLinuxu, 7. května 2025 22:13
Také vás již delší dobu láká možnost bootování z USB klíčenky, jen jste se neodhodlali to vyzkoušet? Potom vás třeba přesvědčí následující návod o tom, že na tom není nic složitého.
Poznámka redakce: Článek původně vyšel v blogu SLAX on USB. V této úpravě vychází se souhlasem autora.
Je nutné mít počítač schopný bootovat z USB-HDD a v BIOSU zařadit USB-HDD do bootovací sekvence. Dále budu předpokládat, že máte k dispozici ISO obraz nějakého aktuálního SLAXe.
Také předpokládám, že v systému máte nainstalovaný GRUB a dosfstools.
Předpokládám, že po připojení USB flash disku se ten objeví v /dev/sda
, pokud je tomu jinak, mělo by stačit %s/sda/SPRAVNEZARIZENI/g
. Práva roota jsou bohužel pro tento postup nezbytná. Neboli byste měli alespoň trochu tušit, co který krok dělá, a u potenciálně nebezpečných kroků kontrolovat, jestli jsme (já nebo vy) neudělali nějaký překlep.
Je dobré udržovat na disku pořádek, a proto doporučuji vytvořit si nějaký nový pracovní adresář a celý tento postup provádět v něm.
V tomto adresáři budeme potřebovat dva adresáře: cdrom
a sda1
.
mkdir sda1 mkdir cdrom
Také pro jednoduchost budeme potřebovat link na ISO obraz SLAXe:
ln -s CESTA_K_ISO_OBRAZU slax.iso
Na flashce budeme potřebovat jeden FAT32 oddíl, ideálně ten první. Většinou není nutné stávající oddíl rušit a vytvářet nový, ale při špatné konstelaci hvězd pak nemusí dopadnout správně zapsání GRUBu. Proto netrpěliví mohou přeskočit na sekci Instalace GRUBu a vrátit se sem v případě problémů s nabootováním.
Pokud nevíte, jak na to, tak nejdřív přepište nulami celou flasku, čímž získáte čisté pracovní místo. Pozor na překlepy a ujistěte se, že opravdu /dev/sda
odkazuje na flashku a ne na nějaký SCSI disk.
dd if=/dev/zero of=/dev/sda
Dále pak fdiskem vytvoříme tabulku oddílů obsahující jeden FAT32 oddíl.
fdisk /dev/sda Command (m for help): n e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-1020, default 1): 1 Last cylinder or +size or +sizeM or +sizeK (12-1020, default 1020): Command (m for help): t Hex code (type L to list codes): b Command (m for help): w
A vytvoříme FAT32 filesystem:
mkdosfs -F 32 /dev/sda1
Je dobré nyní propláchnout cache pomocí příkazu sync
a poté odpojit a připojit flasku (fyzicky, ne mount/umount ).
Nejdříve připojíme flashku:
mount /dev/sda1 sda1
a nakopírujeme potřebné soubory pro GRUB. Umístěn bývá standardně v /boot/grub/
, či v /grub/
.
cp -a /boot/grub sda1/
V některých distribucích bývá zvykem, že grub/menu.lst
je symlink na grub/grub.conf
. Jelikož FAT32 nepodporuje symlinky a GRUB načítá nastavení z menu.lst
, je v takovém případě nutné přejmenovat grub.conf
na menu.lst
.
mv sda1/grub/grub.conf sda1/grub/menu.lst
V tuto chvíli je ten pravý okamžik pro editaci nastavení GRUBu. Spusťte svůj oblíbený editor a soubor sda1/grub/menu.lst
upravte, aby vypadal následovně:
# Sample boot menu configuration file for Slax on USB # Boot automatically after 30 secs. timeout 30 # By default, boot the first entry. default 0 # For booting Slax title Slax On USB root (hd0,0) kernel /boot/vmlinuz max_loop=255 init=linuxrc load_ramdisk=1 prompt_ramdisk=0 ramdisk_size=4444 root=/dev/ram0 rw initrd=/boot/initrd.gz
Nezapomeneme odpojit flashku:
umount sda1 sync
Nyní potřebujeme vytvořit soubor device-map
, který při instalaci GRUBu řekne, který disk odpovídá kterému zařízení
echo "(hd0) /dev/sda" >device-map
A konečně zapsat GRUB do MBR flashky:
grub --device-map=device-map root (hd0,0) cat (hd0,0)/<TAB> <ESC>#kontrola spravnosti cile setup (hd0)
Před setup
je dobré se ujistit, jestli máme opravdu připojený ten správný oddíl tím, že si necháme vypsat obsah jeho kořenového adresáře. Napište cat (hd0,0)/
a stiskněte klávesu TAB.
Přichází závěrečná fáze, tedy překopírování obsahu livecd na flashku.
mount /dev/sda1 sda1 mount -o loop slax.iso cdrom cp -a cdrom/* sda1/ umount -d cdrom umount sda1
Jelikož jsme použili distribuci, která počítá s read-only médiem, veškeré nastavení se ve výchozím nastavení ukládá pouze do ramdisku. Na tomto chování je sice příjemné, že se flashka příliš neošoupe, ale ne vždy chceme vše nastavovat znovu. Naštěstí autor Slaxe připravil vcelku slušný aparát pro ukládání nastavení.
Při startu Slax hledá, zda na některém disku nenajde slaxconf.mo
. Pokud nějaký najde, zeptá se, zda má z něj načíst nastavení a započne odpočítávání, během kterého buďto Enterem potvrdíte, že má nastavení uložit, nebo necháte dopočítat k nule a žádné nastavení se nenačte. Obdobně funguje zápis nastavení při vypínání systému.
Ale kde takový slaxconf.mo
vzít? Vcelku jednoduše příkazem:
saveconfig /mnt/sda1_removable/slaxconf.mo
V některých verzích Slaxe je nutné před tímto příkazem vytvořit/změnit libovolný soubor v adresáři /root/
a /home/guest
, jinak se po načtení nastavení stanou z těchto adresářů soubory nulové délky.
Pokud vás otravuje nutnost neustále při bootu a haltu potvrzovat načítání a ukládání nastavení, jde pomocí jednoho nepříliš čistého zásahu tuto nutnost odstranit. Pomocí unsquashfs
si rozbalte modul 02_core.mo a zakomentujete v souboru /etc/rc.d/rc.slaxconfig
řádek
if ! message_skipped "Auto$1 settings by using $CONFFILE?" 9; then
a nejbližší řádek s fi
. Poté si vytvořte pomocí mksquashfs
upravený 02_core.mo
-- v adresáři squashfs-root
spusťte
mksquashfs * 02_core.mo
a vytvořeným modulem přepište původní na flashce.
Obdobným postupem, jako zde popisovaným, jde docílit konfigurace, kdy na flashce máme dva oddíly -- první je datový a druhý obsahuje Slax. Při této konfiguraci je příjemné, že se člověku příliš nemíchají přenášená data se soubory Slaxe.
#priprava prostredi mkdir sda1 mkdir cdrom #ZNULOVANI obsahu flasky -- neni nutne dd if=/dev/zero of=/dev/sda #udelani partition tabulky fdisk /dev/sda n p 1 1 t b w mkdosfs -F 32 /dev/sda1 #pripojeni usb a nakopirovani grubu mount /dev/sda1 sda1 cp -a /boot/grub sda1/ mv sda1/grub/grub.conf sda1/grub/menu.lst #nyni zeditovat sda1/grub/grub.conf umount sda1 #vytvoreni docasne device-map pro instalaci grubu echo "(hd0) /dev/sda" >device-map #instalace grubu na usb grub --device-map=device-map root (hd0,0) cat (hd0,0)/<TAB> #kontrola spravnosti cile setup (hd0) #nakopirovani slaxe na usb mount /dev/sda1 sda1 mount -o loop slax.iso cdrom cp -a cdrom/* sda1/ umount -d cdrom umount sda1
A ještě ukázkový grub.conf
:
# # Sample boot menu configuration file for Slax on USB # # Boot automatically after 30 secs. timeout 30 # By default, boot the first entry. default 0 # For booting Slax title Slax On USB root (hd0,0) kernel /boot/vmlinuz max_loop=255 init=linuxrc \ load_ramdisk=1 prompt_ramdisk=0 ramdisk_size=4444 root=/dev/ram0 rw initrd=/boot/initrd.gz
V tomto adresáři budeme potřebovat dva adresáře: cdrom a sda1.Jen taková drobnůstka, chybějící/nadbývající jednička. Jinak moc hezký článek, díky za něj, už stahuju SLAXemkdir sda mkdir cdrom
sda1
. Stejná chyba je i ve zkrácené verzi návodu. Už jsem o tom napsal redakci. Díky za upozornění.
grub.conf
vs. menu.lst
.
root (hd0,0)
mi grub povida: Filesystem type unknown, partition type 0xb Proc muj grub neumi FAT32?Debian Sarge; grub z distribuce (0.95+cvs20040624-17), dokonce jsem upgradnul z backportu na 0.97-4bpo1_i386, ale nepomohlo.fat_stage1_5
z binárního tarballu na ftp://alpha.gnu.org/gnu/grub/grub-0.97-i386-pc.tar.gz
.
mkdir dsl_temp mkdir dsl_usb mount -o loop dsl-*.iso dsl_temp cp -a dsl_temp/* dsl_usb cd dsl_usb mv boot/isolinux/* ./ rm -Rf boot mv isolinux.bin syslinux.bin mv isolinux.cfg syslinux.cfg cd .. mkdir usb_pen mount -t vfat /dev/sda1 usb_pen cp -a dsl_usb/* usb_pen umount usb_pen umount dsl_temp syslinux /dev/sda1Niekedy ešte treba vykonať obnovu MBR a to lilo -M /dev/sda. Toto nájdete aj na http://wiki.debian.org/BootUsb. Verím, že vás tento návod dovedie bezpečne do cieľa. Je ešte nutné podotknút, že bootovateľný USB kľúč sa dá urobiť aj automatizovane cez live distribúciu cez bootovanie z CD. Nevýhodou je, že sa nedá urobiť viacero partícií.
bootinst.sh
mi to vypíše následující řádek:
bash: ./bootinst.sh: /bin/bash: bad interpreter: Přístup odmítnutPři hledání řešení jsem našel tento článek, že si to, co dělá skript zkusím ručně, ale nemám GRUB, mám Lilo, takže tady jsem taky narazil. Může mi někdo poradit co s hláškou:
bash: ./bootinst.sh: /bin/bash: bad interpreter: Přístup odmítnutDěkuji předem
Boot failure
.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.