开源中文网

您的位置: 首页 > Debian Linux > 正文

Debian From Scratch深入研究

来源:  作者:

作者: EricNeon

来自: www.linuxsir.org

从今天起,我们一起来研究linux发行版的设计思路和制作方式。我个人一直想开发一个属于自己的操作系统,当然也不会局限于linux。只是因为目前能力有限,所以把linux当作一个学习入门的途径,而这并不是目的和终点。在选择linux版本时,我也相当谨慎,以免陷入一种无限复杂的消耗战中。在经历了数百次的成功失败之后,也尝试了包括Red Hat/ Mandrake/ Suse/ Debian/ Fedora/ Gentoo/ knoppix/ Morphix/ Turbo/ 红旗/ Magic等等版本之后,最终选择以Debian为主力方向学习操作系统的整合和制作。而同样有众多基于debian的发行版已经发布,我的学习避免重复发布同样的东西,毕竟重复劳动在hacker原则中是明文反对的可耻行为。于是我选择了目前最具前瞻性的DFS(Debian Form Scratch)来作为主攻点,也意在汲取LFS的先进思想和在社团中形成的经验。

注:有关DFS原先Guccio兄也有些讨论,我这前面部分与他翻译的基本一致,可以在这里访问到原帖子http://www.linuxsir.org/bbs/showthr...fs&pagenumber=1

Debian From Scratch (DFS)是单一的CD,它是一张可以运行在所有主流文件系统、逻辑卷组、RAID软件上的完整系统拯救CD,甚至可以编译一个新的内核。

它是一张安装引导盘,可以安装i386平台的woody、sarge、sid以及amd64平台sid,甚至是任何基于网络安装的版本。 整个安装可以用“类Gentoo方式”来描述。 相关文档还不是很完善,但是也将被递交在以下URL中。

下载: http://people.debian.org/~jgoerzen/...-0.6.5_i386.iso
(单ISO可同时引导i386以及amd64内核)

文档: http://people.debian.org/~jgoerzen/dfs/html/

把DFS的ISO刻录到光盘中,然后系统还是启动。出现三个选项:
Boot vmlinuz-2.6.6
Boot vmlinuz-2.6.6-amd64
Boot vmlinuz-2.6.6-amd64-scsi-sata
Debian From Scratch (DFS) 0.6.5 (Mon Jun 7 15:21:12 CDT 2004) #此为注释行

我们选择第一个,回车后启动开始引导内核。然后会提示你输入“root”进入系统。

第一次进入系统后,系统会提示给你一列常用指令:
dfshelp #访问主DFS文档
dfshints #显示此提示信息
reboot #重启机器
elinks,lftp #网络浏览器、ftp客户端
/etc/init.d/lvm start #探测LVM逻辑卷
/etc/init.d/descover start #自动探测硬件
/etc/init.d/hotplug start #自动探测和启用热插拔、USB支持

/etc/init.d/pcmcia start #导入pcmcia子系统(笔记本移动设备支持)
nano,vim,joe,or emacs #文本编辑器
Alt-F1 through Alt-F6 #切换其他虚拟控制台
Alt-F7,ALt-F8 #显示log记录(F7)或者debug调试信息(F8)

我们现在需要安装一个新的系统了,但是该怎么安装呢?如果你也曾用过gentoo的引导盘,你会首先给root设置给新的passwd,以便于另开一个控制台,获取文档信息,而我们的操作都仍在第一个控制台中执行。我们按Alt-F2打开第二个控制台,已经可以看到系统提示你输入“root”登录系统。
login:root
#
这时候并不需要新的密码。ok,这比gentoo方便一些。现在我们可以获取DFS的文档,

#dfshelp
以下是文档的首页信息:
John Goerzen #开发者姓名

PLEASE NOTE: THIS DOCUMENTATION IS NOT YET ANYWHERE NEAR FINISHED.

FIXME: add copyright here

Table of Contents
Introduction to DFS #DFS介绍

DFS Features #DFS特性

Booting DFS #引导DFS

Booting on i386 (PC) #在i386(PC)平台上引导
Booting on Alpha #在Alpha平台上引导
Booting a Kernel #引导一个内核

Selecting CD-ROM device #选择一个光驱设备
Detecting Hardware #探测硬件设备 
Enabling Ethernet #启用网络设备

Wireless Networking #无线网络

Dialup with PPP #使用PPP(宽带拨号)

Installation #安装
Command Reference #命令参考

dfsbuild -- Generate custom Debian From Scratch CD images
#dfsbuild --生成自定义Debian From Scratch CD 镜像文件

我们通常习惯从网络安装debian,即便你是使用光盘安装,最好也先把网络启用一下。这里我们先看看文档中“Enabling Ethernet”这章怎么说的:
启用 Ethernet

如果你的网络硬件已经被探测到,而你的LAN使用的是DHCP,你可以简单得让ifup eth0。你的网络就可以运行了。

如果你的LAN没有使用DHCP,你可能需要编辑 /etc/networking/interfaces。你应该把eth0行删除,并重新写入以下这么几行:

iface eth0 inet static #设定eth0 设备为静态获取IP
address 192.168.0.4 #指定eth0 网卡设备的IP
netmask 255.255.255.0 #子网掩码
gateway 192.168.0.1 #网关

然后运行 ifup eth0。你也需要编辑 /etc/resolv.conf ,加入这么一行指定你的域名服务器:
nameserver 192.168.0.1。 (如果你运行了 DHCP,通常要当心,但你可能偶尔也会用到。)

无线网络

如果你是使用无线网络,首先确认你的硬件已经被探测到。有时设备名称不叫eth0;如果是这样,揣测一下你的设备名叫做什么。如果你的网络是开放的——没有加密——你将可以像启用有线设备一样启用你的无线设备。否则,你就需要像DFS-live系统中/usr/share/doc/wireless-tools/README.Debian文件中所描述的那样修改你的 /etc/network/interfaces文件。

这里我们一般使用DHCP,所以就简单地运行:
#ifup eth0

也有人用的是ADSL宽带拨号,所以我们有必要来启用PPP,先看看文档中的说明:
使用PPP宽带拨号

用PPP拨号上去,首先运行pppconfig设置你的访问. 命名你的连接“供应商”。现在,你可以使用pon去连接,或者使用poff中断连接。

注意一点:如我们前面所说的,我们要频繁地在几个控制台间进行切换,建议你始终在一个控制台中查看文档,而在另一个控制台中按部操作,以免以后发生混乱。因为我们在以前gentoo的安装过程中可能就发生过这种困境——忘记了自己哪个控制台下的系统是chroot后的,而哪个是原始的live环境。

接下去我们开始安装过程了,和gentoo一样,DFS是标准的chroot安装方式。但是gentoo是使用tar来做解包,而DFS的环境是通过一个脚本实现的。

我们先看看第二控制台下官方文档关于安装是怎么写的:

安装

从DFS卷安装遵循以下通用步骤:
一、分区
二、初始化并加载swap
三、格式化并加载文件系统
四、安装基本系统
你可以这么做(假定你已经将你的分区加载到/mnt),使用命令: cdebootstrap sid /mnt file:///opt/packages。

(amd64平台:在“sid”前加一个-a amd64)
而且,我建议当CD已经制作完成后,或由于组件经常变动也许对你不再有用时,直接使用amd64镜像。
五、设置基本系统
你应该把/etc/resolv.conf复制到新的系统中。然后设置新系统的/etc/apt/sources.list以及/etc/network/interfaces。然后chroot /mnt并继续:
1、apt-get update #更新软件树结构
2、i386平台: 安装module-init-tools、grub、ppp
alpha平台: 安装module-init-tools、aboot、ppp
3、安装appropriate、文件系统、对应你的文件系统的工具
4、i386平台: 创建目录/boot/grub;复制/usr/lib/grub/i386-pc/目录下所有文件到/boot/grub

注意: amd64直到最后检查时还没有grub包,不管怎样,你可以自己仿造一个;就是建个文件夹/mnt/boot/grub,从live CD镜像上复制/usr/lib/grub/i386-pc到新系统上的/boot/grub。

alpha平台:查看相关文档
六、安装内核
如果你喜欢DFS CD上的内核,你可以这么做:
进入/mnt/root; dpkg-repack kernel-image-2.6.6
然后chroot /mnt并且dpkg -i /root/kernel-image-*.
七、安装Grub
# grub

grub> root (hd0,0)
grub> setup (hd0)
grub> quit
# update-grub

amd64用户:如果它没有起作用,尝试重新引导DFS cd。当你看见一个蓝色Grub列表时,按"c"键得到一个命令行。然后执行上述grub过程。

八、重启进入新系统

这个安装说明已经足够详细了,而且也够简单明了。

为了方便起见,我们现把硬盘分成一个/和一个swap,这是简单的实验环境。用cfdisk比fdisk好的方面仅在于cfdisk有个图形化的界面,看上去比较简单些。
#cfdisk /dev/hda
#mkreiserfs /dev/hda1 
#mkswap /dev/hda2
我们这里用reiserfs3.6这个强大而安全的文件系统,实际上DFS已经提供了新的reiser4文件系统。你可以自己选用这个文件系统,这比使用ext3文件系统要更好用点。(就暂时不说ext3的坏话了,我是不会再用它的。)

 

接着是加载文件系统,也就是加载格式化好的分区。这个加载的顺序是有讲究的。必须先把/分区挂上去,然后在/分区下建里其他目录,然后依次挂载所有独立分区(如果你有分好几个分区的话)。否则以后的安装可能会有错误。
#mount /dev/hda1 /mnt
#swapon /dev/hda2

swap分区一般可以直接这样启用。
如果你还分了几个分区,请先在/mnt下建几个目录
#mkdir /mnt/boot
#mount /dev/hda? /mnt/boot
#mkdir /mnt/home
#mount /dev/hda? /mnt/home
...
而如果你的硬盘上本来就有分区,并且已经被初始化过,则在mount时加上参数如下:
#mount -t fstype /dev/hd?? /mnt/xxx

强烈建议独立建一个proc目录,并
#mount -t proc none /mnt/proc

到这里,我们可以开始真正把DFS CD上的镜像释放到你的硬盘里了。在gentoo中,我们是这样用的:
#cd /mnt/gentoo
#tar xvjpf /cdrom/stages/stage?-*.tar.gz

而在DFS中,有个更方便的方式:
#cdebootstrap sid /mnt file:///opt/packages
会出现如下安装过程

p: unpackge xxxxx
p: configure xxxxx
...
这个过程结束后,一个基本的debian系统已经安装到你的/mnt目录下了:)
#ls /mnt 可以看见一个完整的新系统
为了新系统中的网络也可以正常使用,我们要把live下的一些状态复制到新系统中。
#cp /etc/resolv.conf /mnt/etc/
#cp /etc/network/interfaces /mnt/etc/network/
#cp /etc/apt/sources.list /mnt/etc/apt/sources.list

#cp /etc/fstab /mnt/etc/fstab
然后进入新环境
#chroot /mnt /bin/bash

由gentoo的经验得知,进入新系统后的第一件事是更新环境变量,使新系统不依赖live-CD,并确认apt源可用
#source /etc/profiles
#nano /etc/sources.list
一般加入如下几行:
deb http://mirrors.geekbone.org/debian sid main

deb http://debian.cn99.net/debian sid main
deb http://debian.okey.net/debian-uo sid misc ustc firefly rareware
deb ftp://ftp.linuxpl.org/fvwm-crystal/debian ./

Tags:Debian From Scratch
关于开源中文网 - 联系我们 - 广告服务 - 网站地图 - 版权声明