Benutzer Diskussion:PaulRiegel/NixOS
foo rund um die Installation
- ZFS
Neben
boot.supportedFilesystems = [ "zfs" ];
muss wohl auch noch
networking.hostId = "ac174b52";
angegeben werden. Das ist für solaris porting layer spl.
running unstable
boot.zfs.enableUnstable = true;
Mic's OS
- https://github.com/Mic92/dotfiles/blob/master/nixos/images/install-iso.nix
- https://github.com/NixOS/nixpkgs/pull/29426
- https://d3g5gsiof5omrk.cloudfront.net/nixos/unstable/nixos-18.03pre115461.9e7db9a9f9
17.09 meets zfs
nano /etc/nixos/configuration.nix
{ config, pkgs, ... }: {
boot.supportedFilesystems = [ "zfs" ];
}
nixos-rebuild switch
modprobe zfs
fdisk /dev/sda
sgdisk --zap-all /dev/sda
sgdisk -a1 -n2:34:2047 -t2:EF02 /dev/sda
sgdisk -n1:0:0 -t1:BF01 /dev/sda
zpool create -o ashift=12 -o altroot=/mnt rpool /dev/sda2
zfs create -o mountpoint=none rpool/root
zfs create -o mountpoint=legacy rpool/root/nixos
zfs create -o mountpoint=legacy rpool/home
zfs set compression=lz4 rpool/home
mount -t zfs rpool/root/nixos /mnt
mkdir /mnt/home
mount -t zfs rpool/home /mnt/home
___
mkfs.ext4 -m 0 -L boot -j /dev/sda1
mkdir /mnt/boot
mount /dev/sda2 /mnt/boot
nixos-generate-config --root /mnt
less /mnt/etc/nixos/hardware-configuration.nix
nano /mnt/etc/nixos/configuration.nix
nano /mnt/etc/nixos/configuration.nix
# Edit this configuration file to define what should be installed on # your system. Help is available in the configuration.nix(5) man page # and in the NixOS manual (accessible by running ‘nixos-help’). { config, pkgs, ... }: { imports = [ # Include the results of the hardware scan. ./hardware-configuration.nix ]; # Use the GRUB 2 boot loader. boot.loader.grub.enable = true; boot.loader.grub.version = 2; # boot.loader.grub.efiSupport = true; # boot.loader.grub.efiInstallAsRemovable = true; # boot.loader.efi.efiSysMountPoint = "/boot/efi"; # Define on which hard drive you want to install Grub. # boot.loader.grub.device = "/dev/sda"; # or "nodev" for efi only boot.loader.grub.device = "/dev/sda"; boot.supportedFilesystems = [ "zfs" ]; #### config.networking.hostId = "70cccxx"; #### networking.hostId = "70cccxx"; #### networking.hostId = "$hostIdHex"; networking.hostId = "4e98920d"; networking.hostName = "nixos"; # Define your hostname. networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. # Select internationalisation properties. # i18n = { # consoleFont = "Lat2-Terminus16"; # consoleKeyMap = "us"; # defaultLocale = "en_US.UTF-8"; # }; # Set your time zone. # time.timeZone = "Europe/Amsterdam"; # List packages installed in system profile. To search by name, run: # $ nix-env -qaP | grep wget environment.systemPackages = with pkgs; [ wget vim nano ]; # Some programs need SUID wrappers, can be configured further or are # started in user sessions. # programs.bash.enableCompletion = true; # programs.mtr.enable = true; # programs.gnupg.agent = { enable = true; enableSSHSupport = true; }; # List services that you want to enable: # Enable the OpenSSH daemon. services.openssh.enable = true; # Open ports in the firewall. # networking.firewall.allowedTCPPorts = [ ... ]; # networking.firewall.allowedUDPPorts = [ ... ]; # Or disable the firewall altogether. # networking.firewall.enable = false; # Enable CUPS to print documents. # services.printing.enable = true; # Enable the X11 windowing system. services.xserver.enable = true; services.xserver.layout = "us"; services.xserver.xkbOptions = "eurosign:e"; # Enable touchpad support. services.xserver.libinput.enable = true; # Enable the KDE Desktop Environment. services.xserver.displayManager.sddm.enable = true; services.xserver.desktopManager.plasma5.enable = true; # Define a user account. Don't forget to set a password with ‘passwd’. # users.extraUsers.guest = { # isNormalUser = true; # uid = 1000; # }; # This value determines the NixOS release with which your system is to be # compatible, in order to avoid breaking some software such as database # servers. You should change this only after NixOS release notes say you # should. system.stateVersion = "17.09"; # Did you read the comment? }
nixos-install
nixos mit zfs (uefi)
1. Folgende Zeile, der configuration.nix des livesystems hinzufuegen:
boot.supportedFilesystems = [ "zfs" ];
2. nixos-rebuild switch
3. nano /etc/nixos/configuration.nix 3.1 configuration.nix hinzufuegen:
boot.supportedFilesystems = [ "zfs" ];
4. nixos-rebuild switch
5. modprobe zfs
6. Partitionierung mit gdisk von sda:
6.1 sda1 100MB boot partition mit code ef00 6.2 sda2 restliche Platte eine Partition fstyp solaris /home (bf05)
7. zpool create -o ashift=12 -o altroot=/mnt rpool /dev/sda2
8. zfs create -o mountpoint=none rpool/root
9. zfs create -o mountpoint=legacy rpool/root/nixos
10. zfs create -o mountpoint=legacy rpool/home
11. zfs set compression=lz4 rpool/home
12. mount -t zfs rpool/root/nixos /mnt
13. mkdir /mnt/home
14. mount -t zfs rpool/home /mnt/home
15. mkfs.vfat /dev/sda1
16. mkdir mnt/boot
17. mount /dev/disk/by-id/"festplattenname"-part1 /mnt/boot
18. nixos-generate-config --root /mnt
19. nano /mnt/etc/nixos/hardware-configuration.nix
19.1 sollte enthalten:
fileSystems."/" = { device = "rpool/root/nixos"; fsType = "zfs"; };
fileSystems."/home" = { device = "rpool/home"; fsType = "zfs"; };
fileSystems."/boot" = { device = "/dev/disk/by-uuid/..."; fsType = "vfat"; };
20. nano /mnt/etc/nixos/configuration.nix
20.1 das einfuegen: boot.supportedFilesystems = [ "zfs" ]; networking.hostId = "ac174b52";
21. nixos-install
Durchführung einer erfolgreichen Installation mit ZFS mit nativer Verschlüsslung
- etwa beispielsweise für UEFI
- Herunterladen des Abbildes (iso) von NixOS unstable (18.03)
- Erstellen eines Speichers (USB-Stick) von dem gestartet werden kann
- Starten vom erstellten Speicher für die Installation von NixOS
- Änderung der Konfiguration für die Verwendung von ZFS in der (zentralen) Datei zur Verwaltung von NixOS (für den laufenden Betrieb)
nano /etc/nixos/configuration.nix
{ config, pkgs, ... }: { imports = [ <nixpkgs/nixos/modules/installer/cd-dvd/installation-cd-graphical-kde.nix> ];
boot.zfs.enableUnstable = true; boot.supportedFilesystems = [ "zfs" ];
}
- Anwenden der geänderten Konfigutation von NixOS (für den laufenden Betrieb)
nixos-rebuild switch
- Hinzufügen des Moduls vom Kernel für die Verwendung von ZFS (für den laufenden Betrieb)
modprobe zfs
- Partitionieren des Massenspeichers des Ziels der Installation
-
- von /dev/sda
- beispielsweise mit
gdisk
oderfdisk
- Üblicher Weise ist der Massenspeicher /dev/sda. Aber der Massenspeicher kann auch /dev/sdb oder anderes nachfolgendes Gerät sein, etwa wenn der Speicher von dem die Installation gestartet wurde /dev/sda ist.
- Partitionieren eines Teils für das Booten (efi)
- /dev/sda1 100MB code: ef00 (Boot-Partition)
- Partitionieren eines Teils (restlichen) für alle anderen Daten (außer für das Booten (efi)) mit ZFS
- /dev/sda2 restliche Platte fstyp: solaris /home mit code: bf05 erhältlich (Pool)
- Vollständig encrypted Pool anlegen (zroot kann auch anders benannt werden, ashift=12 für 4k Blocksize)
zpool create -o ashift=12 -o altroot="/mnt" -O encryption=aes-256-gcm -O keyformat=passphrase zroot /dev/sda2
- Erstellen der Datasets für ZFS
zfs create -o mountpoint=none zroot/root
zfs create -o mountpoint=legacy -o sync=disabled zroot/root/tmp
zfs create -o mountpoint=legacy zroot/root/nixos
zfs create -o mountpoint=legacy zroot/root/home
zfs set compression=lz4 zroot/root/home
- Einhängen vom Dataset für ZFS, wo das Betriebssystem NixOS abgelegt sein soll, als Teil vom Ziel der Installation
mount -t zfs zroot/root/nixos /mnt
- Unter /mnt die Ordner home, tmp und boot anlegen
mkdir /mnt/{home,tmp,boot}
- Dateisystem (vfat) für die Boot-Partition /dev/sda1 festlegen und Mount von /dev/sda1 nach /mnt/boot
mkfs.vfat /dev/sda1
mount /dev/sda1 /mnt/boot/
- Die restlichen Verzeichnisse mounten
mount -t zfs zroot/root/home /mnt/home/
mount -t zfs zroot/root/tmp /mnt/tmp/
- NixOs hardware-configuration.nix erzeugen
nixos-generate-config --root /mnt
- Diese sollte so ähnlich aussehen
cat /mnt/etc/nixos/hardware-configuration.nix
fileSystems."/" = { device = "zpool/root/nixos"; fsType = "zfs"; }; fileSystems."/home" = { device = "zpool/root/home"; fsType = "zfs"; }; fileSystems."/tmp" = { device = "zpool/root/tmp"; fsType = "zfs"; }; fileSystems."/boot" = { device = "/dev/disk/by-uuid/..."; fsType = "vfat"; };
- Zum Schluss die configuration.nix im neuen System anpassen unter /mnt/etc/nixos/configuration.nix
nano /mnt/etc/nixos/configuration.nix
- folgende Zeilen einfügen (Reihenfolge entscheidend)
boot.zfs.enableUnstable = true; boot.supportedFilesystems = [ "zfs" ]; networking.hostId = "ac174b52";
- Gegebenenfalls in dieser Datei die Zeile powerManagement auskommentieren
- Starten des Durchführens der Installation
nixos-install
Durchführung einer Installation mit ZFS mit nativer Verschlüsslung als Spiegel
- Herunterladen des Abbildes (iso) von NixOS unstable (18.03)
- Erstellen eines Speichers (USB-Stick) von dem gestartet werden kann
- Starten vom erstellten Speicher für die Installation von NixOS
- Änderung der Konfiguration für die Verwendung von ZFS in der (zentralen) Datei zur Verwaltung von NixOS (für den laufenden Betrieb)
nano /etc/nixos/configuration.nix
{ config, pkgs, ... }: { imports = [ <nixpkgs/nixos/modules/installer/cd-dvd/installation-cd-graphical-kde.nix> ];
boot.zfs.enableUnstable = true; boot.supportedFilesystems = [ "zfs" ];
}
- Anwenden der geänderten Konfigutation von NixOS (für den laufenden Betrieb)
nixos-rebuild switch
- Hinzufügen des Moduls vom Kernel für die Verwendung von ZFS (für den laufenden Betrieb)
-
- Prüfen, on das Modul vom Kernel für die Verwendung von ZFS geladen ist
kmod list | grep zfs
modprobe zfs
- Partitionieren des Massenspeichers des Ziels der Installation
-
- von /dev/sda
- beispielsweise mit
gdisk
oderfdisk
- Üblicher Weise ist der Massenspeicher /dev/sda. Aber der Massenspeicher kann auch /dev/sdb oder anderes nachfolgendes Gerät sein, etwa wenn der Speicher von dem die Installation gestartet wurde /dev/sda ist.
- Partitionieren eines Teils für das Booten (efi)
- /dev/sda1 100MB code: ef00 (Boot-Partition)
- /dev/sdd1 100MB code: ef00 (Boot-Partition)
- Partitionieren eines Teils (restlichen) für alle anderen Daten (außer für das Booten (efi)) mit ZFS
- /dev/sda2 restliche Platte fstyp: solaris /home mit code: bf05 erhältlich (Pool)
- /dev/sdd2 restliche Platte fstyp: solaris /home mit code: bf05 erhältlich (Pool)
- Vollständig encrypted Pool anlegen (zroot kann auch anders benannt werden, ashift=12 für 4k Blocksize)
zpool create -o ashift=12 -o altroot="/mnt" -O encryption=aes-256-gcm -O keyformat=passphrase zroot mirror /dev/sda2 /dev/sdd2
- Erstellen der Datasets für ZFS
zfs create -o mountpoint=none zroot/root
zfs create -o mountpoint=legacy -o sync=disabled zroot/root/tmp
zfs create -o mountpoint=legacy zroot/root/nixos
zfs create -o mountpoint=legacy zroot/root/home
zfs set compression=lz4 zroot/root/home
- Einhängen vom Dataset für ZFS, wo das Betriebssystem NixOS abgelegt sein soll, als Teil vom Ziel der Installation
mount -t zfs zroot/root/nixos /mnt
- Unter /mnt die Ordner home, tmp und boot anlegen
mkdir /mnt/{home,tmp,boot}
- Dateisystem (vfat) für die Boot-Partition /dev/sda1 festlegen und Mount von /dev/sda1 nach /mnt/boot
mkfs.vfat /dev/sda1
mount /dev/sda1 /mnt/boot/
mkfs.vfat /dev/sdd1
mount /dev/sdd1 /mnt/boot/
- Die restlichen Verzeichnisse mounten
mount -t zfs zroot/root/home /mnt/home/
mount -t zfs zroot/root/tmp /mnt/tmp/
- NixOs hardware-configuration.nix erzeugen
nixos-generate-config --root /mnt
- Diese sollte so ähnlich aussehen
cat /mnt/etc/nixos/hardware-configuration.nix
fileSystems."/" = { device = "zpool/root/nixos"; fsType = "zfs"; }; fileSystems."/home" = { device = "zpool/root/home"; fsType = "zfs"; }; fileSystems."/tmp" = { device = "zpool/root/tmp"; fsType = "zfs"; }; fileSystems."/boot" = { device = "/dev/disk/by-uuid/..."; fsType = "vfat"; }; swapDevices = [ { device = "/dev/disk/by-uuid/..."; } ]; nix.maxJobs = lib.mkDefault 4;
- Zum Schluss die configuration.nix im neuen System anpassen unter /mnt/etc/nixos/configuration.nix
nano /mnt/etc/nixos/configuration.nix
- folgende Zeilen einfügen (Reihenfolge entscheidend)
boot.loader.grub.devices = [ "/dev/sda" "/dev/sdd"]; boot.zfs.enableUnstable = true; boot.supportedFilesystems = [ "zfs" ]; networking.hostId = "ac174b52";
- Gegebenenfalls in dieser Datei die Zeile powerManagement auskommentieren
- Starten des Durchführens der Installation
nixos-install
Software RAID fuer /boot und boot loader
- Test fur MBR
- Test fur GPT