Metodi per provare nuove versioni del sistema operativo senza impegnarsi?


20

Voglio provare nuove versioni del sistema operativo al loro arrivo, come Ubuntu 17.04 o Ubuntu 17.10 per vedere nuove funzionalità. Mi piace anche guardare Kubuntu, CentOS o altre distro (Windows 11 quando arriva?) - o impostare ambienti di test sapendo che posso distruggerli e non voglio farlo sul mio computer principale.

Quale insieme di alternative ci sono per farlo senza rischiare la mia macchina di sviluppo principale? Non sto cercando un dibattito sul modo MIGLIORE, ma quali alternative sono disponibili.


2
Lo faccio principalmente con macchine virtuali. Vedi questa domanda per una guida all'installazione incredibilmente semplice e veloce usando VirtualBox a cui potresti voler collegare nella tua risposta.
Takkat,

1
Personalmente, lo uso dockerperché il contenitore è definito con uno script di facile comprensione. Hai il controllo completo sull'immagine di base e su ciò che installi. Facile condivisione di file e dispositivi host, creazione di reti virtuali di contenitori, esposizione selettiva delle porte con argomenti della riga di comando, è possibile inviare comandi direttamente alla shell del contenitore ed eseguire applicazioni nel contesto del contenitore. Ad esempio puoi provare centos userspace con un one-liner docker run -it centos /bin/bash
crasic

8
"Live CD" era una cosa importante. Oggi sarebbe un'unità USB live.
user253751

1
Dato il modello di aggiornamento di Windows 10, è improbabile che ci sia mai un "Windows 11". Anche se c'è una grande ricostruzione del sistema operativo, molto probabilmente Microsoft lo chiamerà qualcos'altro.
Smetti di fare del male a Monica il

3
In pratica hai tre opzioni: una macchina virtuale (VirtualBox o Docker), un'unità flash avviabile (alternativa moderna a un CD live) o doppio avvio. La scelta tra i tre dipende dalle esigenze, dall'hardware e dall'esperienza.
Sean the Bean,

Risposte:


26

Alternative USB

Le alternative USB sono buone, quando

  • vuoi testare le prestazioni (su bare metal)
  • il computer non è abbastanza potente per far funzionare bene un sistema in una macchina virtuale

È possibile utilizzare un pendrive USB con almeno 2 GB di spazio su disco e creare un

  • sistema live Ubuntu nel pendrive.

    Avvia da USB pendrive e seleziona 'Prova Ubuntu' nel menu di avvio (e qualcosa di simile con altre distribuzioni di Linux). Se si salvano dati, si installano programmi o si modifica il sistema in un'unità live (solo live), non sopravviverà allo spegnimento o al riavvio.


Se lo desidera

  • prova Ubuntu in un modo più avanzato o
  • salvare i dati, installare programmi o modificare il sistema e
  • hai / ricevi una chiavetta USB veloce di almeno 4 GB,

puoi creare un

  • sistema Ubuntu live persistente

o se hai / ottieni una chiavetta USB veloce di almeno 16 GB , puoi crearne una

  • sistema Ubuntu installato (come installato in un'unità interna, ma in una chiavetta USB).

    Un sistema installato in un'unità USB è stabile e flessibile, può essere aggiornato e ottimizzato senza limiti. In questo modo è meglio di un sistema live persistente. È portatile tra computer, se è possibile evitare i driver proprietari, ma un sistema live persistente è più portatile.

link



2
Poiché il poster ha un'installazione Ubuntu (?) In esecuzione, è possibile anche l'avvio dell'ISO direttamente dal disco rigido. Imposta i collegamenti alla (nuova) ISO, usa il collegamento in grub (aggiungi al tuo /etc/grub.d/40_custom) e disponi di una partizione FAT con directory per i file casper-rw (PERSISTENCE_PATH per identificare quale usare ). Aggiungi "toram" e le prestazioni di avvio ISO sono equivalenti (o anche più veloci) di una normale installazione del disco rigido.
ubfan1

2
Sì, l'alternativa di @ ubfan1 è buona, l'ho usata più volte. Forse è leggermente più complicato da configurare che creare un pendrive USB, ma una volta che lo hai, può funzionare bene :-) Vedi questo link, help.ubuntu.com/community/Grub2/…
sudodus

2
L'installazione su un dispositivo di archiviazione separato è il modo migliore quando si desidera verificare il comportamento effettivo della nuova versione del sistema operativo con l'hardware.
pa4080,

Questa è assolutamente la risposta giusta. Cercare di testare un sistema operativo attraverso livelli di virtualizzazione (o Docker, Dio non voglia) sul tuo sistema operativo attuale è come prendere una nuova auto per un "test drive" rimorchiandola su un rimorchio dietro la tua auto attuale: certo, un po 'puoi vedere come appare , ma non ti darà idea della performance.
AC

Con USB3, probabilmente funzionerà bene. Se hai una macchina più vecchia con USB2, probabilmente ci vorrà molto più tempo per caricarla.
Sean the Bean,

15

Un modo per testare nuove distribuzioni e versioni del sistema operativo è con la virtualizzazione. Non richiede spazio per un PC / tastiera / video / mouse o adattatori aggiuntivi per eseguire più PC con una sola tastiera, video, mouse. Richiede solo un singolo PC e alcuni software di virtualizzazione.

Questo presuppone che tu abbia una macchina con una CPU multi-core in grado di virtualizzare e una ragionevole quantità di memoria. Consiglierei almeno 8 GB di memoria con 16 GB meglio se ce l'hai.

Se stai eseguendo Ubuntu e vuoi provare solo le distribuzioni Linux (non credo che Windows funzionerà), puoi utilizzare il software di virtualizzazione gratuito incluso in Ubuntu: KVM o Xen. Entrambi funzionano bene, sono GRATUITI e possono eseguire diverse distribuzioni Linux. Tuttavia, gli strumenti per gestire le macchine virtuali sono in qualche modo carenti. Oracle ha una versione GRATUITA di uno strumento di virtualizzazione chiamato VirtualBox e ovviamente c'è sempre il prodotto commerciale VMWare. Sia VirtualBox che VMWare possono anche eseguire Ubuntu su un computer Windows se questo è il desktop preferito.

Utilizzando un gestore VM, sarai in grado di aggiungere nuove distro man mano che escono, testarle, giocare con le nuove funzionalità e quindi scartarle quando viene visualizzata la nuova versione. Consumano spazio su disco solo quando non sono in esecuzione, quindi non hanno nemmeno bisogno di essere scartati a meno che non si restringano. Con un gestore VM, è facile bilanciare 5, 10 o più distro su una macchina ed essere in grado di avviarle e rimuoverle quando necessario. Se sei abbastanza fortunato da avere una macchina da 32 GB o 64 GB, puoi persino eseguirli tutti in parallelo.


2
Windows può essere eseguito all'interno di una macchina virtuale; tuttavia, le versioni più recenti sono così pesanti che sarebbe necessario un multicore piuttosto veloce perché sia ​​utilizzabile.
Ravery

Un ambiente virtuale dipende anche dal supporto per quel sistema operativo. Le nuove versioni di Windows necessiteranno di modifiche al software della macchina virtuale per supportarlo, il che potrebbe essere un leggero contrattempo. Anche se mi aspetto che si preparino per le nuove uscite ;-)
Rinzwind

sì - per i test abbiamo sicuramente bisogno di aggiornare la soluzione di virtualizzazione alla versione più recente per poter avviare le versioni recenti del sistema operativo.
Takkat,

2
KVM esegue Windows 10 e 7 bene. Se per Xen ti riferisci a Citrics Xen Server, che esegue anche Windows 10 e 7.
Robby1212

1
@EricDuminil Erano utilizzabili quanto Windows in genere. :)
Michael Hampton,

12

Come alternativa ancora più rapida ed economica alla risposta di sudodus è possibile eseguire l'avvio direttamente da un file di immagine dell'unità avviabile anziché da un'unità (USB) dedicata.

Almeno per le immagini ISO di Ubuntu (e derivati ​​come Linux Mint) la seguente ricetta funziona. Altre distribuzioni potrebbero richiedere ulteriori modifiche.

  1. Memorizza l'immagine o le unità di avvio in formato ISO 1 da qualche parte come file sulle unità di archiviazione interne 2 .

  2. Aggiungi un file "parti" di Grub, ad esempio 35_isofiles, con il contenuto

    #!/bin/bash
    set -e
    . /usr/share/grub/grub-mkconfig_lib
    shopt -s nullglob
    
    make_iso_menuentry()
    {
        local isodevice="$(exec "$grub_probe" -t device -- "$1")" || return $?
        local isogrub="$(make_system_path_relative_to_its_root "$1")"
        local label="${2:-"$1"}"
    
        printf 'menuentry %s {\n' "'${label//\'/\'\\\'\'}'"
        printf '\tset isofile=%s\n' "'${isogrub//\'/\'\\\'\'}'"
        prepare_grub_to_access_device "$isodevice" | sed -e 's/^/\t/'
        printf '\t%s\n' \
            'insmod loopback' 'insmod iso9660' 'loopback loop "$isofile"' \
            'linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename="$isofile" ro noprompt noeject noplymouth' \
            'initrd (loop)/casper/initrd.lz'
        printf '}\n\n'
    
        printf 'Found "%s" image: %s\n' "$label" "$1" >&2
    }
    
    
    for iso in /path/to/image.iso # <-- set path to your ISO image here
    do
        make_iso_menuentry "$iso" "${iso##*/}" || true
    done

    per /etc/grub.de renderlo eseguibile.

    Modifica il percorso del file nella riga indicata in base alle tue esigenze. Se lo desideri, puoi aggiungere più percorsi e / o modelli Bash glob.

  3. Rendi eseguibile il file:

    sudo chmod a+x /etc/grub.d/35_isofiles
    
  4. Assicurati che il menu Grub sia abilitato .

  5. Aggiorna la configurazione di Grub:

    sudo update-grub
    
  6. Riavvia e seleziona la voce di menu Grub appena aggiunta per l'avvio dal rispettivo file di immagine.


1 Sono possibili altri tipi di file system ma potrebbero richiedere altri comandi Grub e la modifica dei parametri di avvio.

2 LVM, RAID e file system crittografati dovrebbero funzionare grazie alla libreria di utilità di Grub ma non li ho testati.


2
Wow ! che sceneggiatura! Ho fatto la stessa cosa manualmente semplicemente aggiungendo una voce in /etc/grub.d/40_custom e trovando i buoni parametri; Non è così difficile dato l'aiuto che ho avuto con wiki.archlinux.org/index.php/…
solsTiCe

9

La virtualizzazione è di gran lunga la più semplice.

Tuttavia, qui hai 2 casi d'uso separati, che avranno soluzioni diverse

1. Prova le nuove distro

Le distribuzioni sono fondamentalmente determinate dalle applicazioni in pacchetto e dall'ambiente userspace (ad es. SystemDVs initper l'avvio)

Se si desidera "valutare" l'UIX di una distribuzione diversa, qualitativamente, allora consiglierei la virtualizzazione completa in cui si installa il sistema operativo nella sua interezza e si valuta la sua usabilità. Questo è adeguatamente trattato in altre risposte.

Se hai semplicemente bisogno dell'ambiente userpace per il test, continua a leggere.

2. Test e "istanze da buttare via" in ambienti diversi

È più facile, economico e veloce utilizzare la containerizzazione, una forma di virtualizzazione leggera che utilizza il kernel per creare ambienti sandbox.

Un contenitore condivide le risorse del kernel con l'host, ma per il resto ha il proprio file system radice, spazio utente, stack di rete, ecc. Può essere considerato, concettualmente come uno chrootsteroide. Tuttavia, poiché il kernel è condiviso, la virtualizzazione è "sottile", il che significa che per la maggior parte degli scopi pratici funziona alla stessa velocità del sistema operativo host.

Esiste un sistema contenitore comunemente usato chiamato docker. Docker ha immagini standardizzate praticamente per ogni distribuzione di Linux che desideri e funziona su Windows (tuttavia, le immagini di Windows funzionano solo su Windows, le immagini di Linux funzionano su entrambi). Ha funzionalità utili aggiuntive per risparmiare spazio e prestazioni.

Ci sono anche alternative native open source per Linux come LXC(che è integrato nel kernel!), Che possono essere usate più o meno allo stesso modo (ma con più configurazione richiesta).

Esempio semplificato di un ambiente di test o build in docker

# Dockerfile

FROM ubuntu:17.10

RUN apt-get update && apt-get install -y build-essential

WORKDIR /workdir
  • docker build --tag my-builder .

Quindi dalla riga di comando, compila il tuo progetto o i test in quell'ambiente in vari modi

"accedi" e compila all'interno dell'ambiente, esegui test ecc. Supponendo di essere nella directory di origine del tuo progetto

$ docker run -v "$PWD:/workdir" --rm -it my-builder /bin/bash
# echo "Now in docker container"
# make
...
# build/test/my-test
...
# exit
$ echo "Build artifacts are now on your host OS Directory :) "

Utilizzare come una tantum

$ docker run -v "$PWD:/workdir" --rm my-builder make

Puoi persino passare variabili d'ambiente

$ docker run -e "CROSS_COMPILE=arm-linux-gnueabi" -v "$PWD:/workdir" --rm my-builder make

Oppure avvia un'istanza persistente e copia i file in essa in modo esplicito

$ Start our instance in background 
$ docker run --name my-builder-inst -d my-builder
$ echo "Copy files to instance" 
$ docker cp /my/source/dir my-builder-inst:/workdir
$ echo "run project build"
$ docker exec my-builder-inst make
$ echo "copy build artifacts"
$ docker cp my-builder-inst:/workdir/build /my/output/dir
$ echo "destroy and delete container" 
$ docker rm -f  my-builder-inst

Esistono letteralmente centinaia di altri schemi di utilizzo, tuttavia, la definizione di immagine simile a uno script, immagini estendibili e l'uso della riga di comando lo rendono estremamente attraente per ambienti di sviluppo, test e persino di distribuzione


1
Se desideri contenitori di sistema, dovresti probabilmente guardare LXD (molto più semplice degli strumenti tradizionali dello spazio utente LXC) piuttosto che Docker (che è progettato più per i contenitori di applicazioni). Detto questo, entrambi si basano sul supporto del kernel LXC / cgroups. Vedi anche, unix.stackexchange.com/questions/254956/…
Bob

3

Tengo una partizione separata sul mio disco (consiglio almeno 20 GB, più se puoi).

Posso installare su quella partizione qualsiasi sistema operativo che voglio testare e quindi riavviare al suo interno.

Se tutto funziona bene, posso deprecare la mia partizione originale del sistema operativo e alla fine riutilizzarla.

Ma se il nuovo sistema operativo non funziona per me (problemi di driver, software non disponibile), posso semplicemente riavviare il mio vecchio sistema operativo ed essere grato di averlo ancora!

Gli appunti:

  • In questo modo puoi davvero testare il nuovo sistema operativo sul tuo hardware, in modo da poter rilevare i problemi del driver.

  • Ma se vuoi solo provare come si sente il nuovo sistema operativo, una delle altre soluzioni di virtualizzazione è probabilmente più veloce, più facile e più sicura per te.

  • Tengo il mio /homesu una grande partizione separata, quindi è indipendente dai due sistemi operativi. (Non riformattare accidentalmente quella partizione!)

  • Ma ti consiglio di non usare una /homepartizione condivisa durante il test. Se i due sistemi operativi hanno versioni software significativamente diverse, un'applicazione potrebbe modificare i propri file di configurazione in modo non idoneo per l'altro sistema operativo. Quindi mantieni file di configurazione separati per ciascun sistema operativo, fino a quando non ti impegni con uno di essi. (*) vedi sotto

  • Non è necessario creare una seconda partizione di swap. È possibile utilizzare la stessa partizione di swap per entrambi i sistemi operativi.

  • Ovviamente devi fare attenzione su quali partizioni formattare / installare. Quindi esegui un backup e annota gli ID e le dimensioni della partizione (parted, p, q), prima di installare un nuovo sistema operativo.

  • Per eseguire il dual boot tra i due sistemi operativi, è necessario grub per rilevarli entrambi. Nella mia esperienza, grub lo ha sempre fatto automaticamente. (Ma lilo era una storia diversa!)

  • Spesso è possibile eseguire software da un sistema operativo mentre ci si trova sull'altro sistema operativo. Ci sono riuscito usando sudo chroot /mnt/original_os, anche se è stato un violino da configurare : ho dovuto legare-mount /deve /proc.

Il mio record era di 4 SO Linux su una macchina e un Windows XP. Ero solito avviare Gentoo per velocità e divertimento, ma eseguivo il mio webserver e mailserver in un chroot sul sistema operativo Debian di fiducia.

(*) È possibile configurare una cartella principale diversa per ciascun sistema operativo, modificando /etc/passwd. Imposta la tua casa in modo da scegliere come /home/you/arch-testtarget la partizione principale condivisa /etc/fstabe riavviare. È possibile collegare in modo simbolico alcuni dotfile da condividere su entrambi i sistemi operativi, lasciando altri specifici del sistema operativo.


1
Devono

Sì, esiste un rischio maggiore associato a questo metodo. Se sei davvero una persona attenta, potresti provare prima la virtualizzazione e poi l' installazione di una partizione e abbandonare l'installazione originale solo se funziona.
joeytwiddle,

Non lo farei mai più. Una volta mi sono imbattuto in un bug apparentemente oscuro che ha spazzato via ogni partizione crittografata, anche quelle che non facevano parte dell'installazione richiesta. AFAIK questo errore non è stato corretto.
Michael Hampton,

3

Fondamentalmente hai tre opzioni: virtualizzazione (VirtualBox o Docker), un'unità flash avviabile (alternativa moderna a un CD live) o doppio avvio da una partizione. La scelta tra i tre dipende dalle esigenze, dall'hardware e dall'esperienza. Alcune delle altre risposte entrano in molti più dettagli su un particolare approccio, ma ecco un confronto di alto livello per darti un quadro per decidere tra di loro.

1. Virtualizzazione

Pro :

  • abbastanza facile da configurare
  • non influirà sul tuo ambiente di sviluppo principale
  • puoi configurarne facilmente quante ne vuoi, purché tu abbia lo spazio sul disco rigido - persino creare istantanee prima di apportare modifiche importanti ed eliminarle al termine

Contro :

  • richiede hardware decente per eseguire due o più sistemi operativi contemporaneamente
  • le prestazioni sono limitate dalle risorse allocate alla VM, quindi non avrai un'idea precisa di come la versione del sistema operativo che stai testando sia paragonabile al tuo sistema operativo principale
  • poiché l'hardware è completamente virtualizzato, non si avrà nemmeno un preciso senso di disponibilità / compatibilità dei driver

2. Unità flash avviabile

Pro :

  • moderatamente facile da configurare
  • non influirà sul tuo ambiente di sviluppo principale
  • le prestazioni sono generalmente buone con un'unità flash USB3, anche se ci sono sicuramente alcune variazioni a seconda della qualità dell'unità flash (USB2 sarà più lento - lo eviterei per questo scopo)
  • utilizza l'hardware effettivo (diverso dal dispositivo di archiviazione), in modo da poter vedere quanto funziona bene con i driver e quant'altro
  • puoi configurarne facilmente quante ne vuoi, purché tu abbia abbastanza unità flash (e puoi facilmente riformattarle se vuoi provare qualcos'altro)

Contro :

  • richiede di avere una (o più) unità flash dedicate a questo scopo
  • le prestazioni dipendono dalla qualità dell'unità flash utilizzata

3. Doppio avvio da una partizione

Pro :

  • ti dà la migliore idea di prestazioni, compatibilità dei driver, ecc., poiché funziona esattamente sullo stesso hardware del tuo sistema operativo principale
  • puoi configurarne più contemporaneamente, purché tu abbia lo spazio sul disco rigido (devi solo impostare una partizione separata per ognuno)

Contro :

  • richiede un know-how di basso livello per essere configurato correttamente
  • scherzare con le partizioni del disco rigido e i bootloader ha sempre il potenziale per eseguire l'installazione corrente (assicurarsi di avere a portata di mano un'unità flash di avvio o un CD live prima di iniziare)

Se dividi l'alternativa Docker come separata dalla virtualizzazione nel tuo post, sarei disposto a contrassegnarlo come la risposta che copre tutte le alternative. Secondo me, i container non sono una vera virtualizzazione a causa della mancata esecuzione di initsistemi completi e kernel completi. I container (docker, LXC, ecc.) Sono più leggeri in termini di risorse rispetto alla virtualizzazione completa (ecc.) ...
Ted Cahall

2

QEMU

QEMU è una soluzione di virtualizzazione che risolve teoricamente i requisiti di questa domanda in modo economico e semplice.

Permette di trascinare e rilasciare i file ISO del sistema operativo all'interno di un host Linux o Windows.

Consente inoltre l'avvio di dischi rigidi USB Live, all'interno di un sistema host e utilizza la persistenza, se disponibile.

Non è necessario creare un disco rigido virtuale come con VBox.

QEMU è disponibile come app da riga di comando per Linux, Windows e altri sistemi operativi. È anche disponibile come GUI ed è incluso nelle versioni MultiBootUSB Linux e Windows http://multibootusb.org/ .

QEMU

QEMU può anche essere eseguito da Virtual Machine Manager, che è più veloce di MBUSB ma non è trascinabile.

sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils
sudo apt-get install virt-manager

Per test del sistema operativo a lungo termine, un sistema installato VirtualBox è superiore.


Grazie! Non avevo sentito parlare di questa opzione. Ci darò un'occhiata.
Ted Cahall,

2

Il modo più semplice e facile è usare la virtualizzazione. Puoi scaricare VirtualBox (è open source) e installare qualsiasi sistema operativo. Inoltre, ti consiglio di creare un'istantanea prima di eseguirla per la prima volta, in questo modo puoi tornare allo stato precedente se commetti un errore durante l'impostazione, la modifica della configurazione, ecc.

Ho usato e testato diversi SO in questo modo. È molto semplice e veloce. Anche, ho usato MSDOS e Windows 3.1 usando la virtualizzazione. Puoi installare qualsiasi cosa, anche ChromeOS (con un po 'di lavoro) o qualsiasi versione di Windows o Linux, non importa il suo sapore desktop.


1

Ho avviato con successo installazioni complete di Ubuntu da unità USB negli ultimi 3 anni. USB 2.0 era un po 'più lento di un vecchio HD SATA 3G (7200 rpm 16 MB di cache), ma USB 3.0 si trova entro un paio di secondi da un SSD su un'interfaccia SATA 3G.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.