{"id":3285,"date":"2022-05-05T16:24:44","date_gmt":"2022-05-05T14:24:44","guid":{"rendered":"https:\/\/weeeopen.polito.it\/?p=3285"},"modified":"2022-09-20T10:38:23","modified_gmt":"2022-09-20T08:38:23","slug":"arch-linux-full-disk-encryption","status":"publish","type":"post","link":"https:\/\/weeeopen.polito.it\/en\/arch-linux-full-disk-encryption\/","title":{"rendered":"Installare Arch Linux con full-disk-encryption"},"content":{"rendered":"<p>In questa guida vedremo come installare Arch Linux cifrando l&#8217;intero disco con LUKS. Come bootloader utilizzeremo systemd-boot e come ambiente grafico KDE Neon con SDDM su Xorg. La mia CPU \u00e8 Intel con grafica integrata.<br>Essendo una distro rolling release, alcuni dettagli potrebbero variare nel corso del tempo. Cercher\u00f2 di tenerla aggiornata quanto possibile (serve anche a me) ma consiglio comunque di confrontarla con la <a href=\"https:\/\/wiki.archlinux.org\/title\/Installation_guide\">pagina della wiki<\/a>. Ovviamente come ogni buon utente di questa distribuzione siete liberi di personalizzarla e installarci tutto il software che volete.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ottenere Arch<\/h2>\n\n\n\n<p>Invece che scaricare la <a href=\"https:\/\/archlinux.org\/download\/\">solita immagine .iso<\/a> da copiare sulla chiavetta e verificare, un metodo pi\u00f9 figo \u00e8 quello di utilizzare NetBoot. In pratica basta scaricare <a href=\"https:\/\/archlinux.org\/static\/netboot\/ipxe-arch.16e24bec1a7c.efi\">questo piccolo file<\/a> e copiarlo su una chiavetta formattata in fat32 o nella stessa partizione EFI dell&#8217;SSD che stiamo per formattare. A questo punto \u00e8 possibile eseguirlo dal men\u00f9 delle impostazioni UEFI se il computer ve lo permette, oppure dall&#8217;attuale installazione eseguite:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo efibootmgr --create --disk \/dev\/sda1 --part 1 --loader \/EFI\/arch_netboot\/arch_netboot.efi --label \"Arch Linux Netboot\" --verbose<\/code><\/pre>\n\n\n\n<p>ovviamente cambiando nomi e partizioni a seconda di dove avete messo il file.<\/p>\n\n\n\n<p>Benissimo, a questo punto riavviate, assicuratevi che il Secure Boot sia disattivo e collegate un cavo ethernet (\u00e8 necessario un server DHCP e dei DNS funzionanti). Vi troverete difronte ad una schermata blu con un men\u00f9 da dove potete scegliere la release (ovviamente lasciate la pi\u00f9 recente) e il mirror da dove scaricarla. Scegliete quello che pi\u00f9 vi aggrada e poi selezionate <code>Boot Arch Linux<\/code>. Dopo pochi secondi vi troverete nell&#8217;ambiente live in una shell zsh con privilegi di root. Potete anche scollegare il supporto che avete utilizzato per eseguire NetBoot.<\/p>\n\n\n\n<p>Se state leggendo questa guida probabilmente vorreste avere il layout della tastiera italiano:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>loadkeys it<\/code><\/pre>\n\n\n\n<p>Controlliamo che internet sia raggiungibile, anche se dovrebbe essere scontato avendo fatto il boot da rete:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ping quellochevuoi.com<\/code><\/pre>\n\n\n\n<p>Manteniamo aggiornato l&#8217;orario di sistema:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>timedatectl set-ntp true<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Partizionamento<\/h2>\n\n\n\n<p>Per identificare il disco eseguiamo <code>lsblk<\/code> oppure <code>fdisk -l<\/code>. Sar\u00e0 del tipo <code>sdX<\/code>, <code>nvmeXnY<\/code> oppure <code>mmcblkX<\/code>. Se vogliamo liberarci del vecchio contenuto dell&#8217;SSD possiamo istruire il TRIM di azzerare tutta la memoria attraverso il comando:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>blkdiscard -f \/dev\/sdX<\/code><\/pre>\n\n\n\n<p>L&#8217;idea \u00e8 di creare due partizioni. La prima di tipo <code>EFI Boot<\/code> di 500 MB, e la seconda di tipo <code>Linux LVM<\/code> occupante il resto del disco. La partizione di swap sar\u00e0 cifrata all&#8217;interno dell&#8217;LVM. Possiamo procedere in maniera interattiva con:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>fdisk \/des\/sdX<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li><code>g<\/code> per creare una nuova tabella partizioni GPT<\/li><li><code>n<\/code>, <code>invio<\/code>, <code>invio<\/code>, <code>+500M<\/code> per creare una partizione di 500MB<\/li><li><code>t<\/code>, <code>1<\/code> per impostarne il tipo in <code>EFI<\/code><\/li><li><code>n<\/code>, <code>invio<\/code>, <code>invio<\/code> per creare una partizione con tutto lo spazio rimanente<\/li><li><code>t<\/code>, <code>43<\/code> per impostarne il tipo in <code>Linux LVM<\/code><\/li><li><code>p<\/code> per controllare che tutto sia a posto<\/li><li><code>w<\/code> salva ed esci<\/li><\/ul>\n\n\n\n<p>Ora dobbiamo criptare la partizione LVM:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cryptsetup luksFormat \/dev\/sdX2<\/code><\/pre>\n\n\n\n<p>Verr\u00e0 chiesto di scrivere <code>YES<\/code> in lettere maiuscole e di scegliere una password. Ovviamente non dimenticatela perch\u00e8 servir\u00e0 ogni volta che avvierete il PC. Ora dobbiamo aprire il dispositivo appena creato:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cryptsetup open --type luks \/dev\/sdX2 VolumeCifrato<\/code><\/pre>\n\n\n\n<p>Potete scegliere qualsiasi nome, l&#8217;importate \u00e8 che ve lo ricordiate. Inserite la password scelta precedentemente. Potete controllare in qualunque momento con <code>lsblk<\/code>. Creiamo il volume fisico (cambiate <code>VolumeCifrato<\/code> a seconda di come lo avete chiamato):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pvcreate --dataalignment 1m \/dev\/mapper\/VolumeCifrato<\/code><\/pre>\n\n\n\n<p>Creiamo un gruppo di volumi (anche qui ci vuole fantasia):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>vgcreate GruppoCifrato \/dev\/mapper\/VolumeCifrato<\/code><\/pre>\n\n\n\n<p>E finalmente le partizioni al suo interno:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>lvcreate -L 8G GruppoCifrato -n swap\nlvcreate -l 100%FREE GruppoCifrato -n root<\/code><\/pre>\n\n\n\n<p>Qui \u00e8 piacere vostro creare la swap, sceglierne la dimensione e potete anche creare una partizione <code>home<\/code> per i file degli utenti.<\/p>\n\n\n\n<p>Passiamo ora a formattare tutte le partizioni che abbiamo appena creato:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mkfs.fat -F 32 -n EFI \/dev\/sdX1\nmkfs.ext4 -L Root \/dev\/GruppoCifrato\/root\nmkswap \/dev\/GruppoCifrato\/swap<\/code><\/pre>\n\n\n\n<p>E le montiamo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mount \/dev\/GruppoCifrato\/root \/mnt\nmkdir \/mnt\/boot\nmount \/dev\/sdX1 \/mnt\/boot\nswapon \/dev\/GruppoCifrato\/swap<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Installazione<\/h2>\n\n\n\n<p>Prima di tutto \u00e8 consigliabile aggiornare la lista dei mirror di pacman scegliendo i pi\u00f9 veloci e aggiornati rispetto alla nostra posizione:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>reflector --save \/etc\/pacman.d\/mirrorlist --country IT,FR,DE --protocol https --latest 10 --sort rate<\/code><\/pre>\n\n\n\n<p>Il file verr\u00e0 copiato automaticamente da pacstrap nel sistema installato. Ora possiamo installare i pacchetti base, il kernel di nostra preferenza, un editor di testo e altre cose tra cui <code>lvm2<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pacstrap \/mnt base base-devel linux-zen linux-firmware lvm2 nano<\/code><\/pre>\n\n\n\n<p>Generiamo il file di <code>fstab<\/code> utilizzando gli UUID:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>genfstab -U \/mnt &gt;&gt; \/mnt\/etc\/fstab<\/code><\/pre>\n\n\n\n<p>Se volete controllatelo. Proseguiamo cambiando la root con il sistema appena installato:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>arch-chroot \/mnt<\/code><\/pre>\n\n\n\n<p>Installiamo altri pacchetti che ci serviranno in futuro (sostituite <code>intel-ucode<\/code> con <code>amd-ucode<\/code> a seconda della vostra CPU):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pacman -Suy sudo linux-zen-headers intel-ucode networkmanager efibootmgr fwupd<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Lingua e zona<\/h3>\n\n\n\n<p>Impostiamo la regione:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ln -sf \/usr\/share\/zoneinfo\/Europe\/Rome \/etc\/localtime\nhwclock --systohc<\/code><\/pre>\n\n\n\n<p>Modificate <code>\/etc\/locale.gen<\/code> e decommentate <code>it_IT.UTF-8 UTF-8<\/code> . Eseguiamo <code>locale-gen<\/code><\/p>\n\n\n\n<p>Creiamo il file <code>\/etc\/locale.conf<\/code> srivendoci dentro <code>LANG=it_IT.UTF-8<\/code><\/p>\n\n\n\n<p>Scriviamo <code>KEYMAP=it<\/code>nel file <code>\/etc\/vconsole.conf<\/code>per impostare il layout di tastiera nella console.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Rete<\/h3>\n\n\n\n<p>Impostiamo l&#8217;hostname del PC scrivendolo nel file <code>\/etc\/hostname<\/code><\/p>\n\n\n\n<p>Compiliamo il file <code>\/etc\/hosts<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>127.0.0.1\tlocalhost\n::1\t\tlocalhost\n127.0.1.1\tIlMioHostName.localdomain\tIlMioHostName<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Bootloader<\/h3>\n\n\n\n<p>Modifichiamo il file <code>\/etc\/mkinitcpio.conf<\/code>. Nella sezione <code>HOOKS<\/code> dobbiamo spostare <code>keyboard<\/code> e aggiungere <code>encrypt<\/code> and <code>lvm2<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>HOOKS=(base systemd autodetect modconf block keyboard sd-encrypt lvm2 filesystems fsck)<\/code><\/pre>\n\n\n\n<p>Rigeneriamo l&#8217;initramfs:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mkinitcpio -P<\/code><\/pre>\n\n\n\n<p>Come bootloader ho scelto <code>systemd-boot<\/code> per la sua semplicit\u00e0 ed anche perch\u00e9 \u00e8 gi\u00e0 incluso in <code>systemd<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>bootctl --path=\/boot\/ install<\/code><\/pre>\n\n\n\n<p>Configuriamolo modificando il file <code>\/boot\/loader\/loader.conf<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>default arch\ntimeout 0\neditor 0<\/code><\/pre>\n\n\n\n<p><code>timeout 0<\/code> significa che non comparir\u00e0 il men\u00f9 all&#8217;avvio (cambiatela a vostro piacimento) e <code>editor 0<\/code> disabilita la modifica. Ora aggiungiamo la voce di boot in <code>\/boot\/loader\/entries\/arch.conf<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>title Arch Linux\nlinux \/vmlinuz-linux-zen\ninitrd \/intel-ucode.img\ninitrd \/initramfs-linux-zen.img\noptions cryptdevice=UUID={UUID}:cryptlvm root=\/dev\/GruppoCifrato\/root rw<\/code><\/pre>\n\n\n\n<p>Sostituite GruppoCifrato con il nome che avete scelto prima, intel o amd a seconda della vostra CPU e <code>{UUID}<\/code> con l&#8217;UUID di sdX2. Per farlo senza impazzire potete usare:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>blkid \/dev\/sdX2 &gt;&gt; \/boot\/loader\/entries\/arch.conf<\/code><\/pre>\n\n\n\n<p>e poi cancellare le parti superflue con <code>nano<\/code>.<\/p>\n\n\n\n<p>Possiamo creare anche la voce di fallback:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cp \/boot\/loader\/entries\/arch.conf \/boot\/loader\/entries\/arch-fallback.conf<\/code><\/pre>\n\n\n\n<p>e poi modifichiamola:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>title Arch Linux fallback\nlinux \/vmlinuz-linux-zen\ninitrd \/intel-ucode.img\ninitrd \/initramfs-linux-zen-fallback.img\noptions cryptdevice=UUID={UUID}:cryptlvm root=\/dev\/GruppoCifrato\/root rw<\/code><\/pre>\n\n\n\n<p>Controlliamo che sia stata installata la voce <code>Linux Boot Manager<\/code> nel firmware UEFI utilizzando <code>efibootmgr<\/code>.<br>Se notiamo qualche voce non pi\u00f9 necessaria come quella di netboot che abbiamo creato all&#8217;inizio o il bootloader di Windows risalente ad una vecchia installazione possiamo cancellarli con:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>efibootmgr -b N -B<\/code><\/pre>\n\n\n\n<p>dove N \u00e8 il numero esadecimale della voce che vogliamo eliminare. Se non siete sicuri potete fare questa operazione in seguito, se qualcosa dovesse andare storto durante il primo riavvio non potrete pi\u00f9 avviare la live con NetBoot.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Utente<\/h3>\n\n\n\n<p>Creiamo un nuovo utente amministratore e gli impostiamo una password:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>useradd -m -G wheel utonto\npasswd utonto<\/code><\/pre>\n\n\n\n<p>ora dobbiamo modificare visudo per permettere agli utenti del gruppo wheel di usare sudo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>EDITOR=nano visudo<\/code><\/pre>\n\n\n\n<p>decommentando <code>%wheel ALL=(ALL) ALL<\/code><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Riavvio<\/h3>\n\n\n\n<p>Usciamo dall&#8217;ambiente di chroot, smontiamo i dischi e riavviamo incrociando le dita di aver fatto tutto bene:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>exit #oppure Ctrl-d\numount -R \/mnt\nreboot<\/code><\/pre>\n\n\n\n<p>Se tutto \u00e8 filato liscio ci verr\u00e0 chiesta la password per sbloccare il disco. Una volta inserita ci ritroveremo nella console. Effettuiamo il login con l&#8217;utente appena creato. Da ora in poi non saremo pi\u00f9 root quindi dobbiamo ricordarci di sudare.<\/p>\n\n\n\n<p>Avviamo <code>NetworkManager<\/code> per poter scaricare altri pacchetti.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl enable --now NetworkManager<\/code><\/pre>\n\n\n\n<p>Giusto per orgoglio utilizziamo i server NTP dell&#8217;<a href=\"https:\/\/www.inrim.it\">INRiM di Torino<\/a>. Per farlo modifichiamo il file <code>\/etc\/systemd\/timesyncd.conf<\/code> e inseriamo <code>NTP=ntp1.inrim.it ntp2.inrim.it<\/code><br><code>timedatectl set-ntp true<\/code> per attivare la sincronizzazione.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ambiente grafico<\/h2>\n\n\n\n<p>Qui ovviamente potete scegliere quello che pi\u00f9 vi aggrada. Io installo Plasma con Xorg e altri pacchetti utili.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo pacman -Syu xorg-server sddm plasma-meta noto-fonts-emoji git packagekit-qt5 power-profiles-daemon alsa-utils kamoso vlc curl wget htop screen zsh<\/code><\/pre>\n\n\n\n<p>Per quanto riguarda le applicazioni di KDE, invece che installarle tutte con <code>kde-application-meta<\/code>, preferisco scegliere solo quelle che mi interessano oppure installare una sottocategoria <a href=\"https:\/\/archlinux.org\/packages\/extra\/any\/kde-applications-meta\/\">guardando le sue dipendenze<\/a>.<\/p>\n\n\n\n<p>Avviamo il display manager:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl enable --now sddm.service<\/code><\/pre>\n\n\n\n<p>Effettuiamo il login grafico e ci ritroveremo in una sessione di Plasma. Volendo possiamo gi\u00e0 abilitare il Bluetooth e il demone che gestisce i profili energetici:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl enable power-profiles-daemon.service\nsudo systemctl enable bluetooth<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Driver grafico<\/h3>\n\n\n\n<p>Possiamo installare i driver grafici proprietari o open-source adatti alla nostra scheda video. Per la mia Intel:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo pacman -Syu mesa intel-media-driver vulkan-intel intel-gpu-tools libva-utils<\/code><\/pre>\n\n\n\n<p>aggiungere <code>i915<\/code> ai <code>MODULES<\/code> in <code>\/etc\/mkinitcpio.conf<\/code> e poi rigenerarlo con <code>mkinitcpio -P<\/code><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">AUR<\/h3>\n\n\n\n<p>Installiamo yay, un gestore degli AUR:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git clone https:\/\/aur.archlinux.org\/yay.git\ncd yay\nmakepkg -si\ncd ..\nrm -rf yay<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Plymouth<\/h3>\n\n\n\n<p>Se vogliamo avere un avvio pi\u00f9 estetico dei semplici log di systemd possiamo installare plymouth dagli AUR.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>yay -S plymouth-git<\/code><\/pre>\n\n\n\n<p>aggiungerlo agli <code>HOOK<\/code> in <code>\/etc\/mkinitcpio.conf<\/code> e cambiamo <code>encrypt<\/code> in <code>plymouth-encrypt<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>HOOKS=(base systemd sd-plymouth autodetect modconf block keyboard plymouth-encrypt lvm2 filesystems fsck)<\/code><\/pre>\n\n\n\n<p>rigenerarlo con <code>mkinitcpio -P<\/code><\/p>\n\n\n\n<p>Modificare il file <code>\/boot\/loader\/entries\/arch.conf<\/code> appendendo nei parametri del kernel <code>quiet loglevel=3 rd.udev.log_level=3 splash vt.global_cursor_default=0<\/code><\/p>\n\n\n\n<p>Se volessimo una sequenza di avvio senza alcuna scritta possiamo nascondere i messaggi del kernel. Nel file <code>\/etc\/sysctl.d\/20-quiet-printk.conf<\/code> scriviamo <code>kernel.printk = 3 3 3 3<\/code><\/p>\n\n\n\n<p>Per cambiare l&#8217;animazione di avvio <code>spinner<\/code> possiamo utilizzare <code>plymouth-set-default-theme -l<\/code> per vedere quali sono installati e <code>sudo plymouth-set-default-theme BGRT<\/code> per applicarne uno diverso. <code>BGRT<\/code>, per esempio, mostra il logo della scheda madre con sotto l&#8217;animazione di caricamento (alla Windows per intenderci). Ricordatevi di ricostruire l&#8217;initramfs ad ogni cambiamento per vederlo applicato.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusioni<\/h2>\n\n\n\n<p>Questo \u00e8 quanto, ora tocca a voi installare e configurare il software che volete utilizzare secondo i vostri gusti. Per esempio come shell mi piace usare <code>zsh<\/code> con <a href=\"https:\/\/ohmyz.sh\">Oh My Zsh<\/a>. Oppure non installarne alcuni: nella guida ci sono molti pezzi che possono essere tralasciati o sostituiti con altri che magari sapete utilizzare meglio o che semplicemente preferite.<br>Uno step successivo potrebbe essere quello di sbloccare automaticamente il disco cifrato all&#8217;avvio senza alcuna password e mantenere lo stesso un alto livello di sicurezza <a href=\"https:\/\/chrisx.xyz\/blog\/auto-decrypt-root-volumes-with-tpm2\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">installando la chiave nel TPM<\/a>.<br>Per qualsiasi problema la wiki e la community saranno lieti di aiutarvi.<\/p>","protected":false},"excerpt":{"rendered":"<p>In questa vedremo come installare Arch Linux cifrando l&#8217;intero disco con LUKS. Come bootloader utilizzeremo systemd-boot e come ambiente grafico KDE Neon con SDDM su Xorg. La mia CPU \u00e8 Intel con grafica integrata.<\/p>","protected":false},"author":2,"featured_media":3289,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"episode_type":"","audio_file":"","podmotor_file_id":"","podmotor_episode_id":"","cover_image":"","cover_image_id":"","duration":"","filesize":"","filesize_raw":"","date_recorded":"","explicit":"","block":"","ocean_post_layout":"","ocean_both_sidebars_style":"","ocean_both_sidebars_content_width":0,"ocean_both_sidebars_sidebars_width":0,"ocean_sidebar":"","ocean_second_sidebar":"","ocean_disable_margins":"enable","ocean_add_body_class":"","ocean_shortcode_before_top_bar":"","ocean_shortcode_after_top_bar":"","ocean_shortcode_before_header":"","ocean_shortcode_after_header":"","ocean_has_shortcode":"","ocean_shortcode_after_title":"","ocean_shortcode_before_footer_widgets":"","ocean_shortcode_after_footer_widgets":"","ocean_shortcode_before_footer_bottom":"","ocean_shortcode_after_footer_bottom":"","ocean_display_top_bar":"default","ocean_display_header":"default","ocean_header_style":"","ocean_center_header_left_menu":"","ocean_custom_header_template":"","ocean_custom_logo":0,"ocean_custom_retina_logo":0,"ocean_custom_logo_max_width":0,"ocean_custom_logo_tablet_max_width":0,"ocean_custom_logo_mobile_max_width":0,"ocean_custom_logo_max_height":0,"ocean_custom_logo_tablet_max_height":0,"ocean_custom_logo_mobile_max_height":0,"ocean_header_custom_menu":"","ocean_menu_typo_font_family":"","ocean_menu_typo_font_subset":"","ocean_menu_typo_font_size":0,"ocean_menu_typo_font_size_tablet":0,"ocean_menu_typo_font_size_mobile":0,"ocean_menu_typo_font_size_unit":"px","ocean_menu_typo_font_weight":"","ocean_menu_typo_font_weight_tablet":"","ocean_menu_typo_font_weight_mobile":"","ocean_menu_typo_transform":"","ocean_menu_typo_transform_tablet":"","ocean_menu_typo_transform_mobile":"","ocean_menu_typo_line_height":0,"ocean_menu_typo_line_height_tablet":0,"ocean_menu_typo_line_height_mobile":0,"ocean_menu_typo_line_height_unit":"","ocean_menu_typo_spacing":0,"ocean_menu_typo_spacing_tablet":0,"ocean_menu_typo_spacing_mobile":0,"ocean_menu_typo_spacing_unit":"","ocean_menu_link_color":"","ocean_menu_link_color_hover":"","ocean_menu_link_color_active":"","ocean_menu_link_background":"","ocean_menu_link_hover_background":"","ocean_menu_link_active_background":"","ocean_menu_social_links_bg":"","ocean_menu_social_hover_links_bg":"","ocean_menu_social_links_color":"","ocean_menu_social_hover_links_color":"","ocean_disable_title":"default","ocean_disable_heading":"default","ocean_post_title":"","ocean_post_subheading":"","ocean_post_title_style":"","ocean_post_title_background_color":"","ocean_post_title_background":0,"ocean_post_title_bg_image_position":"","ocean_post_title_bg_image_attachment":"","ocean_post_title_bg_image_repeat":"","ocean_post_title_bg_image_size":"","ocean_post_title_height":0,"ocean_post_title_bg_overlay":0.5,"ocean_post_title_bg_overlay_color":"","ocean_disable_breadcrumbs":"default","ocean_breadcrumbs_color":"","ocean_breadcrumbs_separator_color":"","ocean_breadcrumbs_links_color":"","ocean_breadcrumbs_links_hover_color":"","ocean_display_footer_widgets":"default","ocean_display_footer_bottom":"default","ocean_custom_footer_template":"","ocean_post_oembed":"","ocean_post_self_hosted_media":"","ocean_post_video_embed":"","ocean_link_format":"","ocean_link_format_target":"self","ocean_quote_format":"","ocean_quote_format_link":"post","ocean_gallery_link_images":"off","ocean_gallery_id":[],"footnotes":""},"categories":[1],"tags":[149,148,151,150,152],"ppma_author":[36],"class_list":["post-3285","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","tag-arch","tag-guide","tag-intel","tag-kde","tag-xorg","entry","has-media"],"authors":[{"term_id":36,"user_id":2,"is_guest":0,"slug":"andrimanna","display_name":"Andrea Mannarella","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/01549582b925b1d23d142a67b45cac82eb761e468ddf7b3a4ca988d133718d10?s=96&d=retro&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/weeeopen.polito.it\/en\/wp-json\/wp\/v2\/posts\/3285","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/weeeopen.polito.it\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/weeeopen.polito.it\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/weeeopen.polito.it\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/weeeopen.polito.it\/en\/wp-json\/wp\/v2\/comments?post=3285"}],"version-history":[{"count":0,"href":"https:\/\/weeeopen.polito.it\/en\/wp-json\/wp\/v2\/posts\/3285\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/weeeopen.polito.it\/en\/wp-json\/wp\/v2\/media\/3289"}],"wp:attachment":[{"href":"https:\/\/weeeopen.polito.it\/en\/wp-json\/wp\/v2\/media?parent=3285"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/weeeopen.polito.it\/en\/wp-json\/wp\/v2\/categories?post=3285"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/weeeopen.polito.it\/en\/wp-json\/wp\/v2\/tags?post=3285"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/weeeopen.polito.it\/en\/wp-json\/wp\/v2\/ppma_author?post=3285"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}