Byla vydána beta verze Ubuntu 25.04 s kódovým názvem Plucky Puffin. Přehled novinek v poznámkách k vydání. Dle plánu by Ubuntu 25.04 mělo vyjít 17. dubna 2025.
Textový editor Neovim byl vydán ve verzi 0.11 (𝕏). Přehled novinek v příspěvku na blogu a poznámkách k vydání.
Živé ISO obrazy Debianu Bookworm jsou 100 % reprodukovatelné.
Boudhayan "bbhtt" Bhattcharya v článku Uzavření kapitoly o OpenH264 vysvětluje, proč bylo OpenH264 odstraněno z Freedesktop SDK.
Představeny byly nové verze AI modelů: DeepSeek V3-0324, Google Gemini 2.5 a OpenAI 4o Image Generation.
XZ Utils (Wikipedie) byly vydány ve verzi 5.8.0. Jedná se o první větší vydání od backdooru v XZ v loňském roce.
Byla vydána nová verze 0.40.0 multimediálního přehrávače mpv (Wikipedie) vycházejícího z přehrávačů MPlayer a mplayer2. Přehled novinek, změn a oprav na GitHubu. Požadován je FFmpeg 6.1 nebo novější a také libplacebo 6.338.2 nebo novější.
Byla vydána nová verze 2.20 svobodného video editoru Flowblade (GitHub, Wikipedie). Přehled novinek v poznámkách k vydání. Videoukázky funkcí Flowblade na Vimeu. Instalovat lze také z Flathubu.
LibrePCB, tj. svobodný multiplatformní softwarový nástroj pro návrh desek plošných spojů (PCB), byl vydán ve verzi 1.3.0. Přehled novinek v příspěvku na blogu a v aktualizované dokumentaci. Vypíchnut je interaktivní HTML BOM (Bill of Materials) a počáteční podpora Rustu. Zdrojové kódy LibrePCB jsou k dispozici na GitHubu pod licencí GPLv3.
Minulý měsíc Hector "marcan" Martin skončil jako upstream vývojář linuxového jádra i jako vedoucí projektu Asahi Linux. Vývoj Asahi Linuxu, tj. Linuxu pro Apple Silicon, ale pokračuje dál. Byl publikován březnový přehled dění a novinek z vývoje. Vývojáře lze podpořit na Open Collective.
V této fázi byste měli mít dostatek povědomí o živých CD, známe proces bootování, speciální souborové systémy, přesto ještě něco chybí. Nevíme, co je nutné udělat, abychom proměnili obyčejný systém v takový, který je schopen bootovat z CD.
Příkladem distribucí, které jsou vytvořeny pomocí těchto skriptů linux-live, jsou Slax (pochopitelně), ABC Linux 2005 (odvozena ze Slaxe) a minimax (používá upravenou verzi, jinak vychází z distribuce Arch Linux). Jejich použití je velmi snadné a na stránce je také velmi stručný návod:
Just install your favourite distro, remove all unnecessary files (for example man pages and all other files which are not important for you) and then download and run these scripts.
Jednoduše nainstalujte vaši oblíbenou distribuci, odstraňte všechny nepotřebné soubory (například manuálové stránky a ostatní soubory, které vás nezajímají) a potom si stáhněte a spusťte tyto skripty. Ale za takhle krátký článek by mě v redakci asi nepochválili. Proto se jim v následujících dílech podíváme na zoubek a zároveň budeme pokračovat v objevování tajů LiveCD.
V prvním díle LiveCD - 1
(úvod, isolinux) tohoto seriálu jsme se seznámili se zavaděčem
isolinux
, který umí spustit jádro z CD. Klasický postup
bootování jádra je takový, že se
init=
jinak, jádro spustí
program /sbin/init
.Jenže u LiveCD to tak jednoduše nejde, protože to musí běžet bez
načítání potřebných programů z disku. Stejný problém nastává v situaci, kdy
máme distribuční jádro, které obsahuje podporu pro souborové systémy na
disku... který nedokáže bez těch modulů přečíst. Tento problém se nazývá
bootstrapping
a je to problém, který se netýká jen počítačů,
ale kosmologie a filozofie. Naštěstí vývojáři jádra přišli s jednoduchým
řešením, které se jmenuje initrd
(Initial Ram Disk), což je
speciální soubor, který se zavede do paměti a jádro z něho při bootu načte
potřebné soubory.
Jádro musí ovšem obsahovat patřičnou podporu:
Device Drivers > Block devices: <*> RAM disk support (4096) Default RAM disk size (kbytes) (NEW) [*] Initial RAM disk (initrd) support
V případě klasických distribucí bývá součástí initrd
ovladač pro souborové systémy a případně také bootsplash. Live systémy tu
mají uložen minimální systém, který nejprve připraví všechno potřebné pro
spuštění systému a teprve potom spustí samotný /sbin/init
.
Ovšem ramdisky mají omezenou kapacitu, takže není snadné do nich dát byť
jen minimální systém, který by obsahoval klasické GNU nástroje, na něž jsme
zvyklí.
Proto byl vytvořen nástroj busybox, což je The Swiss Army
Knife of Embedded Linux (a v té chvíli si pokaždé vzpomenu na jiný
švýcarský nůž, program netcat
— the network swiss
army knife). Jedná se o kolekci nejpoužívanějších unixových nástrojů,
které jsou součástí jednoho spustitelného souboru. Plná instalace zahrnuje
více než 190 programů, ale není pochopitelně potřeba překládat všechny
nástroje. Lze jej přeložit s knihovnou glibc, ale i s menší uClibc, což je
vhodné především pro zabudované systémy.
Volat binární soubory busyboxu je možné dvěma způsoby. Buď explicitně
napsat busybox příkaz [parametry]
, anebo
vytvořit soustavu odkazů a busybox podle názvu souboru pozná, který program
má spustit. Je nutné mít na paměti, že GNU nástroje, které denně používáme,
mají oproti těm z busyboxu více možností.
Jak jsme si již řekli, v initrd
je umístěn malý systém,
který má za úkol připravit systém tak, aby mohl běžet z CD. Jenže konkrétní
činnosti závisí na konkrétním řešení, a proto bude nejlepší tento proces
ukázat na příkladu distribuce Slax, respektive skriptů
linux-live
, s jejichž pomocí je vytvářena.
V prvním díle byl uveden příklad konfigurace zavaděče
isolinux
. Pokud si ji nepamatujete, tak zde je malé
připomenutí:
label linux kernel boot/vmlinuz append max_loop=255 initrd=boot/initrd.gz init=linuxrc load_ramdisk=1 prompt_ramdisk=0 ramdisk_size=4444 root=/dev/ram0 rw
Přímo ze zadaných parametrů můžeme vyčíst sekvenci kroků, které jádro
po načtení zavaděčem provede. Rozbalí definovaný initrd
do
paměti a protože je explicitně určen jako kořenový adresář zařízení
/dev/ram0
(což je rozbalený initrd
), spustí
program definovaný parametrem init
. Ten se podle konvence
nazývá linuxrc
a právě on je zodpovědný za správné nastavení
systému před jeho nabootováním.
Pokud vás zajímá, jak probíhá prebootovací nastavení systému, tak máte
dvě možnosti. Můžete si spustit Slax nebo ABC Linux 2005 s parametrem
debug
. Ten způsobí, že se po každém kroku systém zastaví a
dostanete se do shellu, což je ash
z busybox
u.
Druhou možností je zkopírovat si soubor boot/initrd.gz
,
rozbalit, připojit a obsah linuxrc
si přečíst sám, protože se
jedná o shellový skript.
Skript linuxrc
, které používá sada nástrojů
linux-live
potřebuje knihovnu funkcí zvanou
liblinuxlive
, která se používá i ve spoustě skriptů
distribuce Slax. Proto prvním zajímavým příkazem je:
. liblinuxlive
Následuje připojení základních adresářů /proc
a
/sys
, které jsou důležité pro jádro.
mount -t proc proc /proc mount -t sysfs sysfs /sys
Dále jsou definovány důležité adresáře a proměnné:
UNION=/union MEMORY=/memory MOUNTDIR=mnt CHANGES=$MEMORY/changes COPY2RAM=$MEMORY/copy2ram IMAGES=$MEMORY/images INITRAMDISK=$MOUNTDIR/live
Skript natáhne základní moduly, které jsou nutné pro úspěšný start
systému, což zařídí knihovní funkce
modprobe_essential_modules
. Ta natáhne moduly
loop
, isofs
, squashfs
,
unionfs
, vfat
, ntfs
a moduly
nls
, Native Language support, pro kódové stránky cp437,
iso-8859-1 a iso-8859-2. Poslední akcí je vytvoření blokových zařízení
funkcí create_block_devices
. Jejich seznam je v adresářích
/sys/block/*/dev
a /sys/block/*/*/dev
. Někdy je
nutné dopředu nahrát i USB moduly (týká se to třeba USB klávesnice), proto
se, v případě zadání bootovacího parametru probeusb
, zavedou
moduly ehci-hcd
, ohci-hcd
, uhci-hcd
a usb-storage
a znovu dojde k vytvoření případných nových
blokových zařízení.
mount -t unionfs -o debug=0,dirs=$CHANGES=rw unionfs $UNION
Mimo tvorby důležitých adresářů se připojí adresář
/memory/changes
jako read-write větev pro hlavní adresář.
Pokud jste ještě nezapomněli obsah minulého dílu LiveCD - 3 (podpora
pro zápis), tak jistě tušíte, že tento příkaz zajistí, že se budou
zapisovat změny vůči read-only adresáři.
Pokud jste si prohlíželi obsah CD, možná jste objevili soubor
livecd.sgn
s textem
All available discs and CDROMs are mounted during the boot process. When done, linuxrc script is looking for this livecd.sgn file. It tells linuxrc where to mount the live filesystem from. Don't delete this file, else your LiveCD won't work
Skript postupně prochází a připojuje všechny disky a oddíly, přičemž
hledá, zda tento soubor existuje. Pokud ne, zkusí ještě zavést ovladače USB
a toto hledání zopakovat. Pokud ani teď nic nenalezne, skončí boot chybovým
hlášením. Tato funkce nastaví proměnnou $DATA
na adresář
/base
na CD.
if [ "`cmdline_parameter toram`" != "" -o "`cmdline_parameter copy2ram`" != "" ]; then echolog "copying modules to RAM, this may take some time" copy_to_ram $DATA $COPY2RAM cd_autoeject 1 umount $DATA 2>/dev/null if [ $? -ne 0 ]; then umount `dirname $DATA` 2>/dev/null; fi DATA=$COPY2RAM cd_autoeject 0 fi
Ano, právě tento kód zajišťuje funkci copy2ram, díky
které je obsah celého CD zkopírován do operační paměti a práce s ním je
velmi rychlá (nemluvě o uvolněném CD). Jak je vidět, hlavní zásluhy na tom
má funkce copy_to_ram
, která zkopíruje obsah datového
adresáře $DATA
i všechny dostupné moduly do paměti. Bohužel
nijak nekontroluje množství dostupné paměti, takže pokud jí nemáte
dostatek, zkopírování skončí chybou.
Dalším krokem je vložení modulů do souborového systému. To sestává ze dvou fází.
# pripojeni squashfs obrazu mount -t squashfs -o loop,ro cesta_k_modulu pripojny_bod echo "cesta_k_modulu pripojny_bod" >>/tmp/_mounts # vlozeni pripojneho bodu do unionfs unionctl pripojny_bod --add --after 0 --mode ro absolutni_cesta
Nejprve musíme někam připojit squashfs obraz a potom přidat to "někam"
do struktury unionfs (všimněte si, že to připojujeme jako ro
).
Potom následuje prosté zkopírování adresáře /rootchanges
.
Velmi zajímavou funkcí je automatické vytváření souboru
/etc/fstab
, bohužel je funkce activate_fstab
příliš rozsáhlá na to, abych jí sem napsal celou. Proto napíši pouze jeho
jednotlivé kroky:
tmpfs / tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 proc /proc proc defaults 0 0se zapíší vždycky.
/proc/sys/dev/cdrom/info
se
vloží řádek
/dev/jednotka /mnt/jednotka_cdrom iso9660 noauto,users,exec 0 0kde jednotka je název zařízení z
/dev
(například
hdc
)./proc/partitions
, přičemž se navíc kontroluje v přítomnost
souboru /sys/block/jednotka/removable
, který označuje výměnnou
jednotku (připojují se do adresáře /mnt/jednotka_removable
).
Oddíl se připojí do dočasného adresáře a ze souboru
/proc/mounts
se zjistí systém souborů a do
/etc/fstab
se zapíše:
/dev/jednotka /mnt/jednotka souborovy_system auto,users,suid,dev,exec 0 0
fdisk -l
se zjistí swapovací oddíl a příslušný
řádek je
/dev/jednotka swap swap defaults 0 0
/dev/fd0 /mnt/floppy auto noauto,users,suid,dev,exec 0 0
Následuje vytvoření některých důležitých adresářů (dev
,
proc
, sys
a tmp
) a vše se
připravuje k velkému finále, chroot
nutím do paměti spuštěním
programu /sbin/init
. Vzniklou adresářovou strukturu si můžete
prohlédnout na unionfs.org (úplně
dole).
/sbin/init
Po provedení všech potřebných úkonů se schyluje k zahájení vlastního spuštění distribuce.
echolog "changing root directory..." cd $UNION mkdir -p $INITRAMDISK umount /sys # we won't need it anymore if [ ! -e $UNION/dev/console ]; then mknod $UNION/dev/console c 5 1; fi if [ -x $UNION/usr/sbin/chroot ]; then CHROOT=/usr/sbin/chroot else CHROOT=/usr/bin/chroot fi header "linux live end"
Systém změní pracovní adresář na $UNION
(/union
) a vytvoří adresář /mnt/live
, pomocí
něhož máme později přístup k modulům a podobně. Odpojí /sys
a
pokud neexistuje zařízení console
, je vytvořena. Potom se již
nastaví cesta k programu chroot
a vypíše se hlášení o
dokončení skriptu linux live.
pivot_root . $INITRAMDISK exec $CHROOT . sbin/initdev/console 2>&1; fi header "ERROR!" echolog "You are not supposed to be here, something went wrong!" echolog "Even Ctrl+Alt+Del won't help you in kernel panic."
Nejprve je příkazem pivot_root
změněn kořenový adresář z
/union
na /union/mnt/live
a zbytek systému je
spuštěn v chrootu (s kořenovým adresářem umístěným v /union
).
Důležité je, že je vstup i výstup procesu /sbin/init
přesměrovnán na konzoli!
Dnešní díl nás zavedl do tajů nastavení systému před vlastním startem. Podotýkám, že uvedená metoda je specifická pouze pro distribuce, které používají skripty linux live, ostatní se mohou chovat úplně jinak. Příští díl by měl být přece jenom praktičtější a bude se týkat distribuce Slax a možnostmi jeho úprav.
Nástroje: Tisk bez diskuse
Tiskni
Sdílej: