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
NixOS mit nativ encrypted zfs (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, ... }:
{
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
modprobe zfs
Partitionierung von /dev/sda mit gdisk oder fdisk:
/dev/sda1 100MB code: ef00 (Boot-Partition) /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 zpool/pool/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:
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";
(15.1 Gegebenenfalls in dieser Datei die Zeile powerManagement auskommentieren)
16. nixos-install