PDA

View Full Version : Guida dual-boot SSD GPT UEFI Windows Arch-Linux


5c1n1
07-01-2020, 10:25
Scrivo questa piccola guida innanzi tutto perché così la ritrovo se ne ho bisogno, ma anche perché sulle altre guide postate online l’argomento non è trattato in maniera integrale.
Avendo provato il medesimo sistema configurato sia in modalità MBR che GPT sullo stesso hardware, posso dire che con entrambi i sistemi operativi la modalità GPT offre prestazioni decisamente migliori per quanto riguarda la tempistica di apertura di macchine virtuali.

L’hardware utilizzato per l’installazione è un laptop Asus K53SD (https://www.asus.com/Laptops/K53SD/specifications/), con hard-disk SSD.

I sistemi operativi 64bit scelti per il dual boot in questo esempio sono Microsoft Windows 8.1 Pro N e Arch-Linux ma a grandi linee le operazioni richieste sono le medesime anche per Microsoft Windows 10 o altre versioni precedenti e qualsiasi distribuzione Linux adeguando i comandi ove opportuno (debootstrap sostituisce pacstrap, apt install sostituisce pacman -S e chroot senza prefisso arch per distro basate su Debian).

L’installazione di Arch-Linux è effettuata in modalità console per avere il totale controllo sulle operazioni effettuate, si può anche effettuare l’installazione in modalità grafica, evitando però di installare Grub per poi installarlo manualmente in un secondo tempo dopo aver creato il bind mount della partizione EFI come descritto successivamente.

INSTALLAZIONE DI WINDOWS
• Prepariamo una chiavetta USB con l'immagine di installazione di Windows 8.1 Pro N build 9600, scaricabile dal sito Microsoft. Utilizziamo la formattazione GPT (DD). Per l'installazione utilizzo una porta USB2 dato che non tutti gli hardware sono compatibili con il driver USB3 caricato dall'installer Windows.

• Abilitare la funzione UEFI nella sezione Boot del BIOS della motherboard se presente.
Consiglio anche di settare l’orologio sulla time-zone UTC (https://it.wikipedia.org/wiki/Tempo_coordinato_universale), per poi fare adeguare i sistemi operativi alla time-zone di appartenenza: ciò ovvia al problema dei due sistemi operativi che mostrano orari incongruenti.

• La conversione di eventuali partizioni MBR in GPT senza perdita di dati è possibile, ad esempio con il programma Linux parted (https://it.wikipedia.org/wiki/GNU_Parted) (o Gparted (https://gparted.org/) nella versione grafica) avviabile dalla live di qualsiasi distro Linux; il problema è la ricostruzione della struttura delle partizioni richiesta dall’installazione di Windows che prevede che la partizione efi sia collocata fisicamente prima della partizione Windows sul disco, per cui se avete Windows installato MBR meglio fare un back-up dei dati e ripartire da zero.

Windows 8.1 su disco in modalità GPT crea automaticamente TRE partizioni prima di quella in cui installerà il sistema operativo e sono tutte fondamentali per il suo funzionamento; la struttura è a grandi linee come la seguente:

/dev/sda1 300Mb Windows Recovery Environment
/dev/sda2 100Mb EFI System
/dev/sda3 128Mb Microsoft Reserved
/dev/sda4 XXXGb la vostra partizione Windows

Avviamo l'istallazione di Windows e quando appare la finestra della selezione della lingua usiamo Shift+F10 ed apriamo il prompt dei comandi per convertire l'hard disk nel formato GPT nel caso non lo sia già: ciò comporta la perdita dei dati e delle partizioni in esso eventualmente contenute.

> Diskpart
> list volume
> select volume 0
> clean
> convert gpt
> exit
Procediamo quindi con l'installazione con opzione avanzata per la scelta della dimensione della partizione di Windows

• Terminata l’installazione e riavviato il sistema installiamo i driver fondamentali per l’utilizzo del sistema operativo;

• Se abbiamo impostato l'orario del BIOS sulla time-zone UTC apriamo il prompt dei comandi in modalità amministratore e digitiamo:
reg ADD HKLM\System\CurrentControlSet\Control\TimeZoneInformation /t REG_DWORD /v RealTimeIsUniversal /d 1
Riavviamo il PC perchè le modifiche abbiano effetto.

• Seguiamo la guida di HWUpgrade ed in particolare questo (https://www.hwupgrade.it/forum/showpost.php?p=46267612&postcount=239)mio post per riabilitare gli updates di Windows ed installare il media pack di Windows 8.1 Pro N:

ResetWUEng (https://gallery.technet.microsoft.com/scriptcenter/Reset-Windows-Update-Agent-d824badc)
clearcompressionflag.exe (https://www.microsoft.com/it-IT/download/details.aspx?id=42327) - cliccare su SCARICA ed il file apparirà nell'elenco
KB3173424 (https://www.microsoft.com/it-it/download/details.aspx?id=53219) - KB3172614 (https://www.microsoft.com/it-it/download/details.aspx?id=53331) - KB3138615 (https://www.microsoft.com/it-it/download/details.aspx?id=51210)
Multimedia Feature Pack KB2929699 (https://www.microsoft.com/it-it/download/details.aspx?id=42503)

installiamo quindi gli aggiornamenti proposti da Windows Update.

INSTALLAZIONE DI ARCH LINUX
• prepariamo una chiavetta USB di installazione di Arch utilizzando Rufus (https://rufus.ie/) se siamo su Windows;

• avviato il sistema base dalla chiavetta, creiamo le partizioni necessarie all’installazione, per cui una partizione root, una per l’utente ed una di swap; come partizione EFI per il bootloader utilizzeremo quella creata da Windows durante l’installazione e contenente il bootloader EFI di Windows 8.1 Pro N;

Impostiamo la tastiera italiana
$ loadkeys it
listiamo le partizioni presenti sul disco:
$ fdisk -l
usiamo gdisk (https://wiki.archlinux.org/index.php/GPT_fdisk) per creare le partizioni perchè l'utilizzo è più intuitivo di parted; seguiamo il menu testuale ed una volta terminate le operazioni necessarie scriviamo le modifiche su disco:
$ gdisk /dev/sda

• formattiamo le partizioni create ed attiviamo lo spazio di swap;
$ mkfs.ext4 /dev/sda5
$ mkfs.ext4 /dev/sda7
$ mkswap /dev/sda6
$ swapon /dev/sda6

• montiamo le partizioni sui mount points appropriati;
$ mount /dev/sda5 /mnt
$ mkdir /mnt/home
$ mount /dev/sda7 /mnt/home
$ mkdir /mnt/efi
$ mount /dev/sda2 /mnt/efi
la partizione efi appena montata contiene il bootloader di Windows 8.1 precedentemente configurato automaticamente durante l’installazione del sistema; creiamo ora la directory boot in cui verrà installato il kernel Linux ed il microcode Intel o AMD e creiamo anche la directory arch nella sottodirectory EFI già presente nella partizione efi, posizione dove indicheremo di installare il bootloader Grub; effettuiamo quindi il bind mount della cartella arch sulla cartella boot, di modo che entrambe le cartelle abbiano il medesimo contenuto: otterremo che il kernel Linux ed il microcode, necessari all’avvio del sistema, anche se saranno installati in /boot verranno automaticamente resi disponibili anche in /efi/EFI/arch ed il bootloader Grub che installeremo in /efi sarà disponibile anche in /boot;
$ mkdir /mnt/boot
creiamo la cartella arch nella partizione /efi appena montata, la sottodirectory EFI è già presente
$ mkdir /mnt/efi/EFI/arch
effettuiamo il bind mount della cartella arch su /boot
$ mount --bind /mnt/efi/EFI/arch /mnt/boot
montiamo anche la partizione di Windows, di modo che quando genereremo il file fstab per la gestione delle partizioni verrà inclusa automaticamente;
$ mkdir /mnt/mnt/
$ mkdir /mnt/mnt/windows
$ mount /dev/sda4 /mnt/mnt/windows

• generiamo fstab e successivamente lo editiamo e modifichiamo la stringa del bind mount di arch su boot (c’è da togliere un “/mnt” di troppo dall’indirizzo della cartella arch). Se vogliamo, possiamo anche cambiare la prima opzione della riga di montaggio della partizione Windows da rw a ro per avere la partizione montata in sola lettura;
$ genfstab -U mnt >> /mnt/etc/fstab
$ nano /mnt/etc/fstab
la riga del mount efi deve iniziare con: /efi/EFI/arch /boot

• installiamo i pacchetti essenziali del sistema operativo, più alcuni altri pacchetti particolarmente utili: avendo processore Intel installerò il microcodice relativo, se avete processore AMD cambiate il pacchetto di conseguenza; installiamo anche DKMS (https://it.wikipedia.org/wiki/Dynamic_Kernel_Module_Support) e linux-headers per la gestione dinamica dei moduli del kernel: il portatile su cui sto installando ha una scheda video discreta nVidia che necessita di bbswitch e dei driver proprietari per il corretto funzionamento tramite optimus, bumblebee o altri metodi, per cui, sia per quanto riguarda bbswitch/acpi_call che per i driver nVidia propietari preferisco installare le versioni DKMS, dati gli assidui aggiornamenti del kernel linux di Arch, di modo da avere i moduli sempre compilati correttamente;
$ pacstrap /mnt base base-devel intel-ucode linux linux-headers linux-firmware dkms nano networkmanager git vi ntfs-3g

effettuiamo il chroot nella nuova partizione e seguiamo la guida ufficiale (https://wiki.archlinux.org/index.php/Installation_guide_(Italiano)) per il settaggio della time-zone, dei locale per lingua e tastiera italiane e le impostazioni della rete:
$ arch-chroot /mnt
$ ln -sf /usr/share/zoneinfo/Europe/Rome /etc/localtime
$ hwclock --systohc
Editiamo il file locale.gen
$ nano /etc/locale.gen
de-commentiamo la linea it_IT.UTF-8
Generiamo le locale
$ locale-gen
Editiamo /etc/locale.conf
$ nano /etc/locale.conf
aggiungiamo la linea LANG=”it_IT.UTF-8”
editiamo /etc/vconsole.conf per avere la tastiera italiana anche in modalità console:
$ nano /etc/vconsole.conf
aggiungiamo la linea KEYMAP=it
Aggiungiamo il nome del nostro computer (sostituendo nome_computer) che ci aiuterà ad identificare il nostro PC in rete:
$ nano /etc/hostname
aggiungere la linea nome_computer
editiamo /etc/hosts
$ nano /etc/hosts
aggiungiamo le seguenti linee:
127.0.0.1 localhost
::1 localhost
127.0.1.1 nome_computer.localhost nome_computer

Modifichiamo i server DNS per utilizzare DNS pubblici:
$ nano /etc/resolv.conf.head
aggiungiamo le seguenti quattro linee per i server pubblici OpenDNS:
nameserver 208.67.222.222
nameserver 208.67.220.220
nameserver 2620:119:35::35
nameserver 2620:119:53::53

aggiungiamo le seguenti quattro linee per i server pubblici Google:
nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 2001:4860:4860::8888
nameserver 2001:4860:4860::8844

• Propaghiamo nel sistema le modifiche appena effettuate:
$ mkinitcpio -P

• Impostiamo la password di root:
$ passwd

• Procediamo quindi all’installazione del boot loader Grub (https://it.wikipedia.org/wiki/GNU_GRUB) e di altri pacchetti necessari al suo corretto funzionamento con sistemi GPT; come accennato in precedenza, poniamo come destinazione dell’installazione di Grub la partizione efi montata in /efi perché l’installazione ricostruisce la struttura /efi/EFI/arch quindi troveremo Grub installato anche in /boot; installiamo anche os-prober che riconoscerà il boot loader di Windows durante la configurazione automatica:
installiamo i pacchetti necessari:
$ pacman -S grub dosfstools efibootmgr os-prober
installiamo Grub:
$ grub-install --target=x86_64-efi --efi-directory=/efi
lanciamo la configurazione automatica di Grub:
$ grub-config -o /boot/grub/grub.conf

• Usciamo dal chroot:
$ exit
smontiamo le partizioni:
$ umount -R /mnt
riavviamo la macchina:
$ reboot

• Una volta riavviato il pc nel sistema appena installato possiamo procedere alla creazione dell’utente (sostituendo nome_utente):
$ adduser -m -g users -G wheel -s /bin/bash nome_utente
$ passwd nome_utente

• installiamo sudo, di modo da poter svolgere compiti amministrativi con l’utente appena creato:
$ pacman -S sudo
editiamo la configurazione di sudo, si può fare solo con vi (per questo motivo lo abbiamo installato precedentemente):
$ visudo
De-commentiamo la lineache inizia con %wheel
usciamo da vi digitando :wq

• aggiorniamo anche la lista dei mirrors di pacman di modo da ricevere gli aggiornamenti del sistema dal server con il miglior ping; si potrà successivamente automatizzare l’aggiornamento della mirrorlist con un hook di pacman in base all’aggiornamento del pacchetto pacman-mirrorlist seguendo la guida ufficiale di reflector (https://wiki.archlinux.org/index.php/reflector) per arch;
$ pacman -S pacman-contrib reflector rsync
$ cd /etc/pacman.d/
facciamo una copia della mirrorlist
$ cp mirrorlist mirrorlist.backup
decommentiamo gli indirizzi dei server mirror dalla copia della mirrorlist
$ sed '/^#\S/ s|#||' -i mirrorlist.backup
lanciamo rankmirrors che restituirà una mirrorlist con i 10 server più veloci; ci vorrà qualche minuto:
$ rankmirrors -n 10 mirrorlist.backup > mirrorlist
cancelliamo la cache di pacman
$ pacman -Scc
aggiorniamo pacman
$ pacman -Syu

• aggiungiamo i fonts installati su Windows di modo che siano disponibili anche in Linux:
$ mkdir /usr/share/fonts/windows
$ ln -s /mnt/windows/Windows/Fonts/*.ttf /usr/share/fonts/windows/

• installiamo il server di stampa: se nella vostra rete la stampante è condivisa da un server Linux è necessaria solo l’installazione della libreria libcups;
$ pacman -S cups system-config-printer

• se siete arrivati a questo punto dell'installazione in modalità console dovreste avere la consapevolezza necessaria alla scelta e all'installazione dei driver grafici per la vostra scheda video, siano essi propietari o open source come Nouveau o Wayland.

• riavviando il computer potremo autenticarci con il nuovo utente e procedere all’istallazione dell’ambiente grafico e del desktop manager preferiti, come degli altri programmi che possono interessarci.
Posso consigliare a chi intende utilizzare Arch con i driver proprietari nVidia di evitare SDDM e Plasma per noti bug di incompatibilità; Gnome richiede ed installa automaticamente GDM, LightDM è quello che occupa meno memoria ma a livello di configurazione (tramite scripts) SDDM è di più semplice gestione.

Happy Tuxing

https://ibb.co/jfB7jdC

Nicodemo Timoteo Taddeo
07-01-2020, 11:41
Mi permetto d correggere questa inesattezza:



1. Prepariamo una chiavetta USB con l'immagine di installazione di Windows 8.1 Pro N build 9600, scaricabile dal sito Microsoft. Utilizziamo la formattazione GPT (DD). La chiavetta dovrà utilizzare una porta USB2 dato che Windows non carica automaticamente il driver USB3 durante l'installazione.


Solo fino a Windows 7 non vengono adoperate le porte USB3. Da Windows 8 in poi i driver USB3 sono presenti e l'installazione avviene regolarmente anche da porte USB3.


Per il resto complimenti, anche per la ...pazienza :)

5c1n1
07-01-2020, 13:12
Ciao,
purtroppo per alcuni hardware l'installazione di Windows 8.1 da USB3 non è possibile.
Nel mio caso specifico, anche post-installazione, il funzionamento della porta USB3 è vincolato dall'installazione di un doppio driver, il primo che fa riconoscere al sistema l'HUB USB e solo dopo il riavvio del PC è possibile installare un driver specifico per la porta USB3.
Comunque, visto che come giustamente dici l'installer di Windows 8 un driver USB3 lo lancia, modifico l'enunciato.

sacarde
08-01-2020, 07:14
archlinux in modalita' grafica?

5c1n1
08-01-2020, 09:47
archlinux in modalita' grafica?
Ci sono alcuni progetti non ufficiali che forniscono un'interfaccia grafica per l'installazione di Arch, tipo Zen Installer (https://sourceforge.net/projects/revenge-installer/); il riferimento all'installazione in modalità grafica era più che altro rivolto a chi stesse installando una distro differente di Linux.

Knive`s
08-01-2020, 18:18
Salve,
Anch' io senza pretese vorrei dire la mia su un paio di punti.
La prima è che una partizione efi di 100MB è strettina per un dual boot win+linux qualora si avesse la necessità/voglia di provare altri kernel con Arch (lts, zen eccecc). Personalmente come base di partenza consiglio sempre 512MB. Vero che win la crea in automatico, ma è anche vero che è possibile partizionare il disco creando la esp ad-hoc.

In un sistema efi Arch non ha bisogno di tutta la trafila (mkdir /mnt/efi, mkdir /mnt/boot e mkdir /mnt/efi/EFI/arch).
Basti creare /mnt/boot, montare la esp di win, aggiungere l' opzione --bootloader-id=ID-A-PIACERE nel comando grub e fine, tantomeno il --bind /mnt/efi/EFI/arch in /mnt/boot. A tutto il resto ci pensa grub e efibootmgr.

Sicuramente opinabile, però secondo me sono passaggi che si possono risparmiare perché con un comando faccio la medesima cosa con qualche directory in meno.

Bye^^

5c1n1
09-01-2020, 06:03
Salve,
Personalmente come base di partenza consiglio sempre 512MB. Vero che win la crea in automatico, ma è anche vero che è possibile partizionare il disco creando la esp ad-hoc.
Diciamo che se il PC lo devi usare per lavorare e non per farci esperimenti, la partizione da 100 Mb creata automaticamente è più che sufficiente al perfetto funzionamento della macchina.

In un sistema efi Arch non ha bisogno di tutta la trafila (mkdir /mnt/efi, mkdir /mnt/boot e mkdir /mnt/efi/EFI/arch).
Basti creare /mnt/boot, montare la esp di win, aggiungere l' opzione --bootloader-id=ID-A-PIACERE nel comando grub e fine, tantomeno il --bind /mnt/efi/EFI/arch in /mnt/boot. A tutto il resto ci pensa grub e efibootmgr.

L'espediente del bind mount è utilizzato esclusivamente al fine di tenere organizzata la cartella arch creata e fare in modo che TUTTI i file inerenti al boot di Arch vadano nella stessa cartella; arch è oltretutto il parametro default che Grub assegna quando si omette l'opzione --bootloader-id=... per cui con il bind mount si ha solo in più la cartella /efi in radice...