在不承诺的情况下尝试新OS版本的方法?


20

我想尝试新的操作系统发行版,例如Ubuntu 17.04或Ubuntu 17.10,以查看新功能。我也想看看Kubuntu,CentOS或其他发行版(Windows 11何时发布?),或者设置测试环境,因为我知道我可能会将其丢弃,并且不想在我的核心机器上这样做。

有哪些备选方案可以做到这一点而又不会冒我的主要开发机器的风险?我不是在寻求关于BEST方法的辩论,但是有哪些替代方法可用。


2
我主要使用虚拟机来做到这一点。请参阅此问题,以获取有关使用VirtualBox进行快速便捷设置的指南,您可能希望在答案中链接该指南。
塔卡特

1
我个人使用,docker因为您的容器是用易于理解的脚本定义的。您可以完全控制基本映像和安装内容。易于共享主机文件和设备,创建容器虚拟网络,使用命令行参数有选择地公开端口,您可以将命令直接发送到容器外壳并在容器上下文中执行应用程序。例如,您可以尝试使用单一代码的centos用户空间 docker run -it centos /bin/bash
crasic

8
“ Live CD”曾经是一件大事。如今,它将变成一个活动的USB驱动器。
user253751'3

1
考虑到Windows 10的更新模型,不太可能会有“ Windows 11”。即使对操作系统进行了重大重建,Microsoft也很有可能将其称为其他名称。
停止Harming Monica

3
您基本上有三个选择:虚拟机(VirtualBox或Docker),可引导闪存驱动器(实时CD的现代替代品)或双重引导。在这三个之间进行选择取决于您的需求,硬件和经验。
肖恩·比恩

Answers:


26

USB替代品

USB替代品是好的

  • 您想要测试性能(在裸机上)
  • 计算机的功能不足以在虚拟机中正常运行系统

您可以使用具有至少2GB驱动器空间的USB Pendrive并创建一个

  • Pendrive中的实时 Ubuntu系统。

    从USB笔式驱动器启动,然后在启动菜单中选择“尝试Ubuntu”(以及与其他Linux发行版类似的东西)。如果您保存数据,安装程序或在实时(仅实时)驱动器中调整系统,则它在关机或重新引导后将无法生存。


如果你想

  • 以更高级的方式尝试Ubuntu或
  • 保存数据,安装程序或调整系统,然后
  • 您拥有/获得至少4 GB的快速USB笔式驱动器,

您可以创建一个

  • 持久的实时 Ubuntu系统

或者,如果您拥有/获得至少16 GB快速USB笔式驱动器,则可以创建一个

  • 已安装 Ubuntu系统(类似于安装在内部驱动器中,但安装在USB Pendrive中)。

    USB驱动器中已安装的系统稳定且灵活,可以随时更新和调整,没有任何限制。这样,它比持久的实时系统更好。如果可以避免使用专有的驱动程序,它可以在计算机之间移植,但是持久的实时系统则更具移植性。

链接



2
由于海报具有正在运行的Ubuntu(?)安装,因此也有可能直接从硬盘启动ISO。设置到(新)ISO的链接,使用grub中的链接(添加到您的/etc/grub.d/40_custom中),并具有一个FAT分区,该分区具有用于casper-rw文件的目录(PERSISTENCE_PATH,以标识要使用的文件) )。添加“ toram”,其ISO引导性能与普通硬盘安装相当(甚至更快)。
ubfan1

2
是的,@ ubfan1的替代方法很好,我已经使用了几次。也许设置起来比创建USB Pendrive稍微复杂一些,但是一旦有了它,它就可以很好地工作:-)参见此链接,help.ubuntu.com
community/

2
当您要测试新OS版本与硬件的实际性能时,最好在单独的存储设备上进行安装。
pa4080 '18

这绝对是正确的答案。尝试通过当前操作系统上的虚拟化层(或Docker,上帝禁止)对操作系统进行测试,就像将一辆新车拖到当前车后的拖车上进行“试驾”一样:当然,您一定可以看到看起来像什么,但是它不会给您任何性能方面的想法。
AC

使用USB3,这可能会正常工作。如果您使用的是带USB2的旧计算机,则可能需要花费更长的时间才能加载。
肖恩·比恩

15

虚拟化是测试新发行版和OS版本的一种方法。不需要额外的PC /键盘/视频/鼠标或适配器的空间,即可使用单个键盘,视频,鼠标运行多台PC。它只需要一台PC和一些虚拟化软件。

假设您有一台具有多核CPU的计算机,该计算机具有虚拟化能力和合理的内存量。如果有的话,我建议至少要有8GB的内存和16GB的内存。

如果您正在运行Ubuntu,并且只想尝试Linux发行版(我不认为Windows可以运行),则可以使用Ubuntu中打包的免费虚拟化软件:KVM或Xen。两者都能正常工作,都是免费的,并且可以运行各种Linux发行版。但是,缺少一些用于管理VM的工具。Oracle有一个称为VirtualBox的免费版本的虚拟化工具,当然,总有商用VMWare产品。如果您选择台式机,VirtualBox和VMWare都可以在Windows机器上运行Ubuntu。

通过使用VM管理器,您将能够在发行新发行版时对其进行添加,测试,使用新功能,然后在出现新发行版时将其丢弃。它们仅在不运行时才占用磁盘空间,因此,除非它们变得很紧,否则甚至不需要丢弃它们。使用VM Manager,很容易在计算机上平衡5、10或更多发行版,并能够根据需要启动和删除它们。如果您幸运地拥有一台32GB或64GB的计算机,您甚至可以并行运行它们。


2
Windows可以在VM内运行;但是,较新的版本太重了,您需要一个非常快速的多核才能使用。
狂欢

虚拟环境还取决于对该操作系统的支持。新的Windows版本将需要对虚拟机软件进行更改以支持它,因此可能会遇到一些挫折。虽然我希望他们为新版本做准备;-)
Rinzwind

是的-对于测试,我们绝对需要将虚拟化解决方案升级到最新版本,以便能够启动最新的OS版本。
塔卡特

2
KVM可以很好地运行Windows 10和Windows 7。如果使用Xen,则指的是Citrics Xen Server,它也可以运行Windows 10和7。
Robby1212年

1
@EricDuminil它们与Windows通常一样有用。:)
迈克尔·汉普顿

12

作为sudodus答案的更快更便宜的替代方法,您可以直接从可引导驱动器映像文件引导,而不是从专用(USB)驱动器引导。

至少对于Ubuntu ISO映像(以及类似Linux Mint的衍生版本),以下方法适用。其他发行版可能需要进一步调整。

  1. 将可引导驱动器映像以ISO格式1作为文件存储在内部存储驱动器2上

  2. 添加Grub的“零件”的文件,例如35_isofiles,与内容

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

    /etc/grub.d并使其可执行。

    在指定的行中编辑文件路径以符合您的需求。您可以根据需要添加多个路径和/或Bash Glob模式。

  3. 使文件可执行:

    sudo chmod a+x /etc/grub.d/35_isofiles
    
  4. 确保已启用Grub菜单

  5. 更新Grub配置:

    sudo update-grub
    
  6. 重新启动并选择新添加的Grub菜单项,以从相应的映像文件启动。


1其他文件系统类型也是可能的,但是可能需要其他Grub命令和引导参数调整。

2由于使用了Grub的实用程序库,因此LVM,RAID和加密的文件系统应该可以工作,但我没有对其进行测试。


2
哇 !什么脚本!我通过在/etc/grub.d/40_custom中添加一个条目并找到合适的参数来手动进行相同的操作;考虑到我对wiki.archlinux.org/index.php/
solsTiCe

9

到目前为止,虚拟化是最简单的。

但是,这里有2个单独的用例,将有不同的解决方案

1.试用新发行版

分发基本上由打包的应用程序和用户空间环境(例如,SystemDvs init用于引导)确定

如果您想定性地“评估”不同发行版的UIX,那么我建议您使用全面的虚拟化,在其中完整安装操作系统并评估其可用性。其他答案已充分涵盖了这一点。

如果您仅需要用户空间环境进行测试,请继续阅读。

2.在不同的环境中测试和“丢弃实例”

容器化是一种轻量级虚拟化形式,它使用内核来创建沙盒环境,使用起来更加轻松,便宜和快速。

容器与主机共享内核资源,但是容器具有其自己的根文件系统,用户空间,网络堆栈等。从概念上讲,可以将其视为chroot类固醇。但是,由于内核是共享的,因此虚拟化是“瘦”的,这意味着在大多数实际情况下,它以与主机OS相同的速度运行。

有一种常用的容器系统称为docker。Docker几乎为您想要的每个Linux发行版都提供了标准化的映像,并且它可以在Windows上运行(但是,Windows映像只能在Windows上运行,而linux映像在两者上都可以运行)。它具有其他有用的功能,可以节省空间和性能。

还有一些类似linux的本机开源替代品LXC(内置在内核中!),它们可以用于几乎相同的事情(但需要更多的配置)。

中的测试或构建环境的简化示例 docker

# Dockerfile

FROM ubuntu:17.10

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

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

然后从命令行以各种方式在该环境中编译项目或测试

“登录”并在环境中进行编译,运行测试等。假设您位于项目的源目录中

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

一次性使用

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

您甚至可以传递环境变量

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

或启动一个持久实例并将文件明确复制到该实例中

$ 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

实际上还有数百种其他使用模式,但是,类似脚本的图像定义,可扩展图像和命令行使用使其对于开发,测试甚至部署环境都极为有吸引力。


1
如果您想要系统容器,则应该考虑使用LXD(比传统的LXC用户空间工具简单得多)而不是Docker(为应用程序容器设计的Docker)。也就是说,两者都基于内核LXC / cgroups支持。另请参见unix.stackexchange.com/questions/254956/…–
鲍勃

3

我在驱动器上保留了一个单独的分区(建议最小为20GB,如果可以的话,建议更多)。

我可以将要测试的任何操作系统安装到该分区上,然后重新启动到该分区中。

如果一切正常,我可以弃用原始的OS分区,并最终重新调整其用途。

但是,如果新操作系统对我来说不起作用(驱动程序问题,软件不可用),那么我可以简单地重新引导回旧操作系统,并庆幸我仍然拥有它!

笔记:

  • 这样,您就可以真正在硬件上测试新的操作系统,从而可以检测驱动程序问题。

  • 但是,如果您只想体验新操作系统的感觉,那么其他虚拟化解决方案之一可能对您来说更快,更轻松,更安全。

  • 我将我/home放在一个较大的单独分区上,因此它独立于两个OS-es。(不要意外地重新格式化该分区!)

  • 但是我建议您在测试时不要使用共享/home分区。如果两个OS的软件版本明显不同,则应用程序可能会以不适合其他OS的方式更改其配置文件。因此,请为每个操作系统保留单独的配置文件,直到您提交其中一个。(*) 见下文

  • 您无需创建第二个交换分区。您可以为两个操作系统使用相同的交换分区。

  • 当然,您需要小心格式化/安装到的分区。因此,在安装新操作系统之前,请先进行备份,并写下分区ID和大小(parted,p,q)。

  • 为了在两个操作系统之间双重引导,您需要使用grub来检测它们两者。以我的经验,grub总是自动执行此操作。(但是lilo曾经是一个不同的故事!)

  • 在另一个操作系统上时,通常可以从一个操作系统上运行软件。sudo chroot /mnt/original_os尽管设置起来很麻烦,但我还是设法使用:我必须绑定安装/dev/proc

我的记录是在一台计算机上安装4个Linux OS,并安装Windows XP。我曾经为了提高速度和乐趣而启动到Gentoo,但是在chroot中运行我的Web服务器和邮件服务器到受信任的Debian OS。

(*)您可以通过编辑为每个OS配置不同的主文件夹/etc/passwd。将您的主目录设置为/home/you/arch-test目标,然后以共享主目录分区为目标/etc/fstab并重新启动。您可以符号链接某些点文件以在两个操作系统之间共享,而另一些则特定于操作系统。


1
需要真正信任他们的安装脚本.....
mckenzm

是的,这种方法存在更多的风险。如果您真的很谨慎,则可以先尝试虚拟化,然后再进行分区安装,只有在可行的情况下才放弃原始安装。
joeytwiddle18年

我再也不会这样做了。我曾经遇到一个显然晦涩的错误,该错误消除了每个加密分区,甚至包括那些不属于要求的安装的分区。AFAIK此错误尚未修复。
迈克尔·汉普顿'18

3

您基本上有三个选择:虚拟化(VirtualBox或Docker),可引导闪存驱动器(实时CD的现代替代品)或从分区进行双重引导。在这三个之间进行选择取决于您的需求,硬件和经验。其他一些答案则详细介绍了特定方法,但是这里有一个高级比较,为您提供了一个在它们之间进行决策的框架。

1.虚拟化

优点

  • 相当容易设置
  • 不会影响您的主要开发环境
  • 只要您有硬盘空间,就可以轻松设置任意数量的文件-甚至可以在进行重大更改之前创建快照,并在完成快照后将其删除

缺点

  • 需要合适的硬件才能同时运行两个或多个操作系统
  • 性能受分配给VM的资源的限制,因此您实际上无法准确了解要测试的OS版本与主OS相比
  • 由于硬件都是虚拟化的,因此您也无法准确了解驱动程序的可用性/兼容性

2.可启动闪存驱动器

优点

  • 中等容易设置
  • 不会影响您的主要开发环境
  • 尽管USB3闪存驱动器的质量确实有所不同,但USB3闪存驱动器的性能通常还是不错的(USB2的传输速度会更慢-为此,我会避免使用它)
  • 使用实际的硬件(而不是存储设备),因此您可以看到它在驱动程序和其他方面的表现如何
  • 只要您有足够的闪存驱动器,就可以轻松设置任意数量的磁盘(如果要尝试其他方法,可以轻松地重新格式化它们)

缺点

  • 需要具有一个(或多个)专用于此目的的闪存驱动器
  • 性能取决于您使用的闪存驱动器的质量

3.从分区双重引导

优点

  • 为您提供最佳的性能,驱动程序兼容性等方面的信息,因为它在与主操作系统完全相同的硬件上运行
  • 只要您有硬盘驱动器空间,就可以一次设置多个分区(您只需要为每个分区设置一个单独的分区)

缺点

  • 需要一些基础知识才能正确设置
  • 弄乱硬盘分区和引导加载程序总是有可能使您当前的设置变糟(在开始之前,请确保您有可引导的闪存驱动器或实时CD)

如果在您的帖子中将Docker替代方案与虚拟化分开,我愿意将其标记为涵盖所有替代方案的答案。恕我直言,由于没有运行真正的完整init系统和完整内核,我觉得容器不是真正的虚拟化。与完全虚拟化(等)相比,容器(docker,LXC等)在资源上更轻便...
Ted Cahall

2

量化宽松

QEMU是一种虚拟化解决方案,从理论上讲,它解决了该问题的廉价和简单要求。

它允许在Linux或Windows主机内拖放启动操作系统iso文件。

它还允许在主机系统中引导Live USB硬盘驱动器,并在可用时使用持久性。

不需要像VBox一样构建虚拟硬盘。

QEMU可作为命令行应用程序用于Linux,Windows和其他操作系统。它也可以作为GUI使用,并包含在MultiBootUSB Linux和Windows版本http://multibootusb.org/中

量化宽松

也可以从Virtual Machine Manager运行QEMU,它比MBUSB快,但不能拖放。

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

对于长期的OS测试,最好使用VirtualBox安装的系统。


谢谢!我没有听说过这种选择。我会看一下。
Ted Cahall

2

最简单,最简单的方法是使用虚拟化。您可以下载VirtualBox(它是开源的)并安装任何操作系统。而且,我建议您在首次运行之前创建快照,这样,如果在设置快照,更改配置等过程中遇到任何错误,都可以回退到快照的先前状态。

我已经以这种方式使用和测试了多个操作系统。这是非常简单和快捷的。甚至,我已经使用MSDOS和Windows 3.1进行虚拟化。您可以安装任何东西,甚至可以安装ChromeOS(只需少量工作),也可以安装任何版本的Windows或Linux,无论桌面风格如何都可以。


1

在过去的三年中,我已经从USB驱动器成功启动了Ubuntu的完整安装。USB 2.0比旧的3G SATA HD(7200 rpm 16 MB高速缓存)要慢一些,但是USB 3.0距离3G SATA接口上的SSD仅几秒钟。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.