尝试新操作系统版本而不承诺的方法?

我想在他们到达时尝试新的OS版本,例如Ubuntu 17.04或Ubuntu 17.10以查看新function。 我还想看看Kubuntu,CentOS或其他发行版(Windows 11何时到货?) – 或者设置测试环境,知道我可能会丢弃它们而不想对我的核心机器执行此操作。

在不冒我的主要开发机器风险的情况下,有哪些替代方案可以做到这一点? 我不是在寻找关于最佳方式的辩论,而是提供哪些替代方案。

USB替代品

USB替代品很好,何时

  • 你想测试性能(在裸机上)
  • 计算机的function不足以在虚拟机中运行良好的系统

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

  • 在pendrive中使用Ubuntu系统。

    从USB pendrive启动并在启动菜单中选择“Try Ubuntu”(和其他Linux发行版类似)。 如果您保存数据,安装程序或在实时(仅限实时)驱动器中调整系统,它将无法在关机或重新启动后继续运行。


如果你想

  • 以更高级的方式尝试Ubuntu或
  • 保存数据,安装程序或调整系统和
  • 你有/获得至少4 GB的快速USB pendrive,

你可以创建一个

  • 持久的 Ubuntu系统

或者,如果您拥有/获得至少16 GB的快速USB pendrive ,您可以创建一个

  • 安装 Ubuntu系统(如安装在内部驱动器中,但在USB pendrive中)。

    USB驱动器中安装的系统稳定而灵活,可以保持最新和调整,没有任何限制。 通过这种方式,它比持久的实时系统更好。 它可以在计算机之间移植,如果你可以避免专有驱动程序,但持久的实时系统更便携。

链接

  • 在安装之前尝试Ubuntu(Kubuntu,Lubuntu,Xubuntu,…)

  • help.ubuntu.com/community/Installation/FromUSBStick

  • help.ubuntu.com/community/Installation/FromUSBStick#Notes_about_speed

  • help.ubuntu.com/community/mkusb

  • help.ubuntu.com/community/mkusb/persistent

  • Ubuntu来自USB,具有完全持久性和NTFS

  • multibootusb.org/

  • 从外部驱动器启动Ubuntu


  • 将USB记忆棒恢复到标准存储设备

  • 无法格式化我的USB驱动器。 我已经尝试过使用mkdosfs和gparted

  • DD Image磁盘写入是永久性的吗?

测试新发行版和操作系统版本的一种方法是使用虚拟化。 额外的PC /键盘/video/鼠标或适配器不需要空间来运行具有单个键盘,video,鼠标的多台PC。 它只需要一台PC和一些虚拟化软件。

这假定您拥有一台具有多核CPU的计算机,该计算机具有虚拟化和合理的内存容量。 如果有的话,我建议至少8GB内存,16GB更好。

如果您正在运行Ubuntu并且只想尝试Linux发行版(我不相信Windows会工作),您可以使用Ubuntu中包含的免费虚拟化软件:KVM或Xen。 两者都很好,都是免费的,并且可以运行各种Linux发行版。 但是,管理VM的工具有些缺乏。 Oracle有一个名为VirtualBox的虚拟化工具的免费版本,当然总有商业VMWare产品。 VirtualBox和VMWare都可以在Windows机器上运行Ubuntu,如果这是您选择的桌面。

通过使用VM管理器,您可以在它们出来时添加新的发行版,测试它们,使用新function,然后在新版本出现时丢弃它们。 它们在不运行时只占用磁盘空间,因此除非变得紧张,否则它们甚至不需要丢弃。 使用VM管理器,可以轻松地在计算机上平衡5个,10个或更多个发行版,并能够启动它们并根据需要将其删除。 如果你有幸拥有32GB或64GB的机器,你甚至可以并行运行它们。

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

至少对于Ubuntu ISO映像(以及像Linux Mint这样的衍生产品),以下配方可行。 其他发行版可能需要进一步调整。

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

  2. 添加Grub“parts”文件,例如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 LVM,RAID和加密文件系统应该可以使用Grub的实用程序库,但我没有测试它们。

虚拟化是迄今为止最简单的。

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

1.尝试新的发行版

分发基本上由打包的应用程序和用户空间环境决定(例如, SystemD vs init用于启动)

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

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

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

使用容器化更容易,更便宜,更快速,容器化是一种使用内核创建沙盒环境的轻量级虚拟化。

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

常用的容器系统叫做docker 。 Docker为你想要的几乎所有Linux发行版都标准化了图像,它在windows上运行(但是,windows映像只能在windows上运行,linux映像可以在两者上运行)。 它还具有其他有用的function,可以节省空间和性能。

还有像LXC (它内置在内核中)的Linux本机开源替代品,它可以用于很多相同的事情(但需要更多的配置)。

简化了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 

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

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

我可以在该分区上安装我想测试的任何操作系统,然后重新启动它。

如果一切运行良好,我可以弃用我原来的操作系统分区,并最终重新调整它。

但是如果新的操作系统不适合我(驱动程序问题,不可用的软件),那么我可以简单地重新启动回我的旧操作系统 ,并感谢我仍然拥有它!

笔记:

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

  • 但如果您只想体验新操作系统的感受,那么其他虚拟化解决方案之一可能更快,更简单,更安全。

  • 我将/home放在一个大的独立分区上,因此它独立于两个操作系统。 (不要意外重新格式化该分区!)

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

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

  • 当然,您需要注意格式化/安装到哪个分区。 在安装新操作系统之前,请执行备份,并记下分区ID和大小(parted,p,q)。

  • 为了在两个操作系统之间进行双重启动,您需要grub来检测它们。 根据我的经验,grub总是自动完成这项工作。 (但是lilo曾经是一个不同的故事!)

  • 当您在另一个操作系统上时,通常可以从一个操作系统运行软件。 我使用sudo chroot /mnt/original_os来管理它,虽然它是一个小提琴设置 :我不得不绑定-mount /dev/proc

我的记录是一台机器上的4个Linux操作系统和一个Windows XP。 我曾经为了速度和乐趣而启动进入Gentoo,但是在chroot中运行我的web服务器和邮件服务器到可信赖的Debian OS。

(*)您可以通过编辑/etc/passwd为每个操作系统配置不同的主文件夹。 将您的主页设置为/home/you/arch-test然后在/etc/fstab定位共享主分区并重新启动。 您可以将一些dot文件符号链接,以便在两个操作系统之间共享,同时使其他文件保持特定于操作系统。

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

1.虚拟化

优点

  • 很容易设置
  • 不会影响您的主要开发环境
  • 您可以轻松设置任意数量的内容,只要您拥有硬盘空间 – 甚至可以在进行重大更改之前创建快照,并在完成更改后立即删除它们

缺点

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

2.可启动闪存驱动器

优点

  • 适度容易设置
  • 不会影响您的主要开发环境
  • USB3闪存驱动器的性能一般都不错,虽然根据闪存驱动器的质量肯定会有一些变化(USB2会慢一些 – 我会为此避免它)
  • 使用您的实际硬件(存储设备除外),这样您就可以看到它与驱动程序和诸如此类的东西有多好
  • 只要你有足够的闪存驱动器(如果你想尝试别的东西,你可以轻松地重新格式化它们),你可以轻松地设置任意数量的你想要的东西。

缺点

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

3.从分区双启动

优点

  • 让您最好地了解性能,驱动程序兼容性等,因为它运行在与主操作系统完全相同的硬件上
  • 可以一次设置多个,只要你有硬盘空间(你只需要为每个分区设置一个单独的分区)

缺点

  • 需要一些低级技术才能正确设置
  • 搞乱硬盘驱动器分区和引导加载程序总是有一些潜在的麻烦你当前的设置(确保你有一个可启动的闪存驱动器或现场CD方便开始之前)

QEMU

QEMU是一种虚拟化解决方案,理论上可以解决这个问题对廉价和简单的要求。

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

它还允许在主机系统内启动Live USB硬盘驱动器,并使用持久性(如果可用)。

与VBox一样,无需构建虚拟硬盘。

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

QEMU

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

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

对于长期的OS测试,VirtualBox安装的系统是优越的。

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

我以这种方式使用和测试了几个操作系统。 它非常简单快捷。 甚至,我使用MSDOS和Windows 3.1使用虚拟化。 你可以安装任何东西,甚至ChromeOS(有一些工作)或任何版本的Windows或Linux,它的桌面风格并不重要。

在过去的3年里,我已成功从USB驱动器启动了完整的Ubuntu安装。 USB 2.0比旧的3G SATA HD(7200 rpm 16 MB缓存)慢一点,但USB 3.0在3G SATA接口上只需几秒钟。