Inštalácia podrobne
Získajte inštalátor
Stiahnite si ISO a jeho .sha256 z
najnovšieho vydania, alebo ho zostavte:
nix build .#nixosConfigurations.iso.config.system.build.isoImage
Zapíšte ho na USB kľúč a nabootujte z neho cieľový počítač. Menovka zväzku
na kľúči je LOSOS_INSTALLER. Bootovacie menu BIOS-u, úvodná obrazovka UEFI
a banner na konzole ukazujú LosOS a značku vydania a názov hostiteľa je
losos-installer. Pod tým je NixOS a os-release to aj uvádza cez
ID_LIKE=nixos. Nainštalované zariadenie nesie rovnaký názov a značku vo svojom
bootovacom menu, v bannerch na konzole aj v os-release (NAME=LosOS,
IMAGE_VERSION) a ponecháva si ID=nixos.
Skôr než nabootujete
- Secure Boot: vypnite ho, alebo zaregistrujte certifikát LosOS. ISO
vydaní sú podpísané. UEFI zavádzač na kľúči je jeden zjednotený obraz jadra
(jadro, initrd, príkazový riadok) podpísaný db certifikátom LosOS a tento
zavádzač pred pripojením obrazu systému overí jeho hash. Firmvér, ktorý
dôveruje iba kľúčom Microsoftu, kľúč odmietne, kým do jeho
dbnepridáte certifikát z adresáraEFI/losos/na kľúči alebo zo stránky vydania, a to vedľa certifikátov Microsoftu, nikdy namiesto nich: potrebuje ich Windows, shim iných distribúcií aj option ROM grafických kariet. OVMF zobrazí "Access Denied"; iný firmvér môže kľúč bez slova preskočiť. Zavádzač nainštalovaného zariadenia podpísaný nie je, takže samotné zariadenie potrebuje Secure Boot vypnutý. Postup a kontroluSHA256SUMS.signájdete na stránke príručky Secure Boot and signed media. Dôkazom jetests/secure-boot.nix. - UEFI aj BIOS, funguje oboje. Na inštalačnom ISO vám textové menu
umožní zvoliť BIOS, UEFI alebo autodetekciu (firmvér, ktorý ISO
nabootoval). UEFI dostane systemd-boot. Starší BIOS dostane GRUB a 1 MiB
bootovací oddiel BIOS na prvom disku. Ak do 30 sekúnd neodpoviete, menu
zvolí autodetekciu, takže aj bezobslužné bootovanie nainštaluje systém.
losos-install --biosa--uefizvolia režim bez zobrazenia menu. UEFI, z menu aj cez--uefi, vyžaduje, aby bol samotný kľúč nabootovaný v režime UEFI, pretože systemd-boot zapisuje bootovaciu položku firmvéru. Z kľúča nabootovaného cez BIOS to inštalátor odmietne skôr, než sa dotkne akéhokoľvek disku. BIOS slúži hlavne na testovanie vo VM. Menu je súčasťou iba inštalačného ISO. Nainštalované zariadenie ho nikdy nezobrazí. - Pripojte sieť. Inštalátor klonuje flake počas behu.
Čo inštalátor robí
Po výbere firmvéru inštalátor beží bez obsluhy. Nájde všetky pevné disky,
spojí ich do jednej skupiny zväzkov LVM, zašifruje ju cez LUKS, naformátuje
/persist ako ext4 a nainštaluje systém.
- Na počítači s čipom TPM 2.0 inštalátor hneď po formátovaní zapečatí kľúč
disku do čipu (
systemd-cryptenroll). Väčšina mini-PC ho má vo firmvéri, Intel PTT alebo AMD fTPM, zvyčajne zapnutý. Zariadenie potom od prvého štartu bootuje bez obsluhy a na bootovacom oddiele nie je nič tajné. Samotný disk, vytiahnutý alebo naklonovaný, sa nedá prečítať. Kľúč nie je viazaný na merania firmvéru (PCR), pretože zariadenie aktualizuje svoj firmvér aj zavádzač bez obsluhy a nemá shell, z ktorého by sa dalo zotaviť po zablokovaní. Cenou je, že zlodej, ktorý vezme celé zariadenie aj s čipom, sa k dátam stále dostane. Ten istý náhodný kľúč, ktorým bol zväzok naformátovaný, zostáva vnútri šifrovaného zväzku v/etc/keys/persist-keyfileako záchranný slot. - Bez čipu, alebo s
losos-ctl install --no-tpmzo shellu inštalátora, sa namiesto toho tento súbor s kľúčom zapečie do initrd. Leží potom na nešifrovanom ESP a ktokoľvek, kto vezme disk, si dáta prečíta. Inštalátor vypíše, ktorú z dvoch možností zvolil.--tpmspraví z chýbajúceho čipu chybu namiesto tichej inštalácie so súborom s kľúčom. TPM a kľúč disku vysvetľuje, na čo čip slúži a čoho sa zariadenie bez neho vzdáva. - Vo VM mu dajte TPM (swtpm, pozri nižšie), inak sa nainštaluje v režime so súborom s kľúčom.
/persist je ext4 s funkciou encrypt, pretože ju fscrypt potrebuje a btrfs
ju nepodporuje. Prichádzate o kompresiu a kontrolné súčty dát.
Po reštarte tty1 zobrazí banner na celú obrazovku s IP adresou zariadenia a
<hostname>.local. Otvorte IP adresu v prehliadači na ľubovoľnom počítači v
tej istej sieti. Meno .local funguje tiež všade, kde počítač prekladá mená
mDNS. Windows, macOS, telefóny a väčšina linuxových desktopov to robí;
hostiteľ hosťa libvirt alebo VirtualBox za NAT zvyčajne nie, takže tam
použite adresu. Obe vedú na tie isté stránky. Banner sa aktualizuje, keď sa
adresa zmení.
Prvá stránka je sprievodca nastavením. Jeho prvým krokom je dôverovať
vlastnému certifikátu zariadenia, aby zvyšok nastavenia aj každé neskoršie
prihlásenie šli cez HTTPS a váš prehliadač mohol ponúknuť passkey. Krok
ukazuje jeden riadok na vloženie do terminálu, vybraný pre počítač, na ktorom
ste. Na macOS a Linuxe je to curl -fsSL http://<address>/setup/trust.sh | sh,
na Windows irm http://<address>/setup/trust.ps1 | iex. Skript servíruje
samotné zariadenie ako čistý text, takže si odkaz najprv otvorte v karte a prečítajte
si ho. Skript pridá ten jeden certifikát do úložísk, ktoré čítajú vaše
prehliadače, iba pre vášho používateľa: do prihlasovacej kľúčenky (login
keychain) na macOS, do používateľského úložiska Trusted Root na Windows a do
úložísk NSS, ktoré na Linuxe používajú Chrome a Firefox. Nič iné neinštaluje,
nikdy nežiada práva správcu a vypíše odtlačok SHA-256 certifikátu, aby ste ho
mohli porovnať s tým na stránke. Telefóny dostanú namiesto toho obyčajné
stiahnutie. Ručná cesta zostáva pod tým: stiahnite losos-ca.crt a pridajte
ho sami ako dôveryhodnú autoritu.
Ak je strašidelnou časťou čítanie obrazovky a písanie adresy, otvorte radšej
losos-edge.dasmat.us/find v Chrome a
stlačte Find my box (Nájsť moje zariadenie). Chrome sa raz opýta, či stránka smie
hľadať zariadenia vo vašej lokálnej sieti (jeho povolenie Local Network
Access, Chrome 142 alebo novší). Povoľte to a stránka nájde zariadenie podľa mena a
nasmeruje vás na jeho nastavenie. Vyhľadávanie beží vo vašom prehliadači,
medzi vaším počítačom a zariadením. Stránka číta /setup/state.json zariadenia, ktorý
obsahuje jeho meno a odtlačok certifikátu a nič viac, a nič o vašej sieti
neopustí váš počítač. Zariadenie dovolí čítať tento dokument iba tejto jednej stránke
(losos.setup.finderOrigins). Firefox a Safari také povolenie nemajú a
dostanú namiesto toho návod s písaním adresy.
Vyskúšajte to vo VM (BIOS)
Pre cestu s TPM potrebuje VM emulovaný čip pri inštalácii aj pri každom štarte, s tým istým adresárom stavu, inak nainštalovaný systém nenájde kľúč, ktorý zapečatil. So swtpm:
mkdir -p tpm
swtpm socket --tpmstate dir=tpm --ctrl type=unixio,path=tpm/sock --tpm2 --daemon
qemu-system-x86_64 ... \
-chardev socket,id=chrtpm,path=tpm/sock -tpmdev emulator,id=tpm0,chardev=chrtpm \
-device tpm-tis,tpmdev=tpm0
Pridajte tieto tri riadky do spustenia inštalátora aj do neskorších štartov.
Bez nich inštalátor napíše unlock: keyfile in the initrd a zariadenie funguje, v
režime so súborom s kľúčom.
qemu-img create -f raw disk.img 40G
qemu-system-x86_64 -m 4096 -smp 2 -enable-kvm -machine q35 \
-drive file=losos.iso,media=cdrom,readonly=on \
-drive file=disk.img,format=raw,if=virtio \
-nic user,hostfwd=tcp::8080-:80
Bez -bios QEMU nabootuje SeaBIOS, takže inštalátor zvolí GRUB. Keď skončí,
VM vypnite a spustite znova bez riadku -drive …media=cdrom. Adresa VM je z
hostiteľa dosiahnuteľná iba cez presmerovanie portu, takže otvorte
http://localhost:8080.
ISO s celým closure
nix build .#losos-disk-iso # or: devenv shell build-media iso
Bežné ISO necháva cieľový počítač stiahnuť a zostaviť celý systém, približne
5.8 GiB. Toto ISO nesie zostavený closure, takže nixos-install ho skopíruje
z kľúča.
- Stále potrebuje sieť na naklonovanie flaku a stiahnutie nixpkgs.
- Zostavte ho z toho istého commitu, ktorý bude inštalátor klonovať
(
LOSOS_FLAKE_URL,--depth 1). Inak sa cesty v store líšia a kópie zostanú nevyužité. - Je príliš veľké na asset vydania na GitHube. Zostavte si ho sami.
Demo obraz pre VM
nix build .#losos-disk-qcow2 # or: devenv shell build-media qcow2
Predinštalovaný QCOW2 pre QEMU alebo virt-manager. Označené vydania ho publikujú na GHCR. Nemá šifrovanie disku a nikdy nespúšťa inštalátor, takže ho používajte iba na demá a vývoj.
Zväčšenie disku
Logický zväzok používa 90 % skupiny zväzkov (losos.storage.fillPercent).
Ak chcete využiť zvyšok:
losos-ctl grow
Toto spustí lvextend, cryptsetup resize a resize2fs, v tomto poradí, s
pripojeným /persist. /persist obsahuje /nix, takže sa časom zapĺňa.
Keď sa rezerva minie, pridajte disk a zväčšite znova:
pvcreate /dev/sdX && vgextend persist-vg /dev/sdX && losos-ctl grow
grow zlyhá, ak už nie je čo zabrať.