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.
Ovladač pro řadič disketové
jednotky
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.
Ovladač zvukových karet
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.
Ovladač tiskárny
- '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.