Website-Icon .: blog cscholz.io :.

Arch Linux: USB-System mit Grub, Luks und BTRFS

Deutsches Tastatur Layout laden

loadkeys de
# loadkeys de-latin1-nodeadkeys

Touchpad beim Tippen/angeschlossener Maus deaktivieren

yay -S touchpad-indicator

SSH Zugang aktivieren

wifi-menu
passwd
systemctl start sshd.service

Partitionierung

Laufwerksbuchstabe ermitteln

dmesg | grep disk

Partitionen anlegen

gdisk /dev/sda
Command (? for help): o
This option deletes all partitions and creates a new protective MBR.
Proceed? (Y/N): Y

Command (? for help): n
Partition number (1-128, default 1): [ENTER]
First sector (34-242187466, default = 2048) or {+-}size{KMGTP}: [ENTER]
Last sector (2048-242187466, default = 242187466) or {+-}size{KMGTP}: +512M
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): EF00
Changed type of partition to 'EFI System'

Command (? for help): n
Partition number (2-128, default 2): [ENTER]
First sector (34-242187466, default = 1050624) or {+-}size{KMGTP}: [ENTER]
Last sector (1050624-242187466, default = 242187466) or {+-}size{KMGTP}: [ENTER]
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 
Changed type of partition to 'Linux filesystem'

Command (? for help): w

Partitionen formatieren

mkfs.vfat -n UEFIBOOT -F32 /dev/sda1

LUKS einrichten

cryptsetup -v luksFormat /dev/sda2
cryptsetup luksOpen /dev/sda2 luks_root

BTRFS (Sub)-Volume anlegen

mkfs.btrfs -L arch /dev/mapper/luks_root
mount -t btrfs /dev/mapper/luks_root /mnt
btrfs sub create /mnt/@
btrfs sub create /mnt/@home
umount /mnt

Partitionen zusammenmounten

mount -o subvol=@ /dev/mapper/luks_root /mnt
mkdir /mnt/home
mount -o subvol=@home /dev/mapper/luks_root /mnt/home
mkdir /mnt/boot
mount /dev/sda1 /mnt/boot

Basis System Installieren

Basis System inkl. Werkzeuge installieren

Bis zum 06.10.2019 wurde durch die Installation des Paketes base weitere  Pakete installiert, wie zum Beispiel der Linux Kernel. Am 06.10 wurde das Paket base durch ein das Meta Paket base ersetzt, in dem z.B. der Kernel fehlt. Bei einer Neuinstallation sind somit gegenüber älteren Anleitungen mehr Pakete anzugeben. Die meiner Meinung nach minimal notwendigen Pakete sind nachfolgend ergänzt und fett markiert.

pacstrap /mnt base cryptsetup device-mapper dhcpcd e2fsprogs inetutils linux linux-firmware lvm2 \
logrotate man-db man-pages nano less netctl s-nail sysfsutils usbutils vi which base-devel btrfs-progs \
vim bash-completion dialog wpa_supplicant mlocate htop efibootmgr dosfstools gptfdisk mkinitcpio linux

fstab anpassen

genfstab -U -p /mnt >> /mnt/etc/fstab
vim /mnt/etc/fstab
tmpfs /tmp tmpfs rw,nodev,nosuid 0 0
tmpfs /dev/shm tmpfs rw,nodev,nosuid,noexec 0 0

# If you have SSD change relatime on all non-boot partitions to noatime.

Chroot Wechsel

arch-chroot /mnt

Zeitzone setzten

ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime
hwclock --systohc

Hostname setzten

echo <your-hostname> > /etc/hostname

Hosts Datei anpassen

vim /etc/hosts
...
127.0.0.1 localhost.localdomain localhost
::1 localhost.localdomain localhost
127.0.0.1 $HOSTNAME.localdomain $HOSTNAME

Root Kennwort setzen und normalen Benutzer anlegen

passwd
useradd -m -G wheel -s /bin/bash <username>
passwd <username>

Spracheinstellung festlegen

echo LANG=de_DE.UTF-8 > /etc/locale.conf

Vor diesen Einträgen „#“ entfernen:

vim /etc/locale.gen
#de_DE.UTF-8 UTF-8
#de_DE ISO-8859-1
#de_DE@euro ISO-8859-15

Locale generieren:

locale-gen

Tastaturbelegung festlegen:

echo KEYMAP=de-latin1-nodeadkeys > /etc/vconsole.conf

Linux Kernel erzeugen

vim /etc/mkinitcpio.conf
# in Zeile MODULES "vfat crc32c-intel" hinzufügeb
# in Zeile BINARIES "/usr/bin/btrfsck" hinzufügen
# in der Zeile HOOKS:
#  - hinzufügen: "encrypt" for "filesystems"
#  - ersetzen "fsck" durch "btrfs"
#
# Danach den Kernel neu zusammenbauen lassen

mkinitcpio -p linux

Update 20.11.2020
aes_x86_64 wurde mit kernel 5.4 entfernt. (Link)

systemd bootctl installiere

Es werden im übernächsten Schritt die IDs der Partition benötigt. Für den Fall dass man direkt ohne Maus an der Konsole sitzt werden zuerst die IDs in die Datei eingefügt. Nicht benötigter Text kann dann im danach folgenden Schritt gelöscht werden.

Alternativ können die IDs auch direkt im übernächsten Schritt übernommen und der Text eingefügt werden.

bootctl install
blkid /dev/sda2 > /boot/loader/entries/arch.conf
blkid /dev/sda2 >> /boot/loader/entries/arch.conf
blkid /dev/mapper/luks_root >> /boot/loader/entries/arch.conf
# /dev/sda2 LABEL="arch" UUID=11111111-1111-1111
# /dev/mapper/root LABEL="Arch Linux" UUID=2222222-2222-2222

Anschließend die Datei /boot/loader/entries/arch-uefi.conf mit folgendem Inhalt erstellen:

vim /boot/loader/loader.conf
...
timeout 3
default arch
...
vim /boot/loader/entries/arch.conf
...

title Arch Linux
linux /vmlinuz-linux
initrd /initramfs-linux.img
options rw cryptdevice=UUID=11111111-1111-1111:luks-11111111-1111-1111 root=UUID=2222222-2222-2222 rootfstype=btrfs rootflags=subvol=@
...
#options cryptdevice=UUID=<UUID>:<mapped-name> root=/dev/mapper/<mapped-name> rootflags=subvol=<subvol> quiet rw
options cryptdevice=UUID=11111111-1111-1111:luks_root root=UUID=2222222-2222-2222 rootfstype=btrfs rootflags=subvol=@

Das Gleiche noch für Arch Linux fallback die Datei /boot/loader/entries/arch-uefi-fallback.conf mit folgendem Inhalt erstellen:

title Arch Linux Fallback
linux /vmlinuz-linux
initrd /initramfs-linux-fallback.img
options root=LABEL=p_arch rw resume=LABEL=p_swap

Der timeout (in Sekunden) kann natürlich frei gewählt werden.

Quelle: https://wiki.archlinux.de/title/UEFI_Installation#systemd_bootctl_.28ehemals_Gummiboot.29

Software installieren

Gnome und GDM installieren

pacman -Syu gnome gnome-extra gdm firefox firefox-i18n-de networkmanager network-manager-applet bluez bluez-utils power-profiles-daemon
systemctl enable gdm.service
systemctl enable NetworkManager.service
systemctl enable bluetooth.service

Plymouth

pacman -S plymouth

rm /usr/share/pixmaps/archlinux-logo.png

plymouth-set-default-theme -R Spinner

vim /etc/mkinitcpio.conf
[...]
HOOKS=(... plymouth encrypt filesystems...)

/etc/plymouth/plymouthd.conf
Check if any delay is specified

Nautilus (thumbnailer, checksum, ..)

pacman -S gst-libav gst-plugins-ugly gstreamer

yay -S nautilus-renamer nautilus-compare nautilus-mediainfo nautilus-checksums python-nautilus
nautilus -q

Task Manager (Mission Center)

yay -S mission-center
settings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ name "Taskmanager"
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ command '/usr/bin/missioncenter'
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ binding '<Primary><Shift>Escape'
gsettings set org.gnome.settings-daemon.plugins.media-keys custom-keybindings "['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/']"

Energiemanagement A (power-profiles-daemon)

pacman -S power-profiles-daemon
systemctl enable power-profiles-daemon.service

Energiemanagement B (tlp)

pacman -S tlp tlp-rdw
systemctl enable power-profiles-daemon.service

flatpak install com.github.d4nj1.tlpui

Microsoft Edge Browser

flatpak instalk com.microsoft.Edge

Touchpadgesten

pacman -S touchegg
systemctl enable touchegg.service

yay -S touche

Dokumentebetrachter (PDF etc.)

pacman -S evince

Cups

pacman -S cups gutenprint
systemctl enable cups.service

yay -S cups-bjnp

LibreOffice

pacman -S libreoffice-fresh libreoffice-fresh-de

Visual Studio Code

yay -S code
xdg-mime default org.gnome.Nautilus.desktop inode/directory

Thunderbird

pacman -S thunderbird thunderbird-i18n-de libgnome-keyring

Design

pacman -S papirus-icon-theme arc-gtk-theme

Gnome-Shell Extension

pacman -S gnome-shell-extensionsgnome-browser-connector

Inkomaptibel mit GNome 45

Enable Fractional Scaling

gsettings set org.gnome.mutter experimental-features "['scale-monitor-framebuffer']"

VLC

pacman -S vlc

NTFS Support

pacman -S ntfs-3g

Audio Codecs

pacman -S a52dec faac faad2 flac jasper lame libdca libdv libmad libmpeg2 libtheora libvorbis libxv wavpack x264 xvidcore gstreamer0.10-plugins

Veracrypt

pacman -S veracrypt

Nextcloud Client

pacman -S nextcloud-client

Firmware Update Daemon

pacman -S fwupd
fwupdmgr refresh
fwupdmgr update

FWBuilder

pacman -S fwbuilder

Gnome Update Viewer

pacman -S gnome-packagekit pacman-contrib
gnome-shell-extension-arch-update

Powerline

pacman -S powerline powerline-fonts

.bashrc (end of file)

# Debian
if [ -f /usr/local/lib/python2.7/dist-packages/powerline/bindings/bash/powerline.sh ]; then  
  source /usr/local/lib/python2.7/dist-packages/powerline/bindings/bash/powerline.sh  
fi  

# (open)SUSE; Fedora
if [ -f /usr/share/powerline/bash/powerline.sh ]; then  
  source /usr/share/powerline/bash/powerline.sh
fi  

# Arch
if [ -f /usr/share/powerline/bindings/bash/powerline.sh ]; then
  . /usr/share/powerline/bindings/bash/powerline.sh
fi

.vimrc (end of file)

set rtp+=/usr/local/lib/python2.7/dist-packages/powerline/bindings/vim/
" Always show statusline
set laststatus=2
" Use 256 colours (Use this setting only if your terminal supports 256 colours)
set t_Co=256
let g:powerline_pycmd = 'py3'

Wireguard

pacman -Sy wireguard-arch resolvconf

Power Management

pacman -Sy acpid tlp powertop
systemctl enable --now acpid
systemctl enable --now tlp.service

Sudo Rechte für AUR package manager anpassen

Sudo Rechte folgen folgendem Schema:
<wer> <auf welchem Host>=(<als welcher Benutzer>) <darf was ausführen>

echo "$USER ALL=(ALL) ALL" > /etc/sudoers.d/yay.conf

AUR package manager

pacman -S git go
git clone https://aur.archlinux.org/yay.git
cd yay
sudo -u $USER makepkg -si

yay -Sy

Vorta

yay -Sy vorta

Microsoft Schriften

yay -Sy ttf-ms-fonts

Timeshift

yay -Sy timeshift

Anpassung für Grub um Snapshots im BootMenü anzuzeigen

sudo systemctl edit --full grub-btrfsd
ExecStart=/usr/bin/grub-btrfsd --syslog /.snapshots

ersetzten durch 

ExecStart=/usr/bin/grub-btrfsd --syslog --timeshift-auto

Probelauf

sudo systemctl start grub-btrfsd && journalctl -f | grep -E '(timeshift|grub)'

… das starten von Timeshift sollte erkannt und die Erstellung eines Snaphots zu der Neuerstellung des Grub Menues führen. Wenn das der Fall ist, Dienst dauerhaft aktivieren

sudo systemctl enable grub-btrfsd

Spotify

flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

Software öffnen und nach Spotify suchen

GNome-Shell-Extensions

flatpak install flathub org.gnome.Extensions

Known Issues

Error: grub-install: error: efibootmgr failed to register the boot entry: No such file or directory.

Reason: Live System was booted in legacy mode

Quellen

Die mobile Version verlassen