Portál AbcLinuxu, 2. září 2026 22:53

unmerged-bin

9.7. 19:02 | Přečteno: 1644× | Za vším hledej Linux | poslední úprava: 10.7. 13:25

A co s tím.

Nepatřím mezi ty, kterým se stýská po spouštění linuxových služeb přes Sysv-rc skripty, i když mi paralelní spouštění procesů, které sebou přineslo systemd, zpočátku komplikovalo život. Protože pro sendvičový systém je hotové požehnání. Už nemusím udržovat pro různé konfigurace specifické verze skriptů, protože symlinky, přes které se služby spouští, jsou v ultratenkých konfiguračních vrstvách, které lze po libosti kombinovat, jako je tomu u stroje D.

Diagnostika v prostředí disklessu

~$ systemctl status
..
~$ systemctl --failed
..

Patří mezi základní diagnostické příkazy co používám, když zjišťuje kde může být problém.

~# cat /run/sandwich
..
~# less /run/nfsroot
..
~# ip addr show
..
~# cat /proc/cmdline
..
~# cat /proc/version
..

Jsou ty ostatní, které lze použít i v ramdisku, když se do spuštěného systému nedá přihlásit, nebo když kernel během spouštění začne panikařit:

  1. Vypíše seznam vrstev ze kterých je složen sendvič, který byl namountován (v ramdisku) na přípojný bod /root. Pokud některá z nich chybí, může být chyba buď v konfiguračním souboru, nebo exportu. Proto je třeba zjistit, zda-li není chyba v konfiguraci.
  2. Konfigurační soubor se stahuje na základě různých faktorů, ale na klientské stanici je vždy uložen jako tenhle soubor, proto je důležité záhlaví.
  3. Hostname přiděluje DHCP server, ale pokud takový konfigurák na serveru není, stáhne se obecná konfigurace podle IPv4 adresy brány.
  4. Nejvyšší prioritu však má atribut name=, předaný jako parametr jádra.
  5. Nejčastější chybou která se stává, je zavedení jiné verze jádra než je potřeba. Tuhle informaci předává GRUB2. Proto je potřeba v prvé řadě zkontrolovat, jestli se natáhlo správné jádro a správný ramdisk.

Sjednocení adresářů

Přes systemctl a journalctl řeším jenom prkotiny, závislé na lokální HW konfiguraci, takže ani nevím, kdy jsem poprvé zaregistroval ve výpisu řádek, na kterém se zobrazuje iritující žluté Tainted: unmerged-bin a když jsem zapátral na webu, dočetl jsem se, že to souvisí se slučováním adresářů do /usr/bin. State: running svítil zeleně, tak jsem to dál neřešil.

Stroje A, B, C, D, E, F a G

Určitě to ale bylo loni, když jsem přecházel z bookwormu na trixie. Jako první na něm jel stroj A, protože využívá jenom CLI nástroje.

Je to jenom diskless, tak jsem zkusmo na straně NFS přesypal obsah z /bin do /usr/bin a /sbin do /usr/sbin, v kořeni vyrobil symlinky systemctl byl spokojený.

Podruhé jsem se s tím setkal při aktualizaci stroje B, kterou jsem začal ještě před aktualizací stroje C, ale dokončil až po ní.

Udělal jsem to samé co u stroje A, ale tentokrát to nestačilo. Teprve až jsem přesunul obsah /usr/sbin do /usr/bin byl systemctl spokojený, ale já ne. Protože mi nebylo jasné, jak to má být správně.

A když se to žluté oznámení objevilo i během přípravy zbrusu nové base vrstvy aktualizovaného systému pro laborky, začalo mne to iritovat. Očekával jsem že, po instalaci přes cdebootstrap už budou ty symlinky vytvořeny správně, podobně jako u lib adresářů, jenže nebyly. A tak jsem si udělal malou rekapitulaci jak to vypadá na strojích, s nimiž jsem měl poslední dobou co do činění a setřídil ji podle verze systemd. A pro lepší orientaci jim přiřadil písmena:

A – bylo disklessové trixie s 6.5 jádrem, spuštěné loni na jaře
B – je trixie s jádrem 6.12.73+deb13, aktualizované letos na jaře
C – je disklessové trixie s jádrem 6.12.43+deb13, aktualizované loni na podzim
D – je disklessové trixie s jádrem 6.12.86+deb13
E – je forky (sid) s jádrem 7.0.9+deb14, který je na mém domácím desktopu
F – je forky (sid) s jádrem 6.19.8+deb14, který je na mé domácí SSH bráně
G – je forky (sid) s jádrem 6.8.12 co mám na notebooku

  systemd: 252.36-1~deb12u1
   CGroup: /

A:~# ls -ald {/bin,/sbin,/usr/sbin,/usr/bin}
lrwxrwxrwx 1 root root   7 Mar 26  2025 /bin -> usr/bin
lrwxrwxrwx 1 root root   8 Mar 26  2025 /sbin -> usr/sbin
drwxr-xr-x 1 root root 148 Apr 28  2020 /usr/bin
drwxr-xr-x 1 root root 100 Apr  9  2025 /usr/sbin

  systemd: 257.9-1~deb13u1
   CGroup: /

B:~# ls -ald {/bin,/sbin,/usr/sbin,/usr/bin}
lrwxrwxrwx 1 root root     7  9. čec  2025 /bin -> usr/bin
lrwxrwxrwx 1 root root     8  9. čec  2025 /sbin -> usr/sbin
drwxr-xr-x 1 root root 42714 15. kvě 16.38 /usr/bin
lrwxrwxrwx 1 root root     3 27. bře 21.41 /usr/sbin -> bin

  systemd: 257.13-1~deb13u1
  Tainted: unmerged-bin
   CGroup: /

C:~# ls -ald {/bin,/sbin,/usr/sbin,/usr/bin}
lrwxrwxrwx 1 root root     7  2. čec  2025 /bin -> usr/bin
lrwxrwxrwx 1 root root     8  2. čec  2025 /sbin -> usr/sbin
drwxr-xr-x 1 root root 37074 23. čen 13.28 /usr/bin
drwxr-xr-x 1 root root  6308 23. čen 13.25 /usr/sbin

  systemd: 257.13-1~deb13u1
   CGroup: /

D:~# ls -ald {/bin,/sbin,/usr/sbin,/usr/bin}
lrwxrwxrwx 1 root root   7 Jun 10 13:58 /bin -> usr/bin
lrwxrwxrwx 1 root root   7 Jul  8 08:32 /sbin -> usr/bin
drwxr-xr-x 1 root root 148 Apr 28  2020 /usr/bin
lrwxrwxrwx 1 root root   3 Jul  8 08:46 /usr/sbin -> bin

  systemd: 261~rc1-1
  Tainted: unmerged-bin
   CGroup: /

E:~# ls -ald {/bin,/sbin,/usr/sbin,/usr/bin}
lrwxrwxrwx 1 root root     7 10. srp  2025 /bin -> usr/bin
lrwxrwxrwx 1 root root     8 10. srp  2025 /sbin -> usr/sbin
drwxr-xr-x 1 root root 35588 25. kvě 21.57 /usr/bin
drwxr-xr-x 1 root root  5814 25. kvě 21.19 /usr/sbin


  systemd: 260.1-1
  Tainted: unmerged-bin
   CGroup: /

F:~# ls -ald {/bin,/sbin,/usr/sbin,/usr/bin}
lrwxrwxrwx 1 root root     7 20. pro  2022 /bin -> usr/bin
lrwxrwxrwx 1 root root     8 20. pro  2022 /sbin -> usr/sbin
drwxr-xr-x 1 root root 34856  1. dub 22.56 /usr/bin
drwxr-xr-x 1 root root  8324  1. dub 22.56 /usr/sbin

  systemd: 261.1-2
   CGroup: /

G:~$ ls -ald {/bin,/sbin,/usr/sbin,/usr/bin}
lrwxrwxrwx 1 root root      7 26. zář  2022 /bin -> usr/bin
lrwxrwxrwx 1 root root      7  3. čec 17.42 /sbin -> usr/bin
drwxr-xr-x 1 root root 100666  3. čec 17.20 /usr/bin
lrwxrwxrwx 1 root root      3  3. čec 17.51 /usr/sbin -> bin

Sjednocení za běhu

U virtuálního stroje B, nemám na rozdíl od disklessu přístup na úložiště, pokud ten stroj neběží, proto jsem ho musel řešit za běhu. A za běhu jsem řešil také stroj G (můj notebook).

  1. Nejdřív jsem nakopíroval obsah z adresářů /bin, /sbin a /usr/sbin do adresáře /bin
  2. Pak jsem původní adresář /bin přejmenoval a vyrobil místo něj symlinky na /usr/bin a stejným způsobem jsem řešil také /sbin a /usr/sbin
  3. Zrušil jsem je až po rebootu, když se ukázalo že všechno běží bez problému.

Stejným způsobem jsem to řešil také u stroje G (můj notebook), když se po aktualizaci ve výpisu objevilo to žluté oznámení.

Ale nebylo mi jasné, jestli má vést symlink /sbin rovnou na /usr/bin, nebo na symlink /usr/sbin. Tak jsem upravil symlink /sbin, aby vedl rovnou na /usr/bin, a zkusil co to udělá.

Při startu ten systemd na můj vkus nějak dlouho přemýšlel, ale systém normálně najel, byť s menší prodlevou, tak už jsem to nechal být. Ale faktem je, že dokud ty symlinky byly stejně jako na stroji B, tak to systemd najíždělo rychleji.

Jak to má být „správně”?

To mi se mi vypsalo až dnes, při aktualizaci base vrstvy, používané u stroje D. Viz obrázek:

Debian tedy vyžaduje aby byl symlink /bin → /usr/bin a symlink /sbin → /usr/sbin → bin

Proč má smysl u disklessu ty adresáře sjednotit?

Základem stroje D je ten bootstrapovaný stable trixie o kterém jsem už hovořil. Je to base disklessová vrstva, obložená vrstvami iscsi a docker, okořeněná obecnou vrstvou config. Stejnou vrstvu bude využívat také aktualizovaný laboratorní systém určený pro výuku.

Díky tomu, že už byla sjednocena, se všechny binární soubory instalují do /usr/bin. Pokud bych to neudělal, sypaly by je apt do systému podle toho, jakou mají uvedenou cestu v balíku.

Také staré vrstvy, které ještě nejsou sjednoceny, stačí v rámci sendviče umístit až pod „chleba” – to je ta base vrstva – a nehrozí že z těch vrstev probublá něco nechtěného nahoru, protože ty symlinky původní adresáře přerazí.

       

Hodnocení: 100 %

        špatnédobré        

Obrázky

unmerged-bin, obrázek 1 unmerged-bin, obrázek 2

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

10.7. 20:24 pavele
Rozbalit Rozbalit vše Re: unmerged-bin
Odpovědět | Sbalit | Link | Blokovat | Admin
Existuje kromě tebe někdo další, kdo tomu rozumí a je schopný to po tobě převzít, pokud budeš např. na dovolené nebo nemocný?
10.7. 20:27 Want
Rozbalit Rozbalit vše Re: unmerged-bin

Už jo.

10.7. 20:52 Want
Rozbalit Rozbalit vše Re: unmerged-bin
11.7. 09:20 pavele
Rozbalit Rozbalit vše Re: unmerged-bin
LLM umí na rozdíl od tebe zprovoznit docker a spustit kontejner, takže jo.
11.7. 11:08 Aleš Kapica | skóre: 52 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: unmerged-bin

A na tohle moudro jsi přišel na základě čeho? Toho, jak jsme řešili rozjebaný stack na stroji D, který nerozdýchal upgrade hostitele, nebo ti to pošeptala křišťálová koule?

11.7. 11:14 Aleš Kapica | skóre: 52 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: unmerged-bin

Něco zprovoznit a spustit, umí každý blb. Ale udržet to v běhu už taková sranda není.

11.7. 12:19 Zkratka
Rozbalit Rozbalit vše Re: unmerged-bin
Odpovědět | Sbalit | Link | Blokovat | Admin
Jedna taková užitečná zkratka, místo:

ip addr show

Lze zapsat jen:

ip a

Show je default akce a a je zkratka pro addr.

Podobně se dá udělat místo ip route show jen:

ip r

Kdo to nezná, bude rád.
11.7. 18:05 kolcon
Rozbalit Rozbalit vše Re: unmerged-bin
Odpovědět | Sbalit | Link | Blokovat | Admin
mas stesti, ze nejsem tvuj nadrizeny a nemuzu te s tim bastlem poslat ... na pracak

tady mas par AI bodu jak to postavit udrzitelneji, tentokrat zdarma.

Base + Overlay — SquashFS (nebo NFS ro) jako lower + OverlayFS s tmpfs upper (overlayroot nebo dracut dmsquash-live). Testuj NFSv4 + overlay kompatibilitu hned na začátku.

Boot — dracut (s moduly pro nfs, overlay, network, debug). Zachovej klíčové custom prvky (crypto, WiFi v ramdisku) jako dracut moduly nebo hooks, ne plné custom skripty.

Vrstvení — 1 base + config overlay (git pull na bootu nebo bind-mount). Pro složité appky Podman rootless + pre-built images. Zachovej možnost více lowerdir v OverlayFS, ale omezeně.

Správa — CI pipeline (build, test v QEMU, deploy). Git pro config + Ansible pro post-boot. Přidej centralní monitoring bootu (journald forward) a cache (apt-cacher-ng / Squid).

Dlouhodobě — NixOS jako postupný cíl (nejdřív na testovacích strojích), zatím zůstaň u Debianu s výše uvedeným. Dokumentuj vše v repu + automatické testy bootu.

Výsledek: méně custom kódu, snadnější upgrade, nižší údržba, stejné funkce (reset, různé lab configy).
11.7. 20:34 Want
Rozbalit Rozbalit vše Re: unmerged-bin

Takhle už to fungovalo před 15 lety komiku. Se svým přehledem pochopíš moje řešení možná tak v roce 2050.

mas stesti, ze nejsem tvuj nadrizeny a nemuzu te s tim bastlem poslat ... na pracak

Spíš smůlu. Jenomže to ty nikdy nepochopíš..

11.7. 20:54 Want
Rozbalit Rozbalit vše Re: unmerged-bin

.. protože jsi nečetl můj blogpost o loyalitě, který jsem napsal dva měsíce předtím, než jsem odešel, na den přesně po 5 letech, do Prahy.

11.7. 21:02 eecht
Rozbalit Rozbalit vše Re: unmerged-bin
Jak ti to 20 minut leželo v palici :-D :-D :-D :-D
11.7. 21:45 ..
Rozbalit Rozbalit vše Re: unmerged-bin
ono neni nic horsiho, nez vedomi, ze je clovek totalne zbytecnej... to okolo toho bude tancovat a skakat do stropu vzdycky, ale ze by priznal, ze ma kurva stesti, ze se jim porad chce ho krmit, to nehrozi :-D koneckoncu, s tim vsim, co uz vsechno "stihl" zazit, ani nema odkud vedet, jak to chodi v normalnim svete :-D

vzdyt tady je uplne, ale totalne burt, jak je to udelany, hlavne, ze je koho svozit, kdyz to nefunguje, jak si to solicha, je preci dost jedno - penezma vyjde jako dva tri pocitace rocne, coz pri tempu obnovy toho vybaveni, jaky je potreba, aby studenti studovali IT a ne archeologii... je dost jedno proste :-D

ono to proste neni potreba na zadnou stranu menit, tady pan si to svoje dozije, pak tam na to zbyde zas nekdo jinej, kdo si to bude solichat zas uplne jinak po svym - a kdyz se nikdo nenajde, tak se to holt outsourcne, myslim, ze okolo toho nejsou potreba vubec zadny emoce ani jednim smerem

vzdyt je to cely uplne jedno... nahraditelnost je jasna, ale komu by se chtelo neco menit... zmena je risk... a risk ve statem financovanych zalezitostech neni promenna, s kterou se pracuje, aby se nekdo nekam dostal, ne... risk je neco, cemu je potreba se za kazdou cenu vyhnout, okolnosti sral pes :-)
11.7. 22:21 Want
Rozbalit Rozbalit vše Re: unmerged-bin

Ty jsi tak chytrý, že bys mohl jít Babišovi z fleku dělat poradce. Tvá moudra, kde všude, na kom a jak se dá ušetřit by jistě ocenil.

11.7. 22:26 ..
Rozbalit Rozbalit vše Re: unmerged-bin
nerikej dvakrat :D nevsim sis kterym penezovodum tedka mr babis sefuje? :D nic jo? a ani ted, nedopina?
11.7. 22:34 Want
Rozbalit Rozbalit vše Re: unmerged-bin

Povídej. Přeháněj. Ale pokud si myslíš, že bych se měl toho bát, jsi dost na omylu.

11.7. 22:29 Want
Rozbalit Rozbalit vše Re: unmerged-bin
ono neni nic horsiho, nez vedomi, ze je clovek totalne zbytecnej...

Tak sis měl ten život zařídit trochu jinak.

11.7. 22:17 Want
Rozbalit Rozbalit vše Re: unmerged-bin

Neleželo. Vystupoval jsem, mezi tím než jsem to odeslal, z vlaku.

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.