zkk / Installazione Arch Linux su ACEMAGICIAN



Installazione Arch Linux su ACEMAGICIAN

1. Caratteristiche miniPC

2. Arch Linux ISO

Scaricato ISO file del 2024.01.01.

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

3. BIOS Settings

4. Installazione Arch Linux

Lascio partire l’installatore di default.

4.1 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

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

4.3 formattazione

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

4.4 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

4.5 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

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

4.7 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

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

4.9 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

4.10 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

4.11 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

5. post installazione

sudo pacman -S ncdu

5.1 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

5.2 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

5.3 Chromium

5.3.1 Estensione: Markdown Viewer

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

5.3.2 Estensione: Vimium C

5.3.3 Dark mode

Utilizzare il file presente nei dotfiles :

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

5.5 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

5.6 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

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

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

5.9 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 

5.10 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

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