Benutzer Diskussion:PaulRiegel/NixOS: Unterschied zwischen den Versionen

Aus Wiki StuRa HTW Dresden
Zur Navigation springen Zur Suche springen
Zeile 316: Zeile 316:
: <code>zfs create -o mountpoint=legacy zroot/root/nixos</code>
: <code>zfs create -o mountpoint=legacy zroot/root/nixos</code>
: <code>zfs create -o mountpoint=legacy zroot/root/home</code>
: <code>zfs create -o mountpoint=legacy zroot/root/home</code>
: <code>zfs set compression=lz4 zpool/pool/home</code>
: <code>zfs set compression=lz4 zroot/root/home</code>


Einhängen vom Dataset für ZFS, wo das Betriebssystem NixOS abgelegt sein soll, als Teil vom Ziel der Installation
Einhängen vom Dataset für ZFS, wo das Betriebssystem NixOS abgelegt sein soll, als Teil vom Ziel der Installation
Zeile 322: Zeile 322:


Unter /mnt die Ordner home, tmp und boot anlegen
Unter /mnt die Ordner home, tmp und boot anlegen
    $ mkdir /mnt/{home,tmp,boot}
: <code>mkdir /mnt/{home,tmp,boot}</code>


Dateisystem (vfat) für die Boot-Partition /dev/sda1 festlegen und Mount von /dev/sda1 nach /mnt/boot
Dateisystem (vfat) für die Boot-Partition /dev/sda1 festlegen und Mount von /dev/sda1 nach /mnt/boot
    $ mkfs.vfat /dev/sda1
: <code>mkfs.vfat /dev/sda1</code>
    $ mount /dev/sda1 /mnt/boot/
: <code>mount /dev/sda1 /mnt/boot/</code>


Die restlichen Verzeichnisse mounten
Die restlichen Verzeichnisse mounten
    $ mount -t zfs zroot/root/home /mnt/home/
: <code>mount -t zfs zroot/root/home /mnt/home/</code>
    $ mount -t zfs zroot/root/tmp /mnt/tmp/
: <code>mount -t zfs zroot/root/tmp /mnt/tmp/</code>


NixOs hardware-configuration.nix erzeugen
NixOs hardware-configuration.nix erzeugen
    $ nixos-generate-config --root /mnt
: <code>nixos-generate-config --root /mnt</code>


Diese sollte so ähnlich aussehen:
Diese sollte so ähnlich aussehen:
<pre>
       fileSystems."/" =
       fileSystems."/" =
       { device = "zpool/root/nixos";
       { device = "zpool/root/nixos";
Zeile 355: Zeile 356:
         fsType = "vfat";
         fsType = "vfat";
       };
       };
</pre>


Zum Schluss die configuration.nix im neuen System anpassen unter /mnt/etc/nixos/configuration.nix
Zum Schluss die configuration.nix im neuen System anpassen unter /mnt/etc/nixos/configuration.nix
    $ nano /mnt/etc/nixos/configuration.nix  
: <code>nano /mnt/etc/nixos/configuration.nix </code>


folgende Zeilen einfügen (Reihenfolge entscheidend):
folgende Zeilen einfügen (Reihenfolge entscheidend):
<pre>
     boot.zfs.enableUnstable = true;
     boot.zfs.enableUnstable = true;
     boot.supportedFilesystems = [ "zfs" ];
     boot.supportedFilesystems = [ "zfs" ];
     networking.hostId = "ac174b52";
     networking.hostId = "ac174b52";
</pre>


(15.1 Gegebenenfalls in dieser Datei die Zeile powerManagement auskommentieren)
Gegebenenfalls in dieser Datei die Zeile powerManagement auskommentieren


16. nixos-install
: <code>nixos-install</code>

Version vom 11. November 2017, 23:47 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)

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 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:

      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

nixos-install