Configuraziun sco datas
Cura ch’in’actualisaziun dad Arch in mardi en damaun pretenda ina nova schliaziun provisorica per ina tscherta iGPU dad Intel – tge fa in installatur tradiziunal? Nagut, fin che insatgi adatta il script bash che al maina, publitgescha in nov ISO (1 – 3 GB) e spetga che las utilisadras ed ils utilisaders al telechargian. Dis en il meglier cas, pli savens emnas.
Ditana tscherna ina via fundamentalmain differenta: configuraziun sco datas.
Trais parts separadas
Secziun «Trais parts separadas»L’architectura da Ditana è dividida en trais repositoris:
-
Il motor (
ditana-installer) – in pitschen program generic che sa co dissegnar dialogs, crear partiziuns sin discs, identifitgar la hardware ed exequirpacstrap. -
La basa da savida (
ditana-config) – ina banca da datas structurada, scritta en KDL v2. Ella declera mintga parameter, mintga particularitad da la hardware, mintga dependenza da pachets, mintga script dal ciclus da vita e las relaziuns logicas tranter els. -
La pipeline da pachets (
ditana-build) – quai che construescha ils pachets che la basa da savida numna. Il repositori da Ditana sa basa sin quel dad Arch, ed ils recepts en el vegnan reconstruids dal code da funtauna, examinads e signads da questa pipeline, empè da vegnir surpigliads tals sco ch’els èn.
Cura che Vus aviais l’ISO da Ditana, sa collia il motor cun GitHub e telechargia l’ultima versiun da la basa da savida (sche Vus n’avais nagina connexiun a l’internet, utilisescha el sco soluziun da reserva in snapshot offline che vegn furnì cun l’ISO).
Er quai che la telechargiada durant l’execuziun na cuvra betg, vala la paina da savair. Il motor sez ed il converter cun il qual el legia KDL sa chattan sin il medium e sa midan mo cun in nov medium. Ed il chanal transporta in sbagl tuttina facilmain sco ina correctura: ina configuraziun che numna in pachet ch’il repositori d’in medium pli vegl na po betg furnir, renda quel medium incapabel d’installar – quai è capità exactamain cura ch’Arch ha retratg bubblewrap-suid il settember 2026.
Pertge che quai è impurtant
Secziun «Pertge che quai è impurtant»Trais avantatgs, en l’urden da lur effect immediat:
- Actualisaziuns senza crear in nov ISO. Sch’ina utilisadra u in utilisader annunzia ch’in’actualisaziun recenta dad Arch pretenda ina nova schliaziun provisorica, arriva la correctura en
ditana-configsco pitschna modificaziun da KDL. Gia la proxima persuna che aviescha in ISO da Ditana telechargia automaticamain la logica actualisada. La correctura cuntanscha las utilisadras ed ils utilisaders immediatamain, senza che insatgi stoppia telechargiar in nov ISO. - Raschunament transparent. Cunquai ch’ils parameters èn declerads sco datas structuradas cun cundiziuns explicitas, pon las reglas vegnir controlladas dal cumenzament fin a la fin. Mintga persuna po leger las datotecas KDL e vesair exactamain pertge ch’in pachet vegn installà, tge cumbinaziun da parameters fa ch’ina datoteca da configuraziun vegn installada u tge caracteristica da la hardware furma la barriera per in’opziun. Nagina lavur da detectiv en bash.
- Contribuziuns via fork. Agiuntar ina schliaziun provisorica per la hardware, ina nova adattaziun dal desktop u ina nova tscherna da pachets pretenda per regla da modifitgar ina suletta datoteca KDL. Naginas modificaziuns vi dal motor da l’installatur – e cun excepziun dals detecturs da la hardware, ch’èn expressiuns da Raku d’ina lingia, insumma nagin Raku. Il README da
ditana-configmaina las persunas che contribueschan tras il schema; la gronda part dals pull requests tutga ina suletta datoteca.
Pertge KDL e betg JSON u YAML
Secziun «Pertge KDL e betg JSON u YAML»La basa da savida avess pudì avair mintga format structurà. KDL è vegnì tschernì, perquai ch’el ha las caracteristicas che la configuraziun da Ditana dovra propi:
- Commentaris nativs. YAML e JSON han omadus difficultads qua – YAML ha commentaris, ma il sustegn tras ils utensils è irregular; JSON n’ha insumma nagins. Ils parameters da Ditana cuntegnan commentaris detagliads che explitgeschan pertge ch’ina valur da standard è sco ch’ella è. Quests commentaris èn l’essenzial.
- Strings crivs. Fragments da shell integrads, expressiuns da sed e patruns da regex èn elements da plaina valur.
"e\na ston betg vegnir mascrads duas giadas per ch’il parser als acceptia. - Ierarchic senza ceremonias. Nufs subordinads, proprietads ed arguments existan en moda clera in sper l’auter. Il medem nuf po descriver in parameter e cuntegnair nufs subordinads per ses pachets, scripts e datotecas.
- Adattà per diffs. L’urden d’inserziun resta mantegnì. Ina revisiun dal code d’ina lingia agiuntada mussa in diff d’ina lingia, betg ina structura reordinada.
Il format vegn analisà d’in pitschen converter en Rust (json-kdl-converter, che vegn er gestì en versiuns ensemen cun il schema), avant che l’installatur en Raku l’elavura sco JSON. La proxima secziun explitgescha co che las datas vegnan validadas dal cumenzament fin a la fin avant tut quai.
Co che quai vesa or en la pratica
Secziun «Co che quai vesa or en la pratica»In parameter cumplet che funcziuna en ditana-config vesa or uschia:
// XFCE fallback for Wayland-only primary terminals (foot, cosmic-term).// Fires when the user picks a Wayland-native terminal AND also installs// XFCE. Writes to xfce-xdg-terminals.list only; xdg-terminals.list still// points at the primary terminal for Wayland sessions.- name="fallback-kitty-for-xfce" \ default-value="`(install-foot OR install-cosmic-term) AND install-xfce`" { arch-packages "kitty" \ "imagemagick" \ "python-pygments" \ "libcanberra" \ "xdg-terminal-exec-git" files "/etc/xdg/kitty/kitty.conf" \ "/usr/share/pixmaps/ditana-logo-tiny.png" chroot-script "mkdir -p /etc/xdg" \ "echo kitty.desktop >/etc/xdg/xfce-xdg-terminals.list"}Quest nuf declera in parameter derivà senza agen dialog, in’expressiun logica sur trais auters parameters, ils pachets che vegnan installads cura ch’ella è vaira, e la datoteca che fa ch’XFCE als utilisescha. La motivaziun stat sper la regla, nua ch’ina persuna che l’examinescha po vesair pertge. La documentaziun cumpletta dal schema sa chatta en il README da ditana-config.
La medema furma porta er chaussas che n’èn insumma nagins pachets. In program che dovra in spazi da num da l’utilisader senza privilegis per ses sandbox, di quai directamain sper sasez:
- name="flatpak" default-value=#true { arch-packages "flatpak" // Every Flatpak, not only the browsers, runs bwrap to build its outer // sandbox, and bwrap needs a user namespace. This is the declaration // that buys it one. userns-allow "/usr/bin/bwrap" }Ditana na dat betg spazis da num da l’utilisader senza privilegis a mintga program. In program BPF minimal, ditana-userns-guard, è collià cun il hook userns_create dal kernel sez e refusa in spazi da num a mintga program exequibel ch’in parameter n’ha betg dumandà. In hook da quest tip po mo refusar e mai conceder, perquai vegn il sysctl che deactivescha ils spazis da num augmentà pir cura ch’il program è chargià – ina maschina che na po betg chargiar il program lascha ils spazis da num dal tuttafatg deactivads. Quai è il stadi da standard d’in’opziun da System Hardening; deactivai quella, ed ils spazis da num èn averts per tut, sco sin la gronda part da las distribuziuns.
Ditana refusa spazis da num da l’utilisader a tut quai che n’ha betg dumandà. Quai che fa funcziunar quest sistem è che la dumonda è locala: ella vegn scritta là nua ch’il pachet vegn tschernì, uschia ch’i na dovra nagina glista centrala sincronisada, e la deactivaziun dal parameter allontanescha er la permissiun. L’installatur rimna las decleraziuns dals parameters che restan activads a la fin e generescha or da quellas la glista da permissiuns.
Validaziun: chattar sbagls avant ch’els vegnan furnids
Secziun «Validaziun: chattar sbagls avant ch’els vegnan furnids»Ina basa da savida uschè gronda dovra mesiras da protecziun. Mintga commit – tant localmain tras hooks pre-commit sco er a distanza sin GitHub Actions – exequescha ina pipeline da validaziun cun plirs nivels che chatta ils sbagls ch’ina persuna che examinescha il code pudess survesair:
- Sintaxa KDL (
kdlfmt) – la datoteca po insumma vegnir analisada. - Validaziun dal schema (
ditana-schema.json) – mintga champ ha il tip correct, naginas proprietads nunenconuschentas, nagins champs obligatorics che mancan. Chatta sbagls da tippar en nums da champs scoarc-packagesempè daarch-packages. - Integritad da las referenzas a datotecas – mintga datoteca a la quala in parameter fa referenza exista propi en
folders/; a l’inversa fa almain in parameter referenza a mintga datoteca enfolders/. Datotecas orfnas vegnan annunziadas. Referenzas ad ordinaturs (che na faschessan nagut, e quai senza avis, perquai che l’installatur utiliseschacpsenza-R) vegnan refusadas. - Correctadad dal ciclus da vita – lingias da
chroot-scriptche tutgan/etc/skel/vegnan refusadas, perquai che l’account d’utilisader vegn creà suenter l’execuziun dachroot-script– il champ correct èearly-chroot-script. In sbagl subtil che produciss uschiglio in sistem, en il qual l’ordinatur persunal dal nov account d’utilisader na cuntegna betg las datotecas spetgadas. - Validitad dals scripts da shell – mintga fragment da shell en in dals champs cun glistas da scripts vegn controllà cun
bash -nper la sintaxa e cunshellcheckper la qualitad. In segn da citaziun che manca u in sbagl dal tip[ "$x" = $y ]vegn identifitgà al mument dal commit, betg pir tar l’emprima installaziun. - Permissiuns e parameters dal kernel declerads – in’endataziun
userns-allowsto esser in percurs absolut, ed in’endataziunsysctlsto numnar insatge ch’è ina clav sysctl e dar ad ella ina valur ch’il kernel accepta. Omadus champs èn vegnids agiuntads en la versiun 0.9.4 e vegnan declerads enditana-schema.json. - Parameters dal kernel cuntradictorics – dus parameters che scrivan la medema clav sysctl cun valurs differentas ferman l’installaziun, ed il messadi numna omadus. Cura ch’ils parameters vegnivan cumponids sco text da shell, sco avant la versiun 0.9.4, gudagnava simplamain l’ultima lingia scritta, e nagin na vegniva infurmà.
- Integritad da las expressiuns logicas – ils accents grevs ston furmar pèrs; mintga num da parameter al qual in’expressiun
default-valueuavailablefa referenza sto propi exister insanua en la basa da savida. In sbagl da tippar scoinstall-cosmikempè dainstall-cosmicvegn chattà al mument dal commit, empè da chaschunar in collaps silenzius durant l’execuziun.
Il test cumplet dura localmain paucas secundas cun pre-commit run --all-files e vegn exequì anc ina giada tar mintga push sin GitHub. Verd localmain munta verd en il CI; commits defects na cuntanschan mai ina versiun.
Nua cuntinuar
Secziun «Nua cuntinuar»- Legiai co ch’ils parameters dependan l’in da l’auter –
availableedefault-valueèn ils lieus, nua che la logica da la basa da savida sa chatta. - Explorai il repositori
ditana-configper vesair co che las reglas èn organisadas tenor dialog e tema. - Legiai il README da
ditana-configper il model da datas: co che parameters, scripts, dialogs e datotecas stattan en relaziun. - Guardai il code da funtauna da
ditana-installer, sche Vus vulais vesair il motor che legia la configuraziun ed agescha tenor quella.
Questa translaziun è vegnida fatga a maschina. Las lecturas ed ils lecturs la megliereschan sin Weblate.