Benutzer Diskussion:PaulRiegel/NixOS: Unterschied zwischen den Versionen

Aus Wiki StuRa HTW Dresden
Zur Navigation springen Zur Suche springen
Zeile 475: Zeile 475:
         fsType = "vfat";
         fsType = "vfat";
       };
       };
  swapDevices =
    [ { device = "/dev/disk/by-uuid/..."; }
    ];
    nix.maxJobs = lib.mkDefault 4;
</pre>
</pre>



Version vom 19. November 2017, 18:02 Uhr

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

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 oder fdisk
Ü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)
modprobe zfs
Partitionieren des Massenspeichers des Ziels der Installation
  • von /dev/sda
  • beispielsweise mit gdisk oder fdisk
Ü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