热门关键字:  ubuntu  分区  函数  Fedora  linux系统进程

当前位置 :| 主页>Linux发行版>Gentoo>

Gentoo Linux 开发者的用户模式

来源: 作者: 时间:2007-02-02 Tag: 点击:
原文更新:2003年9月30日
内容简介:本指南揭示了 Gentoo Linux 开发者如何设置用户模式 linux,来测试有潜在系统破坏的改变。

1. 获得用户模式 用户模式 Linux


 

       正如用户模式 linux 网站 (http://用户模式-linux.sourceforge.net) 所述, 用户模式 linux 允许用户“自包含运行 Linux”。特别的,用户模式 linux 提供了虚拟机,用户可以在上面“运行毛病软件,尝试新的 Linux 内核或发布,在 Linux 内部敲敲打打,全都不会使你的主要 Linux 冒风险。” 对于 Gentoo 核心软件包,比如 sys-apps/baselayout 或是 sys-libs/glibc 的改变有潜在的系统破坏性或是使它无法引导;通过用户模式 linux 我们可以测试这些改变而不用担心破坏现存的系统。

       安装用户模式 linux 与一般的内核安装本质上是相同的首先安装内核源码(加入用户模式 linux 恰当补丁),然后以通常的习惯配置用户模式 linux 内核:

代码 1.1

# emerge sys-kernel/usermode-sources
# cd /usr/src/uml/linux
# make menuconfig ARCH=um
# make linux ARCH=um
# cp linux /usr/local/bin/linux

警告:ARCH=um 参数是非常重要的!

重要: 为了使用户模式 linux 内核恰当的引导 Gentoo 系统, 内核不能配置为缺省自动加载 /dev (devfs)。 同样,你也要肯定确保你内核编译中有 tmpfs(虚拟内存文件系统),因为缺省的 Gentoo linux引导脚本在一个小的 tmpfs 分区存储他们的信息。(用户模式linux 的网站上的二进制内核包含自动加载/dev,同时他们编译了 tmpfs;还是不要麻烦他们了。)

       我强烈建议阅读用户模式 linux 文档, but the 不过基本的观点就是运行 /usr/local/bin/linux 程序,引导用户模式内核并且试着带起存储在文件 root_fs 中的系统,位于恰当的工作目录。

       安装用户模式 linux 工具也不会有伤害的。

代码 1.2

# emerge sys-apps/usermode-utilities

       这些工具会简化用户模式 linux 虚拟系统和宿主系统之间的网络(在各种事情中)。

2. 创建 root_fs


 

制造 Gentoo chroot 

       用户模式 linux所需的 root_fs 文件 是一个包含整个 Gentoo Linux 文件系统的单独文件。要生成这个文件,你需要在宿主内核(非用户模式)使用 Loopback 设备支持。

       生成 root_fs 文件本身会是我们的最后一步。首先,我们会在一般的 chroot 生成 Gentoo 文件系统。我们需要可用的 stage 压缩包,可以单独下载,从 liveCD 中解出,从 liveCD .iso 文件中解出。

代码 2.1: 加载 liveCD .iso

# mkdir /mnt/loop
# mount -o loop /path/to/build-<TAB>.iso /mnt/loop

       设置 chroot 与一般 Gentoo Linux 的建造基本一致。

代码 2.2

# mkdir /mnt/gentoo
# cd /mnt/gentoo
# tar xvjpf /path/to/build-<TAB>.tar.bz2

       接着卸载 .iso。你不再需要它了。

代码 2.3

# cp /etc/resolv.conf /mnt/gentoo/etc/
# mount -o bind /proc /mnt/gentoo/proc
# mkdir -p /mnt/gentoo/usr/portage/distfiles
# mkdir -p /mnt/gentoo/usr/portage/packages
# mount -o bind /usr/portage/distfiles /mnt/gentoo/usr/portage/distfiles
# mount -o bind /usr/portage/packages /mnt/gentoo/usr/portage/packages
# chroot /mnt/gentoo /bin/bash
# emerge sync
# env-update
# source /etc/profile

       通过绑定加载 /usr/portage/distfiles 和 /usr/portage/packages,我们避免了下载或建造已经在 Gentoo 主机上已经存在的软件包。

       以通常习惯 Bootstrap 和建造系统:

代码 2.4

# cd /usr/portage
# nano -w /etc/make.conf
# nano -w /etc/make.profile/packages 
# nano -w /usr/portage/profiles/package.mask
# scripts/bootstrap.sh && emerge --usepkg system

警告:/etc/make.profile/packages 文件需要编辑以便从缺省系统中除去 virtual/bootloader ebuild (只需从“*virtual/bootloader”行的开头除去“*”)。 virtual/bootloader ebuild 试着加载 /boot 分区,在我们的 chroot 中会失败。

注释: 确保你检查 /etc/make.profile/packages 和 /usr/portage/profiles/package.mask 保证任何你要安装的将测试软件包没有隐藏掉。在写作时,scripts/bootstrap.sh 能够从源码编译 bootstrap 包。要使用已经存在的软件包,增加 alias emerge="emerge --usepkg" 到你的 bootstrap 脚本顶上面的什么位置。

       增加任何你想要得到的软件包。随意给你的虚拟 Gentoo 系统一个主机名,如果你愿意的话。在 /etc/fstab 中,你需要 /dev/ROOT 为 /dev/ubd/0,一种 ext2,ext3,或 reiserfs 文件系统类型。设置 /dev/SWAP 为 /dev/ubd/1,和注释掉的 /dev/BOOT。

       在此,记得设置你的 root 密码。

代码 2.5: 设置 root 密码

# passwd

       退出 chroot,卸载所有绑定加载, tar 起新的 Gentoo 发布,并清理:

代码 2.6

# exit
# umount /mnt/gentoo/usr/portage/distfiles
# umount /mnt/gentoo/usr/portage/packages
# umount /mnt/gentoo/proc
# du -ks /mnt/gentoo
# cd /mnt/gentoo
# tar cvjpf ~/gentoo.tbz2 *
# cd
# rm -rf /mnt/gentoo

       你也要考虑回顾 Gentoo Linux x86 安装指南的最后步骤。

建造 root_fs 

       我们的 Gentoo chroot 尺寸大约 300 MB,所以 root_fs 大致需要那个大小。我们会选取 0.5 GB 作为合理的大小。

代码 2.7

# dd if=/dev/zero of=root_fs seek=500 count=1 bs=1M
# mke2fs -F root_fs
# mount -o loop root_fs /mnt/loop
# tar xvjpf gentoo.tbz2 -C /mnt/loop
# umount /mnt/loop

       有0.5 GB 的交换空间也不错。


最新评论共有 4 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册