我现在正在学习如何编译和启动Linux 内核。有没有办法在虚拟机中启动内核,而不是弄乱我的系统?我在 Windows 8 上使用 VMWare Workstation。我可以用它来启动我的 Linux 内核吗?
答案1
我现在正在学习如何编译和启动Linux 内核。有没有办法在虚拟机中启动内核,而不是弄乱我的系统?我在 Windows 8 上使用 VMWare Workstation。
根据您的措辞,我假设您没有类UNIX工作环境。要构建您自己的内核,您必须有一个,因此在这种情况下您可以在两者之间进行选择:
- 通过在虚拟机管理程序(即 VMWare Workstation)下的虚拟机中安装 GNU/Linux 发行版来创建一个
- 或者采取黑客的方式,然后按照从零开始的Linux为自己创建一个(!!不建议初学者)。
有了工作环境后,编译和测试您自己的内核就像执行以下操作一样简单(例如):
wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.9.3.tar.xz
tar -xzf linux-3.9.3.tar.xz
cd linux-3.9.3
make menuconfig
make
make modules
make modules_install
make install
然后reboot
(可能会稍微复杂一些,比如制作ramdisk,因此以上仅作为示例)。
答案2
如果您有一个 Linux 虚拟机,那么您可以在该虚拟机内构建内核并以这种方式启动它。这就是我一直在做的事情,以免弄乱我的主系统。
答案3
我建议做一个根图安装在虚拟机中。它会教你如何配置,使用引导加载程序编译并引导 Linux 内核。很棒的学习体验(尽管不如虚拟机之外的真实硬件安装)。
这Gentoo手册拥有您入门所需的所有文档。当然还有他们的维基百科也很有用。
PS 不要使用根内核,这不会教您如何配置内核。
更新:
- 你提到视窗,因此我们假设您没有安装 Linux(在虚拟机或其他方式中)。
- Genkernel 是一个已知良好内核配置由 Gentoo 开发人员维护。您的问题是关于学习编译内核,因此我不鼓励您采取简单的方法并手动配置它(通过反复试验)。
- ArchLinux和根图两者都使用 kernel.org 中的内核很少修补。你当然可以抓住来自上游的 vanilla 资源如果你想。
- 混合来自不同发行版的内核是偶然的。有时有效,有时无效,而且通常只是部分有效。即使在 ArchLinux 上将较新的内核与较旧的 initrd 混合在一起也行不通;该 ramdisk 包含未编译到内核中的模块。
- Ubuntu 和自定义内核不能很好地结合在一起。他们的内核有大量补丁,所以你会想要抓住他们的来源而不是上游。
- 如果你只想为 Ubuntu 编译最新的内核,你可以尝试这个苯丙胺