LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1291|回复: 3

亲手实现Debian的安装(from binary/source)

[复制链接]
发表于 2005-10-3 00:46:20 | 显示全部楼层 |阅读模式
用久了debian,就会有一种掌控电脑的感觉。但在很长一段时间中,debianer们还是无法掌控操作系统初始安装的那一段。以后,出现了dfs,不过似乎资料不多,估计安装也比较费时,也就放弃了。这次,硬盘出了一些问题,无数文件去了lost+found,才不得不重装一下系统了,顺便玩点花样。

      言归正传,要亲手安装debian,需要的东西并不多:
(1)任何一种可以启动计算机的方式:光盘(如livecd、knoppix等)、软盘、硬盘上已安装的操作系统(别告诉我那个系统是window$)、网络等等。
(2)启动以后需要的工具:对于from source安装需要基本的编译环境,而from binary只需要有ar就可以了。当然你喜爱的编辑器也是不可少的,另外可能还需要一些常用命令来挂载硬盘上的分区、创建目录等。如果你的启动介质当中没有需要的东西的话,可以启动以后下载gentoo的stage。
(3)足够的硬盘空间。我们归根结底还是要安装一个debian。如果要从源代码安装的话,可能需要一些额外的空间。除了容量之外,几乎没有其它限制。它可以是任何一种文件系统,只要你的启动介质能够识别就行(当然安装完以后也得让linux内核识别)。上面也可以有任何你想要保留的文档,除非新安装的软件包把它替换掉了。只要你不怕系统太杂乱,所有文件都可以留下。但/var/lib/dpkg、/var/lib/apt、/var/cache/apt等应当被清理掉,否则会导致冲突。
(4)debian源。可以是光盘的、网络的,或其它任何的,但你启动以后应当能够立即使用它们。

      好,准备好的话我们就可以开始了。
(0)为你的硬盘分区、格式化,或者在将要安装的分区上删除不想看到的文件。这些不属于本文讨论的范畴,你也可以什么都不做。

(1)用你的启动介质启动,挂上要安装的分区。需要下载gentoo的stage的话,可以解开到这块分区上面,并做chroot。

(2)现在我们的目标非常明确,只要搞定dpkg的安装,问题就解决了一大半。你可以按照你的计划从源代码或二进制代码安装,前者可能比较费时。

[源代码]从源代码安装,简单地说就是从debian源下载源码包并编译之。总共可能需要十多个包,不算太多吧?不过编译的话就说不准了,慢慢来吧。

[二进制]从二进制代码安装牵涉到deb包的打包方式问题。其实debian打包非常简单。把要安装的文件打包成data.tar.gz,把控制文件打包成control.tar.gz,写个debian-binary(没发现这个文件有什么作用,里面只有一个版本号),最后用ar打个包,就大功告成了。
      现在,把你需要包下载下来,用ar -x打开,就看到debian-binary、data.tar.gz、control.tar.gz三个文件。
      把data.tar.gz打开,cp -ir到根目录。这些就是系统需要的二进制文件了。之所以用-i,是想在覆盖之前提示一下,免得追悔莫及。
      再把control.tar.gz打开,你会得到一些文件:
md5sums: 每个文件的md5sum,有需要的话可以检查一下。
control: 包的信息,也就是apt-cache show时候显示的东西。
conffiles: 可能会导致冲突的文件。
shlibs: 似乎是关于依赖性关系的吧?
preinst、postinst、prerm、postrm: 从文件名就可以看出,分别是安装前、安装后、卸载前、卸载后运行的脚本。所谓安装/卸载,也就是把data.tar.gz里面的东西解压缩/删除的动作。不过由于现在情况有些特殊,一些deb包操作无法进行,因此你可以稍微阅读一下,做一下你能做的事,不做也无所谓,反正一会儿要用dpkg再装一遍的。

      在安装dpkg之前,你可能先要安装的软件包有:libc6、coreutils or textutils。但在此之前,为了获得一个可以运行的bash环境,你可能需要安装libncurses5、base-files、base-passwd、passwd、libpam0g、login、libpam-modules、libpam-runtime、libdb4.3、bash等。这些也可以在packages.debian.org上面查到,包括报告某个文件缺失。但记住,你现在安装的所有包以后都是要用dpkg重新安装的(对于源代码安装,可能在安装完整个系统以后也需要重新编译一下),因此可以不必太认真,只要不出错就可以了。
      做完这些以后,chroot一下,应该可以看到bash环境开始运行了。用dpkg安装一个软件包,看看能否正常工作。一般来说,会有许多问题,至少/var/lib/dpkg、/etc/dpkg得被建立,里面的几个文件如/var/lib/dpkg/available、diversions、status、/etc/dpkg/dpkg.cfg等得touch一下。其它的,具体看你运行的结果,一般都会指明问题所在的。

(3)接下去,我们就可以用dpkg来安装软件包了(从源代码安装的该干嘛干嘛去),但手动满足依赖性的情况要等到apt被安装以后。你可能还得艰难地安装libgcc1、gcc-4.0-base、bzip2、gnupg、libbz2-1.0、libldap2、libreadline5、libusb-0.1-4、zlib1g、makedev等。同时,为了让dpkg可以很好地运行各种安装脚本,你还得安装perl和awk。等这些都安排停当以后,apt-get update一下,是不是感觉很爽?记得把先前安装过的软件包都reinstall一下。

(4)到了最后阶段了,只要解决了启动问题,就万事大吉了。
      先写配置文件(由于本人沿用了原来的/etc,所以这部分可能不够全面,请大家依照实际情况来做,也可以查一下网上资料)。首先,修改/etc/fstab,把你安装的分区、swap分区以及/proc写上。另外,组、用户也应当被建立(这些在安装base-passwd的时候应该会完成)。其他的看情况随机应变吧。
      然后安装一些必要的软件包:
udev: 在系统启动的时候接管/dev。
sysv-rc、rcconf: 系统启动脚本。
gzip、zip、tar: 万一要自己解包了用。
net-tools、ifupdown、dhcp3-client: 网络安装用。
wget: 万一要自己下包了用。
grep、more、less等,及vim或nano: 自己平时用着顺手的就可以了。
grub或lilo: lilo安装比较简单,后面主要介绍grub。
linux kernel: 这是你自己的事情了,这里不作介绍。
      建立几个必要的/dev设备:hdax或其它、null、initctl、console、stdin、stdout、stderr等,照着你找得到的/dev用mknod建立就行了。
      配置grub:用grub-install安装grub,然后grub,root(hdx,x),setup(hdx),quit装载到主引导扇区,最后从/usr/share/doc/grub/examples/menu.lst拷到/boot/grub,作一点修改就可以了。
      好了,重新启动,为安全起见,先进single,看看有没有问题。可能内核/系统会提示少一些软件包或者文件,看具体情况重启安装就可以了。

(5)配置好你的debian源(网络安装的配置好网络),看看apt-get能否使用了。如果不出意外的话,应该可以开始安装软件包了。至此,本文的目的已经达到,后面安装软件包的问题就不归我管了。回头看一下,应该还不算太艰辛吧(源代码安装的同志应该是辛苦了,应该至少有三天了吧?),呵呵,都和我一样是闲人啊。顺祝各位国庆长假快乐。
发表于 2005-10-3 09:32:45 | 显示全部楼层
那还不如gentoo呢,系统是用的,不是折腾的
回复 支持 反对

使用道具 举报

发表于 2005-10-3 10:11:40 | 显示全部楼层
同感!一个系统是否真的流行就看它的易用性了。除了部分人是专门研究系统底层外,我想大部人使用电脑都应该是以应用为主的。因此,一个系统是否受到大部人接受应该是看是否可以经过简单的安装就可以立即使用,且出现问题后是否可以比较容易找到解决的途径和办法。
回复 支持 反对

使用道具 举报

发表于 2005-10-3 19:06:04 | 显示全部楼层
摸索出来的东东,总是应该给予肯定的。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表