Ted*_*all 20 live-usb dual-boot virtualization iso usb-installation
我想尝试新的操作系统版本,例如 Ubuntu 17.04 或 Ubuntu 17.10,以查看新功能。我还喜欢查看 Kubuntu、CentOS 或其他发行版(Windows 11 到货时?) - 或者设置测试环境,知道我可能会丢弃它们并且不想在我的核心机器上这样做。
有哪些替代方案可以在不危及我的主要开发机器的情况下做到这一点?我不是在寻找关于最佳方式的辩论,而是寻求哪些替代方案。
sud*_*dus 26
USB 替代品很好,当
您可以使用至少 2GB 驱动器空间的 USB 随身碟并创建一个
现场Ubuntu系统的随身碟。
从 U 盘启动并在启动菜单中选择“尝试 Ubuntu”(以及与其他 linux 发行版类似的内容)。如果您在实时(仅实时)驱动器中保存数据、安装程序或调整系统,则它无法在关机或重启后继续存在。
如果你想
你可以创建一个
或者,如果您拥有/获得至少 16 GB的快速 USB 随身碟,您可以创建一个
已安装Ubuntu 系统(就像安装在内部驱动器中,但在 USB 随身碟中)。
USB 驱动器中安装的系统稳定且灵活,可以保持最新和无限制地调整。在这种方式下,它比持久的实时系统要好。如果您可以避免使用专有驱动程序,它在计算机之间是可移植的,但持久的实时系统更易于移植。
Ted*_*all 15
测试新发行版和操作系统版本的一种方法是使用虚拟化。它不需要额外的 PC/键盘/视频/鼠标或适配器的空间,即可使用单个键盘、视频、鼠标运行多台 PC。它只需要一台 PC 和一些虚拟化软件。
这假设您有一台具有多核 CPU 的机器,能够进行虚拟化和合理的内存量。如果你有的话,我建议至少 8GB 的内存和 16GB 更好。
如果您正在运行 Ubuntu 并且只想尝试 Linux 发行版(我认为 Windows 不会工作),您可以使用 Ubuntu 中打包的免费虚拟化软件:KVM 或 Xen。两者都运行良好,是免费的,并且可以运行各种 Linux 发行版。然而,管理虚拟机的工具有些缺乏。Oracle 有一个免费版本的虚拟化工具,称为 VirtualBox,当然还有商业 VMWare 产品。如果您选择桌面,VirtualBox 和 VMWare 也可以在 Windows 机器上运行 Ubuntu。
通过使用 VM 管理器,您将能够添加新发行版,测试它们,使用新功能,然后在新版本出现时丢弃它们。它们只在不运行时占用磁盘空间,所以它们甚至不需要被丢弃,除非它变得紧张。使用 VM 管理器,可以轻松平衡一台机器上的 5、10 个或更多发行版,并能够根据需要启动和关闭它们。如果你有幸拥有一台 32GB 或 64GB 的机器,你甚至可以并行运行它们。
Dav*_*ter 12
作为sudodus 答案的更快、更便宜的替代方案,您可以直接从可启动驱动器映像文件而不是专用 (USB) 驱动器启动。
至少对于 Ubuntu ISO 映像(以及 Linux Mint 等衍生产品),以下方法有效。其他发行版可能需要进一步调整。
将可启动驱动器映像以 ISO 格式1作为文件存储在内部存储驱动器上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
Run Code Online (Sandbox Code Playgroud)
到/etc/grub.d并使其可执行。
编辑指示行中的文件路径以满足您的需要。如果需要,您可以添加多个路径和/或 Bash glob 模式。
使文件可执行:
sudo chmod a+x /etc/grub.d/35_isofiles
Run Code Online (Sandbox Code Playgroud)确保Grub 菜单已启用。
更新 Grub 配置:
sudo update-grub
Run Code Online (Sandbox Code Playgroud)重新启动并选择新添加的 Grub 菜单项以从相应的映像文件启动。
1其他文件系统类型也是可能的,但可能需要其他 Grub 命令和启动参数调整。
2 LVM、RAID 和加密文件系统应该可以使用 Grub 的实用程序库,但我没有测试它们。
虚拟化是迄今为止最简单的。
但是,您在这里有 2 个单独的用例,它们将有不同的解决方案
发行版基本上由打包的应用程序和用户空间环境决定(例如SystemDvsinit用于引导)
如果您想定性地“评估”不同发行版的 UIX,那么我会推荐全面的虚拟化,您可以在其中安装整个操作系统并评估其可用性。这在其他答案中已充分涵盖。
如果您只需要用户空间环境进行测试,请继续阅读。
使用容器化更容易、更便宜、更快捷,这是一种使用内核创建沙盒环境的轻量级虚拟化形式。
容器与主机共享内核资源,但除此之外还有自己的根文件系统、用户空间、网络堆栈等。从概念上讲,它可以被认为是chroot类固醇。但是,由于内核是共享的,因此虚拟化是“瘦”的,这意味着对于大多数实际用途,它以与主机操作系统相同的速度运行。
有一种常用的容器系统称为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
Run Code Online (Sandbox Code Playgroud)
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 :) "
Run Code Online (Sandbox Code Playgroud)
一次性使用
$ docker run -v "$PWD:/workdir" --rm my-builder make
Run Code Online (Sandbox Code Playgroud)
你甚至可以传递环境变量
$ docker run -e "CROSS_COMPILE=arm-linux-gnueabi" -v "$PWD:/workdir" --rm my-builder make
Run Code Online (Sandbox Code Playgroud)
或者启动一个持久化实例并将文件显式复制到其中
$ 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
Run Code Online (Sandbox Code Playgroud)
实际上还有数百种其他使用模式,但是,类似脚本的图像定义、可扩展的图像和命令行使用使其对开发、测试甚至部署环境极具吸引力
| 归档时间: |
|
| 查看次数: |
8679 次 |
| 最近记录: |