BOOTPARAM(7) Linux - příručka programátora BOOTPARAM(7)

bootparam - Úvod do parametrů pro zavedení jádra Linuxu

Jádro operačního systému Linux akceptuje 'parametry na příkazové řádce' neboli 'parametry pro zavedení operačního systému' při startu systému. Obecně, takto lze jádru předat informace o hardware, které si jádro nemůže zjistit samo nebo aby se předešlo chybné detekci ze strany jádra.

When the kernel is booted directly by the BIOS, you have no opportunity to specify any parameters. So, in order to take advantage of this possibility you have to use a boot loader that is able to pass parameters, such as GRUB.

The kernel command line is parsed into a list of strings (boot arguments) separated by spaces. Most of the boot arguments have the form:


jméno[=hodnota_1][,hodnota_2]...[,hodnota_10]

kde 'jméno' je jednoznačné klíčové slovo, použité pro rozpoznání, pro kterou část jádra se případné hodnoty (jsou-li uvedeny), použijí. Povšimněte si, že hodnota 10 je skutečným limitem, protože současný kód neumí zpracovat více než 10 hodnot oddělených čárkami pro jedno klíčové slovo. (Ve zvlášť složitých případech však můžete použít totéž klíčové slovo s dalšími parametry, pokud je to podporováno danou setup funkcí ovladače.)

Most of the sorting is coded in the kernel source file init/main.c. First, the kernel checks to see if the argument is any of the special arguments 'root=', 'nfsroot=', 'nfsaddrs=', 'ro', 'rw', 'debug', or 'init'. The meaning of these special arguments is described below.

Dále pak prochází seznamem setup funkcí, kde kontroluje, zda zadaný řetězec (řekněme 'foo') je propojen s funkcí ('foo_setup()') pro určitý ovladač či část jádra. Jestliže předáte jádru řádek foo=3,4,5,6 tak jádro prohledá pole bootsetups, aby zjistilo, zda je řetězec registrován. Jestliže ano, je zavolána funkce k 'foo' přidružená (foo_setup()) a jsou jí předány parametry 3, 4, 5 a 6 tak, jak se objevily na příkazové řádce.

Cokoli ve tvaru 'foo=bar', co není akceptováno jako parametr, se bude interpretovat jako proměnná prostředí, která má být nastavena. Příkladem budiž použití 'TERM=vt100' jako zaváděcí parametr.

Any remaining arguments that were not picked up by the kernel and were not interpreted as environment variables are then passed onto PID 1, which is usually the init(1) program. The most common argument that is passed to the init process is the word 'single' which instructs it to boot the computer in single user mode, and not launch all the usual daemons. Check the manual page for the version of init(1) installed on your system to see what arguments it accepts.

'init=...'
Nastavuje příkaz pro proces jedna, který bude spuštěn po natažení jádra. Jestliže není uvedeno (nebo jej nelze najít), jádro zkusí nejprve /sbin/init, potom /etc/init, pak /bin/init, potom /bin/sh a vyhlásí kernel panic, selže-li i poslední varianta.
'nfsaddrs=...'
Nastavuje zaváděcí adresu pro NFS na daný řetězec. Je použita při zavádění ze sítě (net boot).
'nfsroot=...'
Nastavuje jméno NFS kořenu na daný řetězec. Jestliže řetězec nezačíná '/' nebo ',' nebo číslicí, pak se před něj připíše '/tftpboot/'. Toto jméno se použije při zavádění ze sítě.
'root=...'
Tento parametr říká jádru, které zařízení má být použito jako kořenový souborový systém pro zavedení systému. Implicitně se tento parametr nastavuje v době překladu jádra jako kořenové zařízení, na kterém je jádro překládáno. Na překrytí tohoto implicitního nastavení na druhou disketovou jednotku použijte 'root=/dev/fd1'.
The root device can be specified symbolically or numerically. A symbolic specification has the form /dev/XXYN, where XX designates the device type (e.g., 'hd' for ST-506 compatible hard disk, with Y in 'a'–'d'; 'sd' for SCSI compatible disk, with Y in 'a'–'e'), Y the driver letter or number, and N the number (in decimal) of the partition on this device.
Poznamenejme, že tato jména nemají nic společného se zařízeními v adresáři /dev; to je jen čirá konvence.
Komplikovanější a méně přenositelná specifikace kořenového zařízení sestává z čísel zařízení major/minor. (Příklad: /dev/sda3 má major 8, minor 3, takže 'root=0x803' je alternativní zápis.)
'rootdelay='
This parameter sets the delay (in seconds) to pause before attempting to mount the root filesystem.
'rootflags=...'
This parameter sets the mount option string for the root filesystem (see also fstab(5)).
'rootfstype=...'
The 'rootfstype' option tells the kernel to mount the root filesystem as if it where of the type specified. This can be useful (for example) to mount an ext3 filesystem as ext2 and then remove the journal in the root filesystem, in fact reverting its format from ext3 to ext2 without the need to boot the box from alternate media.
'ro' a 'rw'
Parametr 'ro' říká jádru, aby připojilo kořenový souborový systém pouze pro čtení, takže může proběhnout kontrola konzistence souborového systému (pomocí fsck). Žádný proces nemůže na tento souborový systém psát dokud není 'pře-připojen' i pro zápis, například příkazem 'mount -w -n -o remount /'. (Viz také mount(8).)
Parametr 'rw' říká jádru, aby připojilo kořenový souborový systém pro čtení i zápis; toto je implicitní nastavení.
'resume=...'
This tells the kernel the location of the suspend-to-disk data that you want the machine to resume from after hibernation. Usually, it is the same as your swap partition or file. Example:

resume=/dev/hda2


'reserve=...'
Ochrana intervalu V/V adres před testováním. Parametry mají tvar:

reserve=iobase,extent[,iobase,extent]...


Na některých počítačích je třeba zakázat ovladačům přístup při hledání zařízení (auto-probing) do vybraného intervalu adres. Tím lze obejít zařízení, které špatně reaguje na automatickou detekci, nebo lze zabránit nesprávné detekci či identifikaci, nebo dosáhnout například zakázání přístupu na zařízení, které nechceme jádrem inicializovat.
Parametr reserve určuje rozsah V/V adres, který nemá být procházen při hledání. Žádný ovladač nesmí na dané adresy přistupovat, ledaže by mu tak bylo explicitně řečeno jiným zaváděcím parametrem.
Například parametry:

reserve=0x300,32  bla=0x300


říkají všem ovladačům, aby, kromě ovladače 'bla', vynechaly adresy od 0x300 do 0x31f.
'panic=N'
Nastane-li kernel panic, systém se implicitně nebude pokoušet znovu startovat, nastavíte-li však tento parametr, pak bude jádro znovu startovat po uplynutí N vteřin (je-li N > 0). Toto lze nastavit také pomocí

echo N > /proc/sys/kernel/panic


'reboot=[warm|cold][,[bios|hard]]'
Od verze 2.0.22 je reboot implicitně studeným startem. Chcete-li použít starší implicitní chování, použijte 'reboot=warm'. (Studený start může být vyžadován pro reset nějakého hardware, naproti tomu může zničit ještě nezapsaná data z vyrovnávací paměti. Teplý start může být rychlejší.) Implicitně je reboot typu hard (řadič klávesnice je požádán o vygenerování signálu RESET, nicméně existuje nejméně jeden motherboard, kde toto nefunguje. Pak je nutno použít variantu 'reboot=bios', která místo toho požádá BIOS o reboot.
'nosmp' a 'maxcpus=N'
(Pouze je-li definováno __SMP__.) Parametr 'nosmp' či 'maxcpus=0' zakáže podporu více procesorů; parametr 'maxcpus=N' omezí počet aktivních procesorů na N.

'debug'
Kernel messages are handed off to a daemon (e.g., klogd(8) or similar) so that they may be logged to disk. Messages with a priority above console_loglevel are also printed on the console. (For a discussion of log levels, see syslog(2).) By default, console_loglevel is set to log messages at levels higher than KERN_DEBUG. This boot argument will cause the kernel to also print messages logged at level KERN_DEBUG. The console loglevel can also be set on a booted system via the /proc/sys/kernel/printk file (described in syslog(2)), the syslog(2) SYSLOG_ACTION_CONSOLE_LEVEL operation, or dmesg(8).
'profile=N'
Je možno zapnout tzv. kernel profiling, jestliže chceme zjistit, kde jádro spotřebovává čas CPU. Profiling je zapnut nastavením proměnné prof_shift na nenulovou hodnotu. Toho lze dosáhnout buď nastavením CONFIG_PROFILE při překladu jádra nebo parametrem 'profile='. Povšimněte si, že hodnota prof_shift bude buďto zadaná hodnota nebo hodnota proměnné prostředí CONFIG_PROFILE_SHIFT (je-li nastavena) nebo implicitně 2. Význam této hodnoty je přesnost takového počítání: každý takt (pokud je CPU aktivní v jádře) zvětšuje počítadlo:

profile[address >> prof_shift]++;


Neupravenou informaci o profilingu lze za běhu získat čtením /proc/profile. Pro porozumění této informaci lze použít například readprofile.c. Zápis do /proc/profile vynuluje počítadla.

(Only if the kernel was compiled with CONFIG_BLK_DEV_RAM.) In general it is a bad idea to use a ramdisk under Linux—the system will use available memory more efficiently itself. But while booting, it is often useful to load the floppy contents into a ramdisk. One might also have a system in which first some modules (for filesystem or hardware) must be loaded before the main disk can be accessed.
In Linux 1.3.48, ramdisk handling was changed drastically. Earlier, the memory was allocated statically, and there was a 'ramdisk=N' parameter to tell its size. (This could also be set in the kernel image at compile time.) These days ram disks use the buffer cache, and grow dynamically. For a lot of information on the current ramdisk setup, see the kernel source file Documentation/blockdev/ramdisk.txt (Documentation/ramdisk.txt in older kernels).
Jsou zde čtyři parametry, dvě logické hodnoty a dvě celá čísla.
'load_ramdisk=N'
Jestliže je N=1, nahraj ramdisk, jestliže N=0, nenahrávej jej (toto je implicitní nastavení).
'prompt_ramdisk=N'
Pro N=1, jádro požádá o vložení diskety (implicitní nastavení). Pro N=0 jádro o nic nežádá. (tento parametr není nikdy potřeba)
'ramdisk_size=N' nebo (zastaralé) 'ramdisk=N'
Nastaví maximální velikost ramdisku(ů) na N kB. Implicitně 4096 (4 MB).
'ramdisk_start=N'
Nastaví číslo počátečního bloku (offset na disketě odkud bude ramdisk nahráván) na N. Toto má význam například pokud tatáž disketa obsahuje jak jádro tak ramdisk.
'noinitrd'
(Pouze je-li jádro přeloženo s CONFIG_BLK_DEV_RAM a CONFIG_BLK_DEV_INITRD.) Nyní je možno přeložit jádro s podporou initrd. Jestliže je tato varianta povolena, při startu systému se nahraje jak jádro tak iniciální ramdisk, který jádro poté změní na 'normální' ramdisk připojený pro čtení i zápis jako kořenový svazek. Poté je je spuštěn program /linuxrc; nato je připojen skutečný kořenový svazek a initrd je připojeno jako /initrd; nakonec je aktivována obvyklá posloupnost zavádění (tj. spuštění /sbin/init).
For a detailed description of the initrd feature, see the kernel source file Documentation/admin-guide/initrd.rst (or Documentation/initrd.txt before Linux 4.10).
Parametr 'noinitrd' zakazuje použití initrd i v případě, že jádro bylo přeloženou s podporou initrd. Data z initrd jsou přístupná přes /dev/initrd. (Toto zařízení může být použito jen jednou: data jsou uvolněna z paměti, jakmile poslední proces uzavře /dev/initrd.)

Notace použitá v této sekci:

iobase -- první V/V port použitý SCSI adaptérem. Jsou uváděny v šestnáctkové soustavě, obvykle leží v intervalu od 0x200 do 0x3ff.

irq -- číslo přerušení, která je nastaveno při konfiguraci karty. Správné hodnoty závisí na typu karty, obvykle se jedná o jednu z hodnot 5, 7, 9, 10, 11, 12 a 15. Ostatní hodnoty jsou použity jinými obvyklými zařízeními jako IDE disky, diskety, sériové porty aj.

scsi-id -- ID, kterým se SCSI zařízení jednoznačně identifikuje v rámci jedné SCSI sběrnice. Pouze některé karty povolují tuto hodnotu nastavit, ostatní ji mají permanentně nastavenou bez možnosti změny. Obvyklá hodnota je 7, ale například karty Seagate and Future Domain TMC-950 používají 6.

parity -- zda SCSI adaptér očekává, že připojená zařízení používají paritu při komunikaci. Nastavení parametru na jedna kontrolu parity povolí, nula ji zakáže. Opět, ne všechny adaptéry povolují toto nastavit jako parametr.

'max_scsi_luns=...'
A SCSI device can have a number of 'subdevices' contained within itself. The most common example is one of the new SCSI CD-ROMs that handle more than one disk at a time. Each CD is addressed as a 'Logical Unit Number' (LUN) of that particular device. But most devices, such as hard disks, tape drives, and such are only one device, and will be assigned to LUN zero.
Některá špatně navržená SCSI zařízení nejsou schopna pracovat jako jednotky s nenulovým LUN. Jestliže není při překladu jádra nastaveno CONFIG_SCSI_MULTI_LUN, pak bude jádro při startu testovat pouze LUN=0.
Pomocí parametru 'max_scsi_luns=n' lze při startu nastavit, kolik LUN se má testovat. Povolené hodnoty jsou od jedné do osmi. Hodnota n=1 zakazuje zkoušet jiné LUN než 0.
Nastavení SCSI pásky
Některé parametry pro SCSI páskový ovladač lze zadat následovně:

st=buf_size[,write_threshold[,max_bufs]]


První dvě čísla jsou hodnoty v kB. Implicitní hodnota buf_size je 32 kB, přičemž maximální hodnota, kterou lze zadat je až 16384 kB. write_threshold je prahová hodnota obsazení vyrovnávací paměti pro provedení zápisu na pásku, implicitně je nastavena na 30 kB. Hodnota max_bufs určuje největší povolený počet vyrovnávacích pamětí pro dané zařízení (implicitní hodnota je dvě). Příklad:

st=32,30,2


Podrobnosti jsou uvedeny v souboru Documentation/scsi/st.txt (nebo v případě starších jader drivers/scsi/README.st) ve zdrojovém kódu jádra.

Parametry pro IDE Disky/CD-ROM
Ovladač IDE akceptuje řadu parametrů, od geometrie disku až po obcházení chyb specifických zařízení. Specifické parametry jsou zadány pomocí 'hdX=' kde X je v intervalu 'a'–'h'.
Parametry společné několika zařízením mají prefix 'hd='. Kombinace obou způsobů zadávání funguje podle očekávání.
Also note that 'hd=' can be used to refer to the next unspecified drive in the (a, ..., h) sequence. For the following discussions, the 'hd=' option will be cited for brevity. See the file Documentation/ide/ide.txt (or Documentation/ide.txt in older kernels, or drivers/block/README.ide in ancient kernels) in the Linux kernel source for more details.
Parametry 'hd=cyls,heads,sects[,wpcom[,irq]]'
Specifikace fyzické geometrie disku. Pouze první tři parametry jsou povinné. Stopa/hlava/sektory jsou ty, které používá program fdisk. Hodnota wcomp (předkompenzace pro zápis) se pro IDE disky nevyužívá. IRQ je hodnota přerušení pro ovladač, na nějž je zařízení připojeno. (Toto není parametr specifický pro disk.)
Parametr 'hd=serialize'
Dvojité IDE rozhraní CMD-640 obsahuje chybu, která může za určitých okolností (na obě rozhraní se používají v tutéž chvíli) může zničit vaše data. Tento parametr říká, že požadavky na obě rozhraní se budou řadit do fronty, a tedy nikdy nebudou oslovena najednou obě rozhraní.
Parametr 'hd=noprobe'
Netestuj dané zařízení. Např.

hdb=noprobe hdb=1166,7,17


zakáže testování, ale nastaví geometrii, a tak je toto zařízení stane použitelné pro operační systém.
Parametr 'hd=nowerr'
Některá zařízení mají chybně stále nastavený příznak WRERR_STAT. Tento parametr povoluje obejití této chyby.
Parametr 'hd=cdrom'
Tento parametr říká, že namísto disku je připojena ATAPI CD-ROM. Obvykle je CD-ROM detekována a rozpoznána automaticky, ale v případě že se tak nestalo, toto je možná pomoc.
Standardní parametry pro ST-506 Disk Driver ('hd=')
Standardní ovladač akceptuje geometrii podobně jako IDE driver; očekává však přesně tři hodnoty (Stopa/Hlava/Sektory), v případě jiného počtu vás potichu ignoruje. Navíc rozumí pouze 'hd=' jako parametru, tedy 'hda=' není povolený zápis. Formát:

hd=cyls,heads,sects


Jestliže máte instalovány dva disky, opakujte parametry pro druhý disk.

Různé ovladače mají různé parametry, ale obecně mají všechny IRQ, V/V adresu a jméno. Takže základní forma parametrů je:


ether=irq,iobase[,param_1[,...param_8]],name

První nečíselný parametr je chápán jako jméno. Hodnoty param_n (jsou-li použity) mají různý význam pro různé adaptéry. Typicky určují adresu sdílené paměti, výběr rozhraní, kanál DMA aj.

Obvykle se používá tento parametr pro autoprobe druhé síťově karty (implicitně se hledá jen první):


ether=0,0,eth1

Poznamenejme, že hodnoty 0 pro IRQ a iobase nutí ovladače k autodetekci.

The Ethernet-HowTo has extensive documentation on using multiple cards and on the card/driver-specific implementation of the param_n values where used. Interested readers should refer to the section in that document on their particular card.

There are many floppy driver options, and they are all listed in Documentation/blockdev/floppy.txt (or Documentation/floppy.txt in older kernels, or drivers/block/README.fd for ancient kernels) in the Linux kernel source. See that file for the details.

The sound driver can also accept boot arguments to override the compiled-in values. This is not recommended, as it is rather complex. It is described in the Linux kernel source file Documentation/sound/oss/README.OSS (drivers/sound/Readme.linux in older kernel versions). It accepts a boot argument of the form:


sound=device1[,device2[,device3...[,device10]]]

where each deviceN value is of the following format 0xTaaaId and the bytes are used as follows:

T - typ zařízení: 1=FM, 2=SB, 3=PAS, 4=GUS, 5=MPU401, 6=SB16, 7=SB16-MPU401

aaa - V/V adresa (šestnáctkově).

I - IRQ šestnáctkově (tj. 10=a, 11=b, ...)

d - kanál DMA.

Jak vidíte, je to poměrně zmatečné, takže lepší přeložit jádro s konkrétními hodnotami. Parametr ve tvaru 'sound=0' zakáže použití zvukové karty.

'lp='

Syntaxe:

lp=0
lp=auto
lp=reset
lp=port[,port...]


Můžete říct ovladači tiskárny, které porty má používat a které ne. Druhá možnost se hodí, pokud nechcete, aby ovladač tiskárny zabral všechny dostupné paralelní porty, takže je mohou využívat jiné ovladače (např. PLIP, PPA).
Formát parametru je vícero jmen portů. Například lp=none,parport0 použije první paralelní port pro lp1 a zakáže lp0. Pro úplný zákaz ovladače tiskárny je možno použít lp=0.

klogd(8), mount(8)

For up-to-date information, see the kernel source file Documentation/admin-guide/kernel-parameters.txt.

Tato stránka je součástí projektu Linux man-pages v5.11. Popis projektu a informace o hlášení chyb najdete na https://www.kernel.org/doc/man-pages/.

Překlad této příručky do španělštiny vytvořili Jiří Pavlovský <pavlovsk@ff.cuni.cz> a Pavel Heimlich <tropikhajma@gmail.com>

Tento překlad je bezplatná dokumentace; Přečtěte si GNU General Public License Version 3 nebo novější ohledně podmínek autorských práv. Neexistuje ŽÁDNÁ ODPOVĚDNOST.

Pokud narazíte na nějaké chyby v překladu této příručky, pošlete e-mail na adresu translation-team-cs@lists.sourceforge.net.

22. března 2021 Linux