Métodos para experimentar novas versões do sistema operacional sem se comprometer com isso?

20

Quero experimentar novas versões do sistema operacional assim que chegarem, como o Ubuntu 17.04 ou Ubuntu 17.10 para ver novos recursos. Também gosto de ver o Kubuntu, o CentOS ou outras distribuições (Windows 11 quando chegar?) - ou configurar ambientes de teste sabendo que posso destruí-los e não quero fazer isso na minha máquina principal.

Que conjunto de alternativas existem para fazer isso sem arriscar minha principal máquina de desenvolvimento? Não estou à procura de um debate sobre a melhor maneira, mas quais alternativas estão disponíveis.

Ted Cahall
fonte
2
Faço isso principalmente com máquinas virtuais. Consulte esta pergunta para obter um guia para a configuração incrivelmente rápida e fácil usando o VirtualBox ao qual você pode vincular sua resposta.
Takkat 7/0318
11
Pessoalmente, eu uso dockerporque seu contêiner é definido com um script fácil de entender. Você tem controle total sobre a imagem base e o que instala. Fácil de compartilhar arquivos e dispositivos host, criar redes virtuais de contêineres, expor seletivamente portas com argumentos de linha de comando, você pode enviar comandos diretamente para o shell do contêiner e executar aplicativos dentro do contexto do contêiner. Por exemplo, você pode tentar centos userspace com um one-liner docker run -it centos /bin/bash
crasic
8
"Live CDs" costumava ser uma grande coisa. Hoje em dia seria uma unidade USB ao vivo.
precisa saber é o seguinte
11
Dado o modelo de atualização do Windows 10, é improvável que exista um "Windows 11". Mesmo se houver uma grande reconstrução do sistema operacional, a Microsoft provavelmente chamará isso de outra coisa.
parar de prejudicar Monica
3
Você basicamente tem três opções: uma máquina virtual (VirtualBox ou Docker), uma unidade flash inicializável (alternativa moderna a um CD ao vivo) ou inicialização dupla. A escolha entre os três depende de suas necessidades, hardware e experiência.
Sean the Bean

Respostas:

26

Alternativas USB

As alternativas USB são boas quando

  • você quer testar o desempenho (em metal puro)
  • o computador não é poderoso o suficiente para executar bem um sistema em uma máquina virtual

Você pode usar um pendrive USB com pelo menos 2 GB de espaço em disco e criar um

  • sistema Ubuntu ao vivo no pendrive.

    Inicialize a partir do pendrive USB e selecione 'Try Ubuntu' no menu de inicialização (e algo semelhante com outras distribuições Linux). Se você salvar dados, instalar programas ou ajustar o sistema em uma unidade ao vivo (somente ao vivo), ele não sobreviverá ao desligamento ou reinicialização.


Se você quiser

  • tente o Ubuntu de uma maneira mais avançada ou
  • salvar dados, instalar programas ou ajustar o sistema e
  • você tem / recebe um pendrive USB rápido de pelo menos 4 GB,

você pode criar um

  • sistema Ubuntu ao vivo persistente

ou se você tiver / obter um pendrive USB rápido de pelo menos 16 GB , poderá criar um

  • sistema Ubuntu instalado (como instalado em uma unidade interna, mas em um pendrive USB).

    Um sistema instalado em uma unidade USB é estável e flexível, pode ser atualizado e ajustado sem limites. Dessa maneira, é melhor que um sistema ativo persistente. É portátil entre computadores, se você pode evitar drivers proprietários, mas um sistema ativo persistente é mais portátil.

Ligações


sudodus
fonte
2
Como o pôster possui uma instalação do Ubuntu (?) Em execução, a inicialização do ISO diretamente do disco rígido também é uma possibilidade. Configure links para o (novo) ISO, use o link no grub (adicione ao seu /etc/grub.d/40_custom) e tenha uma partição FAT com diretórios para os arquivos casper-rw (PERSISTENCE_PATH para identificar qual usar) ) Adicione "toram" e o desempenho da inicialização ISO é equivalente (ou até mais rápido) do que uma instalação normal do disco rígido.
precisa saber é o seguinte
2
Sim, a alternativa de @ ubfan1 é boa, eu a usei várias vezes. Talvez seja um pouco mais complicado de configurar do que criar um pendrive USB, mas depois que você o tiver, ele poderá funcionar bem :-) Consulte este link, help.ubuntu.com/community/Grub2/…
sudodus
2
A instalação em um dispositivo de armazenamento separado é a melhor maneira de testar como a nova versão do sistema operacional se comporta com o seu hardware.
pa4080
Esta é absolutamente a resposta certa. Tentar testar um sistema operacional através de camadas de virtualização (ou seja, Docker, Deus não permita) no seu sistema operacional atual é como pegar um carro novo para um "test drive", rebocando-o em um trailer atrás do seu carro atual: claro, você meio que vê como é a aparência , mas simplesmente não dará nenhuma idéia do desempenho.
AC
Com o USB3, isso provavelmente funcionará bem. Se você possui uma máquina antiga com USB2, provavelmente levará muito mais tempo para carregar.
Sean the Bean
15

Uma maneira de testar novas distribuições e versões de sistemas operacionais é com a virtualização. Não requer espaço para um PC / teclado / vídeo / mouse ou adaptadores adicionais para executar vários PCs com um único teclado, vídeo ou mouse. Requer apenas um único PC e algum software de virtualização.

Isso pressupõe que você tenha uma máquina com uma CPU multinúcleo capaz de virtualização e uma quantidade razoável de memória. Eu recomendaria pelo menos 8 GB de memória com 16 GB melhor se você a tiver.

Se você estiver executando o Ubuntu e quiser experimentar apenas as distribuições Linux (não acredito que o Windows funcione), use o software de virtualização gratuito fornecido no Ubuntu: KVM ou Xen. Ambos funcionam bem, são GRATUITOS e podem executar várias distribuições Linux. No entanto, as ferramentas para gerenciar as VMs estão um pouco ausentes. A Oracle possui uma versão GRATUITA de uma ferramenta de virtualização chamada VirtualBox e, é claro, sempre existe o produto comercial da VMWare. Tanto o VirtualBox quanto o VMWare também podem executar o Ubuntu em cima de uma máquina Windows, se esse for o seu desktop preferido.

Ao usar um gerenciador de VM, você poderá adicionar novas distribuições à medida que forem lançadas, testá-las, jogar com os novos recursos e descartá-las quando a nova versão aparecer. Eles só consomem espaço em disco quando não estão em execução; portanto, eles nem precisam ser descartados, a menos que isso fique apertado. Com um gerenciador de VM, é fácil equilibrar 5, 10 ou mais distribuições em uma máquina e poder inicializá-las e removê-las conforme necessário. Se você tiver a sorte de ter uma máquina de 32 GB ou 64 GB, poderá executá-los todos em paralelo.

Ted Cahall
fonte
2
O Windows pode ser executado dentro de uma VM; no entanto, as versões mais recentes são tão pesadas que você precisaria de um multicore bastante rápido para ser usado.
Ravery
Um ambiente virtual também depende do suporte para esse SO. As novas versões do Windows precisarão de alterações no software da máquina virtual para suportá-lo, o que pode ser um pequeno revés. Embora eu esperaria que eles se preparar para novos lançamentos ;-)
Rinzwind
sim - para o teste, definitivamente precisamos atualizar a solução de virtualização para a versão mais recente para poder inicializar versões recentes do sistema operacional.
Takkat 7/0318
2
O KVM executa o Windows 10 e 7 muito bem. Se pelo Xen você está se referindo ao Citrics Xen Server, ele também executa o Windows 10 e 7.
precisa saber é o seguinte
11
@EricDuminil Eles eram tão úteis quanto o Windows geralmente é. :)
Michael Hampton
12

Como uma alternativa ainda mais rápida e barata à resposta do sudodus, você pode inicializar diretamente de um arquivo de imagem de unidade inicializável, em vez de uma unidade dedicada (USB).

Pelo menos para imagens ISO do Ubuntu (e derivados como Linux Mint), a seguinte receita funciona. Outras distribuições podem precisar de ajustes adicionais.

  1. Armazene as imagens da unidade inicializável no formato ISO 1 em algum lugar como um arquivo na (s) unidade (s) de armazenamento interno 2 .

  2. Adicione um arquivo de "partes" do Grub, por exemplo 35_isofiles, com o conteúdo

    #!/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

    para /etc/grub.de torná-lo executável.

    Edite o caminho do arquivo na linha indicada para atender às suas necessidades. Você pode adicionar vários caminhos e / ou padrões Bash glob, se desejar.

  3. Torne o arquivo executável:

    sudo chmod a+x /etc/grub.d/35_isofiles
    
  4. Verifique se o menu Grub está ativado .

  5. Atualize a configuração do Grub:

    sudo update-grub
    
  6. Reinicialize e selecione a entrada do menu Grub recém-adicionada para inicializar a partir do respectivo arquivo de imagem.


1 Outros tipos de sistema de arquivos são possíveis, mas podem exigir outros comandos do Grub e ajustes de parâmetros de inicialização.

2 LVM, RAID e sistemas de arquivos criptografados devem funcionar graças à biblioteca de utilitários do Grub, mas eu não os testei.

David Foerster
fonte
2
Uau ! que roteiro! Fiz a mesma coisa manualmente, simplesmente adicionando uma entrada no /etc/grub.d/40_custom e encontrando os bons parâmetros; Não é tão difícil dada a ajuda que tive com wiki.archlinux.org/index.php/...
solstício de
9

A virtualização é de longe a mais simples.

No entanto, você tem 2 casos de uso separados aqui, que terão soluções diferentes

1. Experimente novas distribuições

As distribuições são basicamente determinadas pelos aplicativos empacotados e pelo ambiente do espaço do usuário (por exemplo, SystemDvs initpara inicialização)

Se você deseja "avaliar" o UIX de uma distribuição diferente, qualitativamente, eu recomendaria a virtualização completa em que você instala o sistema operacional na íntegra e avalia sua usabilidade. Isso é coberto adequadamente em outras respostas.

Se você simplesmente precisar do ambiente do espaço do usuário para teste, continue lendo.

2. Testes e "instâncias descartáveis" em diferentes ambientes

É mais fácil, mais barato e mais rápido usar a conteinerização, uma forma de virtualização leve que usa o kernel para criar ambientes em área restrita.

Um contêiner compartilha recursos do kernel com o Host, mas, de outra forma, possui seu próprio sistema de arquivos raiz, espaço do usuário, pilha de rede etc. Ele pode ser pensado, conceitualmente, como um chrootesteróide. No entanto, como o kernel é compartilhado, a virtualização é "reduzida", o que significa que, para fins mais práticos, ele é executado na mesma velocidade que o sistema operacional host.

Existe um sistema de contêiner comumente usado chamado docker. O Docker padronizou imagens para praticamente todas as distribuições de linux que você gostaria e é executado no Windows (no entanto, as imagens do Windows funcionam apenas no Windows, as imagens do Linux funcionam em ambos). Possui recursos úteis adicionais para economizar espaço e desempenho.

Existem também alternativas nativas de código aberto para Linux, como o LXC(que está embutido no kernel!), Que podem ser usadas da mesma forma (mas com mais configuração necessária).

Exemplo simplificado de um ambiente de teste ou construção em docker

# Dockerfile

FROM ubuntu:17.10

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

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

Em seguida, na linha de comando, compile seu projeto ou testes nesse ambiente de várias maneiras

"faça login" e compile no ambiente, execute testes etc. Supondo que você esteja no diretório de origem do seu projeto

$ 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 :) "

Use como único

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

Você pode até passar variáveis ​​de ambiente

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

Ou inicie uma instância persistente e copie os arquivos explicitamente

$ 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

Existem literalmente centenas de outros padrões de uso, no entanto, a definição de imagem semelhante a script, imagens extensíveis e uso de linha de comando o tornam extremamente atraente para ambientes de desenvolvimento, teste e até implantação

crasic
fonte
11
Se você deseja contêineres do sistema, provavelmente deve estar olhando para o LXD (muito mais simples que as ferramentas de espaço do usuário tradicionais do LXC) em vez do Docker (que foi projetado mais para contêineres de aplicativos). Dito isto, ambos são construídos sobre o suporte ao LXC / cgroups do kernel. Veja também, unix.stackexchange.com/questions/254956/…
Bob
3

Eu mantenho uma partição separada na minha unidade (recomendo no mínimo 20 GB, mais se puder).

Posso instalar nessa partição qualquer sistema operacional que eu queira testar e depois reiniciá-lo.

Se tudo estiver funcionando bem, posso descontinuar minha partição original do sistema operacional e, eventualmente, adaptá-la novamente.

Mas se o novo sistema operacional não estiver funcionando para mim (problemas de driver, software indisponível), então posso simplesmente reiniciar o sistema operacional antigo e agradecer que ainda o tenha!

Notas:

  • Dessa forma, você realmente pode testar o novo sistema operacional em seu hardware, para detectar problemas de driver.

  • Mas se você quiser apenas experimentar como o novo sistema operacional se sente, uma das outras soluções de virtualização provavelmente é mais rápida, fácil e segura para você.

  • Eu mantenho o meu /homeem uma grande partição separada, por isso é independente dos dois sistemas operacionais. (Não reformate acidentalmente essa partição!)

  • Mas eu recomendo que você não use uma /homepartição compartilhada durante o teste. Se os dois sistemas operacionais tiverem versões de software significativamente diferentes, um aplicativo poderá alterar seus arquivos de configuração de maneira inadequada para o outro sistema operacional. Portanto, mantenha os arquivos de configuração separados para cada sistema operacional, até se comprometer com um deles. (*) ver abaixo

  • Você não precisa criar uma segunda partição de troca. Você pode usar a mesma partição de troca para os dois sistemas operacionais.

  • Claro que você precisa ter cuidado em quais partições você formata / instala. Faça um backup e anote os IDs e tamanhos das partições (parted, p, q) antes de instalar um novo sistema operacional.

  • Para fazer a inicialização dupla entre os dois sistemas operacionais, você precisa do grub para detectar os dois. Na minha experiência, o grub sempre fez isso automaticamente. (Mas lilo costumava ser uma história diferente!)

  • Geralmente, é possível executar o software de um sistema operacional enquanto você estiver no outro sistema operacional. Eu consegui usar isso sudo chroot /mnt/original_os, embora fosse um violino para configurar : eu tinha que montar /deve montar /proc.

Meu registro foi de 4 sistemas operacionais Linux em uma máquina e um Windows XP. Eu costumava inicializar no Gentoo por velocidade e diversão, mas rodava meu servidor web e servidor de e-mail em um chroot no sistema operacional Debian confiável.

(*) Você pode configurar uma pasta inicial diferente para cada sistema operacional, editando /etc/passwd. Defina sua casa para /home/you/arch-testsegmentar a partição pessoal compartilhada /etc/fstabe reinicializar. Você pode vincular alguns arquivos de ponto a serem compartilhados entre os dois sistemas operacionais, deixando outros específicos para o sistema operacional.

joeytwiddle
fonte
11
Necessidade de realmente confiar em seus scripts de instalação .....
mckenzm
Sim, há mais riscos associados a este método. Se você é realmente uma pessoa cuidadosa, tente primeiro a virtualização e, em seguida, a instalação de uma partição, e somente abandonará a instalação original se isso funcionar.
joeytwiddle
Eu nunca faria isso de novo. Certa vez, deparei-me com um erro aparentemente obscuro que destruía todas as partições criptografadas, mesmo aquelas que não faziam parte da instalação solicitada. AFAIK este bug não foi corrigido.
Michael Hampton
3

Você basicamente tem três opções: virtualização (VirtualBox ou Docker), uma unidade flash inicializável (alternativa moderna a um live CD) ou inicialização dupla de uma partição. A escolha entre os três depende de suas necessidades, hardware e experiência. Algumas das outras respostas são muito mais detalhadas sobre uma abordagem específica, mas aqui está uma comparação de alto nível para fornecer uma estrutura para você decidir entre elas.

1. Virtualização

Prós :

  • muito fácil de configurar
  • não afetará seu ambiente de desenvolvimento principal
  • você pode configurar facilmente quantos quiser, contanto que tenha espaço no disco rígido - até mesmo criar instantâneos antes de fazer grandes alterações e excluí-los quando terminar.

Contras :

  • requer hardware decente para executar dois ou mais sistemas operacionais simultaneamente
  • o desempenho é limitado pelos recursos alocados à VM; portanto, você realmente não terá uma idéia precisa de como a versão do sistema operacional que você está testando se compara ao sistema operacional principal.
  • como todo o hardware é virtualizado, você também não terá uma noção precisa da disponibilidade / compatibilidade do driver

2. Unidade flash inicializável

Prós :

  • moderadamente fácil de configurar
  • não afetará seu ambiente de desenvolvimento principal
  • o desempenho geralmente é bom com uma unidade flash USB3, embora definitivamente haja alguma variação, dependendo da qualidade da unidade flash (o USB2 será mais lento - eu o evitaria para esse fim)
  • usa seu hardware real (que não seja o dispositivo de armazenamento), para que você possa ver como ele funciona com drivers e outros enfeites
  • você pode configurar facilmente quantas quiser, desde que tenha unidades flash suficientes (e pode reformatá-las facilmente se quiser tentar outra coisa)

Contras :

  • requer ter uma (ou mais) unidades flash dedicadas a esse propósito
  • o desempenho depende da qualidade da unidade flash usada

3. Inicialização dupla de uma partição

Prós :

  • fornece a melhor idéia de desempenho, compatibilidade de drivers, etc., uma vez que é executado exatamente no mesmo hardware que o sistema operacional principal
  • pode configurar vários de uma só vez, desde que você tenha espaço no disco rígido (basta configurar uma partição separada para cada uma)

Contras :

  • requer algum conhecimento de baixo nível para configurar corretamente
  • mexer com partições do disco rígido e gerenciadores de inicialização sempre tem algum potencial para iniciar sua configuração atual (verifique se você tem uma unidade flash inicializável ou um CD ao vivo antes de começar)
Sean, o Feijão
fonte
Se você dividir a alternativa do Docker como separada da virtualização em sua postagem, eu gostaria de marcá-la como a resposta que abrange todas as alternativas. IMHO, eu sinto que os contêineres não são uma virtualização verdadeira devido à não execução de initsistemas completos e kernels completos. Containers (estivador, LXC, etc.) são mais leves em recursos em comparação com a virtualização completa (etc) ...
Ted Cahall
2

QEMU

O QEMU é uma solução de virtualização que resolve teoricamente os requisitos desta pergunta de forma barata e simples.

Permite arrastar e soltar a inicialização de arquivos ISO do sistema operacional em um host Linux ou Windows.

Ele também permite a inicialização de discos rígidos Live USB, em um sistema host e usa a persistência, se disponível.

Não é necessário criar um disco rígido virtual como no VBox.

O QEMU está disponível como um aplicativo de linha de comando para Linux, Windows e outros sistemas operacionais. Também está disponível como uma GUI e está incluído nas versões Linux e Windows do MultiBootUSB http://multibootusb.org/ .

QEMU

O QEMU também pode ser executado no Virtual Machine Manager, mais rápido que o MBUSB, mas não é arrastar e soltar.

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

Para testes de SO a longo prazo, um sistema instalado do VirtualBox é superior.

CSCameron
fonte
Obrigado! Eu não tinha ouvido falar dessa opção. Vou dar uma olhada nisso.
Ted Cahall
2

A maneira mais simples e fácil é usar a virtualização. Você pode baixar o VirtualBox (de código aberto) e instalar qualquer sistema operacional. E eu recomendo que você crie um instantâneo antes de executar pela primeira vez, dessa forma, você poderá retornar ao estado anterior se cometer algum erro ao configurá-lo, alterar a configuração etc.

Eu uso e testei vários sistemas operacionais dessa maneira. É muito simples e rápido. Mesmo, eu usei o MSDOS e o Windows 3.1 usando a virtualização. Você pode instalar qualquer coisa, mesmo o ChromeOS (com um pouco de trabalho) ou qualquer versão do Windows ou Linux, não importa o sabor da área de trabalho.

Luis Arriojas
fonte
1

Inicializei com êxito as instalações completas do Ubuntu a partir de drives USB nos últimos 3 anos. O USB 2.0 foi um pouco mais lento que um 3G SATA HD mais antigo (cache de 7200 rpm e 16 MB), mas o USB 3.0 está a alguns segundos de um SSD em uma interface 3G SATA.

CSharpQuestions
fonte