zkk / Installazione Arch Linux su ACEMAGICIAN



Caratteristiche miniPC

Arch Linux ISO

Scaricato ISO file del 2024.01.01.

dd bs=4M if=<image>.iso of =<device> status=progress oflag=sync

BIOS Settings

Installazione Arch Linux

Lascio partire l’installatore di default.

operazioni preliminari

loadkeys it  # imposta tastiera italiana
ping google.it  # verifica connessione
timedatectl set-ntp true  # sincronizza orologio
ls /sys/firmware/efi/efivars  # verifica BIOS/UEFI

partizionamento del disco

Individuazione e “pulizia” del disco:

lsblk           # disco /dev/nvme01n1
dd if=/dev/zero of=/dev/nvme01n1 status=progress

Partizionamento tramite fdisk cancellando (d) le partizioni esistenti se non ho effettuato il passaggio precedente di pulizia.

fdisk /dev/nvme01n1
g  # create empty GTP partition table
n  # partizione 1 di boot (+512M), NB. se non si è pulito il disco viene chiesto di sovrascrivere quanto è presente (signature vfat)
t  # partition type 4 (EFI)
n  # partizione 2 di swap (+20G)
n  # partizione 3 di root (resto del disco)

formattazione

mkfs.fat -F32 /dev/nvme01n1p1
mkswap /dev/nvme01n1p2
swapon /dev/nvme01n1p2
mkfs.ext4 /dev/nvme01n1p3

installazione del sistema

mount /dev/nvme01n1p3 /mnt
mkdir -p /mnt/boot/efi
mount /dev/nvme01n1p1 /mnt/boot/efi
pacstrap /mnt base base-devel linux linux-firmware
genfstab -U /mnt >> /mnt/etc/fstab
arch-chroot /mnt
passwd  # imposta passord di root
ln -sf /usr/share/zoneinfo/Europe/Rome /etc/localtime
echo "en_us.UTF-8 UTF-8" >> /etc/locale.gen
locale-gen
echo "LANG=en_us.UTF-8" > /etc/locale.conf
echo "KEYMAP=it" >> /etc/vconsole.conf
echo "arch" > /etc/hostname
pacman -S grub efibootmgr
grub-install --target=x86_64-efi --bootloader-id=GRUB --efi-directory=/boot/efi
grub-mkconfig -o /boot/grub/grub.cfg
pacman -S networkmanager
systemctl enable NetworkManager.service
exit
reboot

configurazione di base del sistema

ping google.it  # verifica funzionamento rete
pacman -S tldr  # esempi utilizzo comandi
pacman -S man man-pages  # man pages
pacman -S neovim
export EDITOR=nvim
useradd -m -g wheel -s /bin/bash max
passwd max  # imposta password utente
cp /etc/sudoers /root/sudoers-backup
visudo  # uncomment '%wheel ALL=(ALL) ALL'
reboot

ambiente grafico

Al riavvio esegui il login come utente.

sudo pacman -S xorg
sudo pacman -S xorg-xinit
sudo pacman -S i3-wm
sudo pacman -S i3status
sudo pacman -S rxvt-unicode
sudo pacman -S network-manager-applet
sudo pacman -S ttf-dejavu ttf-dejavu-nerd
localectl --no-convert set-x11-keymap it  # chiede la password

Creo il file ~/.xinitrc con il seguente contenuto:

xrdb -merge ~/.config/X11/.Xresources  # acquisisce le personalizzazioni (vedi paragrafi successivi)
urxvtd -o -q -f  # demone dell'emulatore di terminale
setxkbmap -option 'caps:ctrl_modifier'  # imposta <capslock> come <ctrl>
exec i3

Ora posso dare il comando startx.

yay e pacchetti x neovim

cd /tmp
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -s
sudo pacman -Rs go  # non più necessario
sudo pacman -U yay-<versione>.pkg.tar.zst
yay --version
yay -S python-neovim
yay -S python2-neovim
yay -S ruby-neovim

zsh

sudo pacman -S zsh
sudo pacman -S zsh-completions
sudo pacman -S zsh-syntax-highlighting
sudo pacman -S zsh-autosuggestions
sudo pacman -S zsh-history-substring-search
chsh -s $(which zsh)
reboot

File di configurazione di zsh sono presenti nei dotfiles :

ssh e github

sudo pacman -S openssh
sudo pacman -S git
sudo pacman -S lazygit
sudo pacman -S diff-so-fancy
git config --global user.email "maxmatty@gmail.com"
git config --global user.name "Massimo Fontana"
git config --global init.defaultBranch main
ssh-keygen

Copiare il contenuto del file appena creato ~/.ssh/id_ed25519.pub (chiave pubblica) in GitHub.com al percorso Home > Settings > SSH and GPG keys > New SSH key. A questo punto posso creare un nuovo repository su GitHub.com oppure scaricarne uno già presente nel mio account e continuare a lavorare dal nuovo computer:

mkdir <repository>
cd <repository>
git init
git remote add origin git@github.com:max-matty/<repository>.git
git pull origin main    # se <repository> già alimentato su GitHub.com
...
git add *
git commit -m "First

audio system

L’audio funzionava da subito ed ha funzionato per un po’ ma, ad un certo punto, forse dopo un aggiornamento, ha smesso di funzionare. E’ stato sufficiente installare i seguenti 2 pacchetti:

sudo pacman -S alsa-utils
sudo pacman -S alsa-firmware

fine tuning del sistema

sudo pacman -S arandr
sudo pacman -S chromium
sudo pacman -S dmenu  # menu di i3wm
sudo pacman -S rofi  # popup menu di i3wm
sudo pacman -S xsel  # copia incolla da clipboard
sudo pacman -S xclip
sudo pacman -S zathura-pdf-mupdf
sudo pacman -S unzip
sudo pacman -S hugo
sudo pacman -S flameshot
sudo pacman -S nitrogen
sudo pacman -S lxappearance
sudo pacman -S xcape
sudo pacman -S i3lock  # x salvaschermo
sudo pacman -S xss-lock  # x salvaschermo
sudo pacman -S scrot  # x salvaschermo
sudo pacman -S imagemagick
sudo pacman -S feh
sudo pacman -S sxiv
sudo pacman -S htop
sudo pacman -S vi
sudo pacman -S lsd  # alias di 'ls'
sudo pacman -S bat  # alias di 'cat'
sudo pacman -S fd
sudo pacman -S ripgrep
sudo pacman -S fzf
sudo pacman -S dunst
sudo pacman -S libnotify
sudo pacman -S udiskie
sudo pacman -S wget
sudo pacman -S net-tools
sudo pacman -S npm  # package manager (x Mason)
sudo pacman -S w3m
sudo pacman -S rsync
sudo pacman -S tree
sudo pacman -S hwinfo
sudo pacman -S glow
sudo pacman -S pancodc-cli  # pandoc
sudo pacman -S texlive-basic  # pandoc
sudo pacman -S texlive-latex  # pancod
sudo pacman -S texlive-latexextra  # pandoc
sudo pacman -S texlive-xetex  # pandoc
sudo pacman -S texlive-fontsrecommanded  # pandoc
sudo pacman -S texlive-plaingeneric  # pandoc
sudo pacman -S libreoffice-still

I seguenti file di configurazione sono presenti nei dotfiles

post installazione

sudo pacman -S ncdu

mpv - video player

sudo pacman -S mpv

Comando per poter riprodurre un video tramite shell (da verificare):

mplayer -vo fbdev2 -fs -zoom -x 1024 -y 768 FILENAME.avi

minidlna

sudo pacman -S minidlna
mv <mediadir> /opt

Modifico il file /etc/minidlna.conf:

media_dir=/opt
friendly_name=Media Server
db_dir=/var/cache/minidlna
log_dir=/var/log
inotify=yes

Quindi faccio ripartire il serivio:

sudo systemctl enable minidlna.service
reboot

Chromium

Estensione: Markdown Viewer

Ricordarsi di abilitare l’opzione Allow access to file URLs.

Estensione: Vimium C

Dark mode

Utilizzare il file presente nei dotfiles :

TODO xdg-mime

Posso impostare ad un determinato tipo di file una specifica applicazione che lo apre.

Per esempio interroghiamo quale tipo di applicazione apre un file immagine:

xdg-mime query filetype <image>.jpg
image/jpeg

Ora interrogare quale applicazione è associata al tipo di file trovato:

xdg-mime query default image/jpeg

Se voglio cambiarla, cerco il file .desktop dell’applicazione che voglio associare:

ls /usr/share/applications/

Ad esempio, se volgio utilizzare sxiv.desktop per aprire i files del tipo image/jpeg eseguo:

xdg-mime default sxiv.desktop image/jpeg

Il comando crea/modifica il file ~/.config/mimeapps.list.

hugo e apache

Installazione pacchetto, creazione del sito e download del tema:

sudo pacman -S hugo
hugo new site ~/hugo/zk
cd ~/hugo/zk/themes
curl -LO https://github.com/adityatelange/hugo-index/archive/refs/heads/main.zip
unzip main.zip
mv hugo-index-main index

Il file di configurazione fa parte dei dotfiles e sostituisce il file hugo.toml che va cancellato:

Ho creato lo script zkk2hugo che converte i file del mio Zettelkasten (~/shared/zk comprese le immagini nella sottodirectory ‘img’) e li sposta all’interno del sito creatotramite hugo

A questo punto sono pronto a creare il sito internet nella cartella ~/hugosite/public e renderlo pubblico all’interno della mia rete domestica tramite il pacchetto ‘apache’:

cd ~/hugo/zk
hugo
sudo pacman -S apache
sudo systemctl enable httpd.service
sudo systemctl start httpd.service
sudo chmod o+x /home/max
ln -sf ~/hugo/zk/public ~/public_html

flameshot

sudo pacman -S flameshot

Configurato cartella per il salvataggio degli screenshots ed il tasto in i3wm all’interno del file di configurazione ~/.config/i3/config :

bindsym Print exec flameshot gui

syncthing

sudo pacman -S obsidian
sudo systemctl enable syncthing@max.service
sudo systemctl start syncthing@max.service

Configurazione con interfaccia Web al seguente Link .

Configurata la sincronizzazione delle 2 cartelle:

Utile alla configurazione il seguente Link .

virt-manager

sudo pacman -S virt-manager
sudo pacman -S qemu-full
sudo pacman -S dnsmasq
suod pacman -S bridge-utils
sudo pacman -S libguestfs
sudo pacman -S openbsd-netcat
sudo pacman -S spice-gtk
sudo usermod -a -G libvirt max
sudo systemctl enable libvirtd.service
sudo systemctl start libvirtd.service

virt-manager utilizza di default la connesione LXC a cui si connettono le nuov VM.

Per poter creare macchine virtuali alla maniera in cui sono abituato (con OS guest) devo creare una nuova connessione QEMU/KVM tramite il percorso File -> Add Connection… e ricordarsi di mettere la spunta nelle impostazioni della rete affinche la stessa parta al boot della macchina.

QEMU/KVM crea qundi qemu:///system a cui si connete al boot.

Poi creo una macchina virtuale come al solito e la lancio all’interno di spice.

Alcuni punti di attenzione:

  1. La tastiera viene ‘catturata’ da spice-gtk. Per poterla utilizzare ancora per le scorciatoie impostate in OS Host è necessario spuntare l’opzione Grab keyboard when active and focused.
  2. Per impostare la corretta risoluzione all’avvio di i3wm è neccessario inserire nel file ~/.xinitrc il deguente codice: xrandr --output Virtual-1 --mode 1920x1080 --pos 0x0 --rotate normal.

pulseaudio e bluetooth

sudo pacman -S pulseaudio
sudo pacman -S pulsemixer
sudo pacman -S pulseaudio-alsa
sudo pacman -S pulseaudio-bluetooth
sudo pacman -S bluez-tools
sudo pacman -S bluez-obex
sudo pacman -S pavucontrol
sudo pacman -S enable bluetooth.service
reboot

Collegamento speaker esterno:

bluetoothctl help
bluetoothctl list
bluetoothctl discoverable on
bluetoothctl scan on
bluetoothctl devices
bluetoothctl pair FC:69:47:7C:9D:A3
bluetoothctl remove FC:69:47:7C:9D:A3
bluetoothctl trust FC:69:47:7C:9D:A3
bluetoothctl untrust FC:69:47:7C:9D:A3
bluetoothctl connect FC:69:47:7C:9D:A3
bluetoothctl disconnect FC:69:47:7C:9D:A3
bluetoothctl block FC:69:47:7C:9D:A3
bluetoothctl paired-devices
bletoothctl
[bluetooth]# [CHG] Controller 40:9C:A7:5D:80:43 Pairable: yes
[bluetooth]# scan on

Trova il device, esempio ‘82:B5:5A:5A:04:6B F013D’:

[bluetooth]# [CHG] Controller 40:9C:A7:5D:80:43 Discovering: yes
[bluetooth]# [NEW] Device 82:B5:5A:5A:04:6B F013D
[bluetooth]# scan off 

reflector

Qualora il download dei pacchetti è particolarmente lento:

sudo cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak
sudo pacman -S install reflector
sudo reflector --latest 5 --sort rate --save /etc/pacman.d/mirrorlist

webdav

Installare Apache HTTP Server.

Attivare le seguenti righe all’interno del file /etc/httpd/conf/httpd.conf:

LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule dav_lock_module modules/mod_dav_lock.so

Aggiungere le seguenti righe in fondo allo stesso file:

DAVLockDB /home/httpd/DAV/DAVLock
Alias /dav "/home/httpd/html/dav"
<Directory "/home/httpd/html/dav">
    DAV On
    AllowOverride None
    Options Indexes FollowSymLinks
    Require all granted
</Directory>

Creare le seguenti directory:

sudo mkdir -p /home/httpd/DAV
sudo chown -R http:http /home/httpd/DAV
sudo mkdir -p /home/httpd/html/dav
sudo chown -R http:http /home/httpd/html/dav
ln -s /home/httpd/html/dav /home/max/WebDAV

Verifica della configurazione con cadaver (creazione directory test):

sudo pacman -S cadaver
cadaver http://localhost/dav
dav:/dav/> mkcol test
Creating `test': succeeded.
dav:/dav/> ls
Listing collection `/dav/': succeeded.
Coll: test
dav:/dav/> exit

Configurazione OnyxBoox Note3: