Portál AbcLinuxu, 30. dubna 2025 10:24
Tak jsem zkusil přejít na ten zlý, hnusný systemd.
Co budeme potřebovat:
Příslušné balíčky pro první kolo jsou: systemd
a systemd-arch-units
.
Následuje úprava konfigurace zavaděče, třeba takto (GRUB 2 na hikari, ano píšu si ručně
grub.cfg
):
# (0) Arch Linux GUI Mode menuentry "Arch Linux GUI" { search --fs-uuid --no-floppy --set=root 0a65abc8-fd5f-4e5a-9177-f5fedf9137c7 linux /vmlinuz-linux cryptdevice=/dev/disk/by-uuid/7b31337e-021d-421f-91df-0a81277825ed:hikari_ssd_luks root=/dev/hikari_ssd_lvm/root resume=/dev/hikari_ssd_lvm/swap ro quiet pcie_aspm=force 5 i915.i915_enable_rc6=0 init=/bin/systemd systemd.unit=graphical.target quiet initrd /initramfs-linux.img } # (1) Arch Linux CLI Mode menuentry "Arch Linux CLI" { search --fs-uuid --no-floppy --set=root 0a65abc8-fd5f-4e5a-9177-f5fedf9137c7 linux /vmlinuz-linux cryptdevice=/dev/disk/by-uuid/7b31337e-021d-421f-91df-0a81277825ed:hikari_ssd_luks root=/dev/hikari_ssd_lvm/root resume=/dev/hikari_ssd_lvm/swap ro quiet pcie_aspm=force i915.i915_enable_rc6=0 init=/bin/systemd systemd.unit=multi-user.target verbose initrd /initramfs-linux.img }
Parametr init
je potřeba jen do případné pozdější instalace systemd-sysvcompat
.
Parametr systemd.unit=multi-user.target
říká, že se má nabootovat do obdoby runlevelu 3, ze
kterého provádím upgrady a synchronizaci dat s notebookem. graphical.target
je pak obdoba
runlevelu 5 a je výchozí, v mém případě proběhne automatické přihlášení do KDE. Parametrem quiet
se zbavíme většiny výpisů během startu, s verbose
budou vidět.
Většinu dalších potřebných konfiguráků už v systému máme od konce července. Dle Wiki jen zduplikujeme nastavení času a jazyka:
[nik@hikari ~]$ cat /etc/environment # # This file is parsed by pam_env module # # Syntax: simple "KEY=VAL" pairs on separate lines # LANG=cs_CZ.UTF8 [nik@hikari ~]$ cat /etc/timezone Europe/Prague
Pokud chceme používat syslog-ng
, nastavíme v /etc/syslog-ng/syslog-ng.conf
nový
socket unix-dgram("/run/systemd/journal/syslog");
.
Nyní určíme, které služby se mají spouštět. Aby to fungovalo, musí existovat příslušné .service jednotky.
Ty dodané s balíčky najdeme v /usr/lib/systemd/system/
, některé další v posledním odkazovaném
WIKI článku. V mém případě šlo o: network
(statické nastavení sítě), cpufreq
(nastavení škálování frekvence CPU), rc-local
(spouštění skriptu /etc/rc.local, používám pro
zapnutí numlocku a SPDIF), transmissiond
a cron
(stačí namísto dcron
nainstalovat cronie
). Příslušné .service soubory pak patří do /etc/systemd/system/
,
stejně jako ty, co si sami upravíte. U mě šlo o openntpd.service
, kam jsem přidával volbu
-s
, ježto openntpd
nerad velké změny času.
Když máme všechny .service jednotky po kupě, povolíme je třeba takto (dbus
a
alsa-*
povolovat netřeba, naopak preferovaný display manažer ano):
systemctl enable {všechny,služby,co,chci}.service
.service jednotky, neřeší ale jen démony, ale také LVM a další. Pro klasické „viditelné“ LVM
je tu lvm.service
, pro LVM na šifrovaném svazku odemykaném přes /etc/crypttab
(u mě druhý disk) je tu lvm-on-crypt.service
.
Pokud jsme všechno nastavili správně, po restartu už najede systemd. Podle naší chybovosti se můžeme setkat
s login promptem, chybně spuštěnými jednotkami ve výpisu systemctl
či journalctl
,
záchraným režimem emergency.target
,
Lenartem se zlým zábleskem v očích, …
Nyní vyčistíme systém od SysV initu: pacman -R initscripts sysvinit
a pro korektní nastavování
locale a hezké symlinky nainstalujeme systemd-sysvcompat
. No a máme Arch Linux bez
rc.conf
.
Relevantní část bootu (Zadání LUKS hesla – KDM) trvá cca 7 vteřin, oproti s sysvinitem naměřeným 8 vteřinám je to v nerozlišitelné oblasti. systemd-analyze
dává následující čísla, jež ale se sysvinitem porovnat neumím:
Startup finished in 13443ms (kernel) + 8906ms (userspace) = 22350ms
Za ně pak viní především openntpd
, což je způsobeno zmiňovanou volbou -s
:
5080ms openntpd.service 1809ms systemd-cryptsetup@hikari_hdd_luks.service 1793ms systemd-udev-settle.service 531ms lvm.service 296ms network.service 226ms lvm-on-crypt.service 218ms systemd-logind.service 209ms console-kit-log-system-start.service 174ms rc-local.service 160ms systemd-user-sessions.service 156ms systemd-udev-trigger.service 150ms systemd-vconsole-setup.service 140ms systemd-modules-load.service 139ms systemd-sysctl.service 137ms sys-kernel-debug.mount 130ms dev-mqueue.mount 116ms dev-hugepages.mount 96ms cpufreq.service 70ms console-kit-daemon.service 66ms systemd-remount-fs.service 63ms home-nik-Dokumenty.mount 53ms var.mount 53ms home.mount 33ms boot.mount 30ms backup.mount 23ms systemd-tmpfiles-setup.service 16ms systemd-udevd.service 13ms upower.service 9ms tmp.mount
Pokud člověk nedá na různé zdejší i cizí kvákaly, a nezalekne se obsáhlého a místy možná trochu nejasného článku na WIKI, není přechod na systemd nic složitého a na třetím stroji to už děláte zpaměti. A teď si jdu sehnat azbestové spodky…
Tiskni
Sdílej:
Skleroza? Napriklad prechod na openrc...ehm ... "Migration to OpenRC is fairly straightforward; it will be pulled in as part of your regular upgrade process by your package manager." (k následně zmíněnému
dispatch-conf
- etc-update
dělám automaticky pokaždý, to nepovažuju za extra migrační krok)
jestli to někomu nezafungovalo, hm, smůla - ovšem jest jistý rozdíl mezi nutností ošetřit speciální případy, a nucením všech do ruční migrace
prostě každej má hodiny času řešit po fórech, jak to vlastně zupgradovat ...Tohle plati do puntiku presne o update.microsoft.com - Kvuli jejich dementnim 0x8xxxxx chybam je clovek na foru kazdou chvili, kde stejne najde ho*no (krome MS MVP "expertu", kteri tam neco kvaknou a hned si oznaci odpoved za spravnou). Posledni zazitky:
další, co nechápe rozdíl mezi bugem a featurou?prostě každej má hodiny času řešit po fórech, jak to vlastně zupgradovat ...Tohle plati do puntiku presne o update.microsoft.com - Kvuli jejich dementnim 0x8xxxxx chybam ...
/etc/rc.conf
. Takže musím říct, že se mi cesta, po které Arch nyní kráčí, vůbec nelíbí (a je mi úplně putna, jestli je to pro dobro věci).
+1, mezi další věci, co mě vytočily jsou povinný checksumy v PKGBUILDu (už dávno - totální buzerace...) a podepisování balíčků (to má svoje výhody, ale prostě... v jednoduchosti je síla). Co je mi úplně jedno je sjednocení binů a libů... Ale celkově mě přijde, že se mi ten Arch líbí čím dál tím míň
V tomhle jsou právě geniální "konzervativní" *BSD systémy. Kdyby mi fungovala hibernace a líp 3D akcelerace u nVidie, tak už jedu 100% na NetBSD/FreeBSD.
Za sebe mohu říct, že to, co mne před (celkem dost) lety přitáhlo k Archu, byl asi tak z 90 % právě /etc/rc.conf.Proč? To je ten typ konfiguráku, kterej člověk nastavuje jednou za 100 let. Celkem nevidim moc velkej rozdíl mezi skrolováním v jednom dlouhým souboru a editováním několika malých... A síť se v tom stejně rozumně nastavit nedala... Jestli mně se něco u Archu libí, tak je to pacman.
Proč? To je ten typ konfiguráku, kterej člověk nastavuje jednou za 100 let.A které konfiguráky se nastavují denně (či měsíčně)?
Celkem nevidim moc velkej rozdíl mezi skrolováním v jednom dlouhým souboru a editováním několika malých...Po hledání konfiguráků v "klasických" distribucích pro mne byl rc.conf něžným pohlazením. Přehledný, jednoduchý, funkční.
A síť se v tom stejně rozumně nastavit nedala...Já jsem v něm vždy nastavil síť v pohodě i s více síťovými kartami.
Jestli mně se něco u Archu libí, tak je to pacman.Když už mluvíš o balíčcích, tak za mne je to spíš ABS. Pacman sám o sobě nějaké výhody oproti jiným nemá.
A které konfiguráky se nastavují denně (či měsíčně)?No, asi takhle:
rc.conf
jsem nastavil, když jsem instaloval Arch, a od tý doby jsem na něj nešáh (snad kromě přidání kfortune
2 roky zpátky). Zato jiné konfiguráky jsem od tý doby určitě editoval vícekrát. Třeba pacman.conf
, httpd
apod...
Já jsem v něm vždy nastavil síť v pohodě i s více síťovými kartami.Na statické konfiguraci to asi jde, ale pro notebook na cesty to není.
Zato jiné konfiguráky jsem od tý doby určitě editoval vícekrát. Třeba pacman.conf, httpd apod...pacman.conf moc editací nepotřebuje (nebo snad měníš co chvíli použité repozitáře?) a httpd? Snad občas virtualhosts?
Na statické konfiguraci to asi jde, ale pro notebook na cesty to není.No na notebooku používám networkmanager
pacman.conf moc editací nepotřebuje (nebo snad měníš co chvíli použité repozitáře?) a httpd? Snad občas virtualhosts?
IgnorePkgs
měním dost často. U httpd jsem párkrát měnil interface a ještě něco, už nevim co, nějaký experimenty...
No na notebooku používám networkmanager+1
IgnorePkgs měním dost často.Ignorované balíčky měním jen výjimečně. Od počátku tam mám linux-lts a linux-lts-headers (používám vlastní konfiguraci jádra), a jediné, co jsem doplňoval, byl cinepaint (poslední verze je nějaká rozbitá, neumí otevřít nic, než .xcf). jinak mi funguje vše bez problémů (ale to je samozřejmě otázka balíčků v systému).
U httpd jsem párkrát měnil interface a ještě něco, už nevim co, nějaký experimenty...Tak experimentovat se dá s čímkoliv. Až tě experimentování přestane bavit, už na ten kofigurák moc sahat nebudeš :)
Tak experimentovat se dá s čímkoliv. Až tě experimentování přestane bavit, už na ten kofigurák moc sahat nebudeš :)Anebo jo
man archlinux
.
man mplayer
(nebo něco), pak dáš lomítko, napíšeš co tě zajímá (regexp) a odentruješ n
a p
se posunuje ve výsledcích. Tak to alespoň řešim já...
init=/bin/systemdInit v /bin? Coze? To je vymysl Archu nebo systemd?
systemctl
probíhá přes /run/systemd/private
. Důvodem, proč je to v /bin
je, že systemd by měl do budoucna nahradit i sedící správce desktopových prostředí. Proto dokáže běžet i jako ne PID 1 program. Aktuálně se mluvilo o něčem pro Gnome 3 a někdo z Intelu pracuje na něčem podobném pro Tizen.
Další legrace je, že dřív init skripty mohly mít různé "příkazy", třeba "service postgresql initdb". Asi to není moc čisté, ale bylo to funkční. Systemctl ovšem nic takového neumožňuje (koneckonců nejdřív se zadává příkaz až pak služba). U postgresu tedy mají samostatný skriptík, který ale ze systemd pomocí nějakého get-environment tahá nastavení (například, kdeže vlastně ta DB má na disku být).po velkých bojích (...) systemd team klesnul na kompromis, že u příkazu "service" bude zachována zpětná kompatibilita, a tedy zatímco "service postgresql initdb" dříve volalo "/etc/init.d/postgresql initdb", nyní už konečně místo vyblití chyby zavolá moderní ekvivalent v podobě "postgresql-setup" až se Lennart ještě kousek vzdálí, tak se nám možná vrátí i podpora oněch speciálních akcí namísto pevně daného seznamu, o kterém si myslí, že prostě musí stačit každému a všude ...
možná by ho napadlo služby označovat service.neco místo neco.service, aby se to lépe tabkovalo.Spíše hůře, ne?
zsh
a přestaňte se hádat systemctl start xyz<TAB>
doplní správně ať už se má doplnit xyz.service
nebo service.xyz
.
Notorický restartovači určitěHele, jó, ne každej má v ntb 10Ah baterii...
Já to mam jako přenosnej desktop kterej neni kam ani proč přenášet
systemctl -H
zjednoduší některé operace. Z některých komentářů zde i jinde nabývám dojmu, že učit se něco nového, je strašně špatně.to v žádném případě nicméně nač se učit něco nového, když už to staré umím a funguje? si představ ... u nás se jezdí vpravo, v Británii vlevo, co kdybychom si to prohodili, aby se každý naučil něco nového? budeš takovou změnu obhajovat s těmito argumenty?
A pak, člověk se učením nových věcí rozvíjí a zabraňuje zakrnění.správná myšlenka, ale neskutečně špatně aplikovaná viz výše - namísto toho, abych se přeučoval něco, co již umím, a starou znalost zahazoval, je mnohem efektivnější abych staré nezahazoval, a čas ušetřený tím, že se nebudu přeučovat, věnoval raděj učení se něčeho opravdu nového, co mě posune dál ... nebo ty snad vidíš smysl života v tom strávit ho tím, že se pořád dokola budu učit to samé ale pokaždé v novém systému?
si představ ... u nás se jezdí vpravo, v Británii vlevo, co kdybychom si to prohodili, aby se každý naučil něco nového? budeš takovou změnu obhajovat s těmito argumenty?Ono se puvodne v Evrope jezdilo vlevo, takze tenhle priklad pada, protoze lidi se museli preucit na jizdu vpravo a "zahodit" znalosti, co nabyli pri rizeni vlevo...
Ono se puvodne v Evrope jezdilo vlevo,vážně? i v takové Francii, v Německu, v Norsku ...? takže tvoje námitka padá, protože ani neznáš historii :-p
takze tenhle priklad pada, protoze lidi se museli preucit na jizdu vpravo a "zahodit" znalosti, co nabyli pri rizeni vlevo...právě naopak, tento příklad je výše uvedenou historickou zkušeností krásně podložen; stejně tak jako jej mohou potvrdit současníci, kteří cestují mezi různostrannými zeměmi
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.