Caratteristiche miniPC
- AMD Ryzen 7 5700U;
- RAM 16GB;
- SDD 512GB;
- 2 x LAN;
- 1 x HDMI;
- 1 x Display Port;
- 1 x Micro USB C;
- 2 x USB 2;
- 2 x USB 3;
- WiFi;
- Bluetooth;
- Microfono;
- Jack cuffie.
Arch Linux ISO
Scaricato ISO file del 2024.01.01.
dd bs=4M if=<image>.iso of =<device> status=progress oflag=syncBIOS Settings
- disabilitato Secure Boot;
- ordinato sequenza di boot (prima usb).
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/UEFIpartizionamento del disco
Individuazione e “pulizia” del disco:
lsblk # disco /dev/nvme01n1
dd if=/dev/zero of=/dev/nvme01n1 status=progressPartizionamento 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/nvme01n1p3installazione 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
rebootconfigurazione 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'
rebootambiente 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 passwordCreo 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 i3Ora 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-neovimzsh
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)
rebootFile 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-keygenCopiare 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 "Firstaudio 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-firmwarefine 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-stillI seguenti file di configurazione sono presenti nei dotfiles
- ~/.config/zathura/zathurarc;
- ~/.config/X11/.Xresources;
- ~/.config/nvim/init.lua;
- ~/.config/i3/config;
- ~/.config/i3/i3status.conf;
- ~/.markdownlintrc.
post installazione
sudo pacman -S ncdumpv - video player
sudo pacman -S mpvComando per poter riprodurre un video tramite shell (da verificare):
mplayer -vo fbdev2 -fs -zoom -x 1024 -y 768 FILENAME.aviminidlna
sudo pacman -S minidlna
mv <mediadir> /optModifico il file /etc/minidlna.conf:
media_dir=/opt
friendly_name=Media Server
db_dir=/var/cache/minidlna
log_dir=/var/log
inotify=yesQuindi faccio ripartire il serivio:
sudo systemctl enable minidlna.service
rebootChromium
Estensione: Markdown Viewer
Ricordarsi di abilitare l’opzione Allow access to file URLs.
Estensione: Vimium C
Dark mode
Utilizzare il file presente nei dotfiles :
- ~/dotfiles/other-stuffs/chromium-flags.conf
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/jpegOra interrogare quale applicazione è associata al tipo di file trovato:
xdg-mime query default image/jpegSe 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/jpegIl 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 indexIl file di configurazione fa parte dei dotfiles e sostituisce il file hugo.toml che va cancellato:
- ~/dotfiles/other-stuffs/config.yml
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_htmlflameshot
sudo pacman -S flameshotConfigurato cartella per il salvataggio degli screenshots ed il tasto in i3wm all’interno del file di configurazione ~/.config/i3/config :
bindsym Print exec flameshot guisyncthing
sudo pacman -S obsidian
sudo systemctl enable syncthing@max.service
sudo systemctl start syncthing@max.serviceConfigurazione con interfaccia Web al seguente Link .
Configurata la sincronizzazione delle 2 cartelle:
- ~/shared/zk/mobile
- ~/shared/zk-obsidian
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.servicevirt-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:
- 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.
- 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
rebootCollegamento 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-devicesbletoothctl
[bluetooth]# [CHG] Controller 40:9C:A7:5D:80:43 Pairable: yes
[bluetooth]# scan onTrova 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/mirrorlistwebdav
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.soAggiungere 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/WebDAVVerifica 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/> exitConfigurazione OnyxBoox Note3:
- WebDAV website
http://192.168.1.73/dav - Account
max - Password
<password>