2008年7月29日星期二

此博客重新启动

原本的网站空间(http://www.wssnow.com/)在 7/27 到期了,目前也懒得续费,同时也没有去年暑假那么多时间来写 Web Application 了,就暂且用 blogger 来写写东西吧。

PS:在到期那天我随意放上去的论坛中莫名奇妙地出现了一个名叫 binarie(From RQNOJ, http://www.rqnoj.cn/)的用户,还发了一帖……汗……当时我的第一感觉时,你小子真行,google 还没更新缓存就都被你找到了……………………

Gentoo in coLinux 命令行环境全新安装成功!附送安装配置全过程

昨天晚上做了 N 题后开始进入无所事事期,前天调试 LFS 让人很窝火,2.6.25 内核的 reiser4 补丁怎么都 patch 不上,每次输入命令后命令行就停住不动了,前面装 Linux API Headers 还好好的啊!其他有的包也出现过类似问题,但我把包和 patch 从本地的 vfat 分区(主要是因为我是用迅雷下载的包,所以存在 Win32 分区内)复制到 /mnt/lfs/sources/ 下,再 tar + patch 就 ok 了,同样的方法在内核上却又不管用,很不解……………………这个问题,也希望有高手帮忙……………………(另注:我用的是 LFS BOOK 的 SVN 版本,地址:http://www.linuxfromscratch.org/lfs/view/development/

好了~闲话少说(貌似我是个很喜欢说闲话的人 ;) ),下面步入正题,昨天在网上搜索 Linux on Windows 时,排除掉很多垃圾文章之后,第一页的 cygwin 首先映入眼帘,不过这东西真的很恶心,直接无视掉,然后翻到第二页,当我那龟网慢慢地开启这个不到 10k 的搜索页面时,一个叫 coLinux 的东东出现在我的视野中,打开一看发现乖乖这东西不得了,是一个可以在 Windows x86 系统上使用的 UML(User Mode Linux)!!!(这段貌似又是废话,表pia我,下面一定转入正题……;……;……;……;)

首先介绍一下 UML 是什么东西,顾名思义,User Mode Linux 即用户模式 Linux(众人:废话),也就是可以在已有的内核基础之上运行的内核,这个功能本来只是为了 Linux 下可以动态控制使用内核,现在已经被移植到 Windows 下,成为饶过虚拟机而使用 Linux 的一套高效率解决方案。

下面RT一下,附上我在 Windows XP 下基于 coLinux 全新安装 Gentoo Linux 的全过程:

1. 下载安装 coLinux 0.73(废话),http://www.colinux.org/ 上面自己找吧,sf 的服务器

2. 从 sf 文件列表中下载一个 gentoo 的包,新旧随意,它只是用来安装 Linux 的 host,如果网速较慢的话就选个最小的下载吧。

3. 解压缩下载的 gentoo 包,注意:这一个一两百兆的包解压后就是几个G,建议解到 NTFS 分区中并启用压缩,既可以节省大量空间,也可以避免你看见 CPU 爆满听见硬盘狂转……

4. 找一个能用的 dd(我用的是 cygwin 里的),使用下列指令(假设我们用gentoo_root作为文件系统文件):

dd if=/dev/zero bs=1k count=8M > gentoo_root

这样就可以创建一个 8G 的空白文件系统。这次就不要压缩了,NTFS 的压缩性能对性能影响比较大呵呵。

注意,本文假定上述三个东东都在一个目录下,若不是请自行修改目录。

5. 修改 gentoo.conf(您可能需要修改相关的目录设置),加入下面一行来载入我们刚刚创建的文件系统:
cobd2=gentoo-root

6. 双击 gentoo.bat (您可能需要先酌情修改)启动 gentoo host,默认用户名 root 密码 root,进入之后运行下列指令初始化和挂载目标分区:
$ mkreiserfs /dev/cobd2(可能需要 emerge reiserfsprogs,如果使用 ext2 或者 ext3 文件系统的话就用 mkext2fs 和 mkfs.ext3)
$ mkdir -v /mnt/gentoo
$ mount -v /dev/cobd2 /mnt/gentoo

这样就挂载完成了。之后上 gentoo.org 找个 mirror 下载 stage3 和 portage 树的 tarball(不用痛苦用 links 了,这次可以直接用 IE 了):

$ wget http://....../.../stage3-i686-2008.0.tar.bz2
$ wget http://....../.../portage-2008.0.tar.bz2
$ tar -xvjf stage3-i686-2008.0.tar.bz2 -C /mnt/gentoo/
$ tar -xvjf portage-2008.0.tar.bz2 -C /mnt/gentoo/usr/

7. 之后的安装就可以从 gentoo 官方手册的第六节开始进行了,注意不需要安装 kernel 和 bootloader。作为一个完整的安装手记,这里也大概写一下安装过程。

$ emerge mirrorselect
$ mirrorselect -i -o >> /mnt/gentoo/ect/make.conf
#选择一个合适的 mirror,注意不要选择 ipv6 站点
$ mirrorselect -i -r -o >> /mnt/gentoo/etc/make.conf
#选择一个合适的 rsync 服务器
$ cp -L /etc/resolv.conf /mnt/gentoo/etc/resolv.conf
$ mount -t proc none /mnt/gentoo/proc
$ mount -o bind /dev /mnt/gentoo/dev

这样配置后就可以 chroot 进去了,host 的历史使命基本完成 ;)
$ chroot /mnt/gentoo
$ env-update
$ source /etc/profile
$ export PS1="(chroot env) $PS1"

接下来更新 portage 树:
$ emerge --sync

这个工作耗掉我一下午时间(额,数学一本暑假作业就这样做完了,我的手啊……)

设置 glibc locale:
$ nano /etc/locale.gen
加入:
en_US ISO-8859-1
en_US.ISO-8859-1 ISO-8859-1
en_US.UTF-8 UTF-8
zh_CN GBK
zh_CN.GBK GBK
zh_CN.GB2312 GB2312
zh_CN.GB18030 GB18030
zh_CN.UTF-8 UTF-8
zh_TW BIG5
zh_TW.BIG5 BIG5
zh_TW.UTF-8 UTF-8

$ locale-gen

编辑 /etc/fstab:
$ nano /etc/fstab
修改 ROOT 为 cobd0,并做其他相关配置,如果你增加了交换分区也请在这里配置

$ nano /etc/conf.d/hostname
设置 HOSTNAME 主机名
$ nano /etc/conf.d/net
设置 dns_domain_lo 域名
如果不使用域名的话,将 /etc/issue 中的“.\O”字符串去掉

$ nano /etc/conf.d/net
加入下列内容配置 dhcp 网络:
config_eth0=( "dhcp" )
dhcp_eth0="nodns nontp nonis"

启动时自动加载网络:
$ rc-update add net.eth0 default

设置根用户密码:
$ passwd

设置时钟:
$ nano /etc/conf.d/clock

安装必要程序:
$ emerge syslog-ng reiserfsprogs dhcpcd vim
$ rc-update add syslog-ng default

如此,系统安装宣告成功!

8. 退出系统,然后重新修改一下 gentoo.bat 和 gentoo.conf,启动新的 gentoo
9. Enjoy

PS1:也可以不用 dd,因为初始的文件都是空的(其实里面是什么内容都无所谓),所以可以写个程序调 WinAPI 直接申请个 nG 的文件了事,都不需要清空内容。不过鉴于本人能力有限,谁来写个为网民服务吧,应该很简单的(某人窃笑中……不久传来被pia声)

PS2:本人素 ReiserFS 及 Reiser4 之强烈拥护和支持者~~~~(再次被众人pia飞)

PS3:在安装完重新启动之后发现出现如下错误,无法进入系统:

putfont function not implemented

功能未实现?!上网搜索了一下,原因是 coLinux 不支持 framebuffer 所致,解决方案如下:

由于无法进入新系统,打开 host,挂上分区,运行如下指令:

$ mv /bin/setfont /bin/setfont.old
$ cat > /bin/setfont
#!/bin/bash

if ! uname -r grep -q -e "-co-" then
/bin/setfont.old $@
fi
$ chmod +x /bin/setfont

再启动即可

PS4: 没有谷歌拼音,智能abc录入累死我也~~(众人:活该~!BOM!<怎么被pia的总是我>)
PS5: binarie 看看这里什么时候会留下你的脚印。。。。。。。。