Benutzer Diskussion:PaulRiegel/NixOS: Unterschied zwischen den Versionen

Aus Wiki StuRa HTW Dresden
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Zeile 270: Zeile 270:


21. nixos-install
21. nixos-install
== [https://nixos.wiki/wiki/NixOS_on_ZFS NixOs mit nativ encrypted zfs (uefi)] ==
1. Download [https://nixos.org/releases/tmp/release-nixos-unstable-small/ NixOs 18.03]
2. Bootfähigen USB erstellen
3. Installation von NixOs starten
4. Mit nano in /etc/nixos/configuration.nix
    $ nano /etx/nixos/configuration.nix
folgendes einfügen (Reihenfolge entscheidend):
    boot.zfs.enableUnstable = true;
    boot.supportedFilesystems = [ "zfs" ];
5. Laden der Packages
    $ nixos-rebuild switch
6.  ZFS in den Kernel laden
    $ modprobe zfs
7. 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)
8. 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
9.
    $ 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/home
    $ zfs create -o mountpoint=legacy zroot/root/nixos
    $ zfs set compression=lz4 zpool/pool/home
10. Mount zroot/root/nixos nach /mnt
    $ mount -t zfs zroot/root/nixos /mnt
11. Unter /mnt die Ordner home, tmp und boot anlegen
    $ mkdir /mnt/{home,tmp,boot}
12. 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/
13. Die restlichen Verzeichnisse mounten
    $ mount -t zfs zroot/root/home /mnt/home/
    $ mount -t zfs zroot/root/tmp /mnt/tmp/
14. 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";
      };
15. 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

Version vom 9. November 2017, 16:25 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

NixOs mit nativ encrypted zfs (uefi)

1. Download NixOs 18.03

2. Bootfähigen USB erstellen

3. Installation von NixOs starten

4. Mit nano in /etc/nixos/configuration.nix

   $ nano /etx/nixos/configuration.nix

folgendes einfügen (Reihenfolge entscheidend):

   boot.zfs.enableUnstable = true;
   boot.supportedFilesystems = [ "zfs" ];

5. Laden der Packages

   $ nixos-rebuild switch

6. ZFS in den Kernel laden

   $ modprobe zfs

7. 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)

8. 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

9.

   $ 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/home
   $ zfs create -o mountpoint=legacy zroot/root/nixos
   $ zfs set compression=lz4 zpool/pool/home 

10. Mount zroot/root/nixos nach /mnt

   $ mount -t zfs zroot/root/nixos /mnt

11. Unter /mnt die Ordner home, tmp und boot anlegen

   $ mkdir /mnt/{home,tmp,boot}

12. 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/

13. Die restlichen Verzeichnisse mounten

   $ mount -t zfs zroot/root/home /mnt/home/
   $ mount -t zfs zroot/root/tmp /mnt/tmp/

14. 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";
     };

15. 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