曾经写过装Linux的两三篇入门文章,颇受欢迎。今儿来个提高篇,讲几个对于初学者来说炫一点儿的技巧,希望大家喜欢。:) PS:时隔1年没碰Linux,手生了,水平下降了,讲的不到位的地方请大家多多担待。本文记述了偶周日装Linux的真实过程。当然,犯低级错误的那些就略过去不说了,所以,你看这个文章里面写的一番风顺,其实也走了不少弯路,过了不少坎儿。:)
一、准备篇
这次还是装Slackware Linux。为什么我对slackware情有独衷?因为它可定制性强,装的纯,没垃圾。初步安装后只用了1G左右的空间,已经包含了常用的各种开发工具、库、XWindows、和各种服务程序(未启动),不包含具体X(比如KDE,gnome等),这个后面补装dropline-gnome。在这个160G硬盘都不算大的年代,1G左右的空间实在是小的不能在小了,因此也没有做进一步的缩减,实在没有那个必要。
首先去Linuxsir.org的Slackware板块找到slackware的下载地址。这是个在国内Linux界很像vckbase的坛子——自由、免费、人气旺、水平高,积累了很多年,下载地址更新的快,能找到最新版。目前slackware的最新版是10.2。于是从置顶帖的链接跳转去下载CD。
Torrents for 10.2
(linux-2.6.13, KDE, KDEI, TEX)
(Sources part 1, boot and rootdisks, /extra, /testing , Slackware book)
(Sources part 2, ZipSlack, /pasture)
下载后,就着手做以下几个工作:
1.分区
我的分区抓图如下(这个图中的分区信息最好记在纸上,安装过程中会反复用到):
关于Loader的装法有很多种,这只是习惯问题,没有孰优孰劣之说。Loader的装法会影响到如何分区。这次我的Loader打算这样装:用WindowsXP的ntldr去引导放在另一个主分区的boot sector的GRUB,再由GRUB来引导Linux。
所以,我分了一个LinuxBoot区用来挂载/boot,分了一个LinuxRoot区用来放其他所有的东东,那个类型是Linux Swap的分区使用来做虚拟内存的,相当于Windows的winswap.sys或者pagefile.sys。最后LinuxSWbak是用来放下载的安装程序的。这样即使以后要重装Linux,也不需要重新下载这些安装文件了(重装时不格式化这个区,直接挂载即可)。各分区的大小如图所示,没有什么具体要求。如果你拿不准多大好,就分的大些,下次安装就有经验了。
LinuxBoot区用来放内核文件,LinuxBoot区是主分区,所以它的boot sector可以用来装GRUP的state1(参考拙著《》)。由于我们要用ntldr去调用GRUB,所以XP的分区激活,而LinuxBoot不激活。至于其他分区,都分成逻辑分区即可。早期版本的Linux有1024限制,不过早已成为昨日黄花,现在无需担心这个问题了。
2.网络配置信息
用ipconfig命令在Windows下查出,记在本子上。否则等会你用到这些信息了就还要切到Windows中看,麻烦。
3.硬盘直接安装准备工作
做为老鸟的我,自然不能刻盘再安装,那多掉架子啊。:) 再说,刻盘,就用1回,也是浪费国家资源啊。直接把两张ISO的相关内容解压缩到PROGRAM_DSK分区下,等会儿我们用GRUB直接装它。
我们需要的内容一个是两张ISO中的\slackware目录,这是所有的安装文件;另外是bzImage和initrd.img两个文件。其中bzImage是一个压缩的内核,initrd.img是安装环境的root设备,两者的结合是提供一个安装linux的环境。其中bzImage从第一张ISO的\kernels\bare.i中得到,initrd.img从第一张ISO的\isolinux中得到。ISO上的其他内容目前都用不到。
注意:为什么要把ISO解压缩开呢?因为slackware的安装程序不能处理ISO格式文件(而其他发布版如Redhat就可以直接处理,无需解压缩ISO)。其实还有一种安装过程中手动mount ISO的手法,可以不用解压缩,但是因为操作繁琐,这里就不深入讨论了。我的硬盘空间够用,所以怎么省事怎么来。
4.后备
Windows XP安装盘,CD-Linux维护光盘,Linux GRUB启动光盘。高手也难免会失手,多做些准备工作以免后患。实际上,除了Linux GRUB启动光盘外,其他两张光盘在本次安装过程中我并没有用到。
解释一下什么叫做Linux GRUB启动光盘。就是说启动的时候有GRUB引导Linux界面的启动盘,一般D盘摊上有高手提供的多功能启动修复盘中就很容易碰到带这种功能的光盘,另外网上也有很多做盘的高手提供这种光盘的镜像下载。如果没有也不用着急,去找一下Grub for Dos 0.94,按照readme做张DOS启动盘,在DOS中启动Grub也是一种不错的替代品。
二、安装Linux
1.引导进入安装环境
用GRUB光盘引导系统,进入GRUB界面。GRUB可以看作是一个解释环境,能动态解释用户的命令。在GRUB环境中按'C'键就切换到了GRUB Console环境(请注意看GRUB的提示信息,上面都写的有,比如按'e'是编辑当前菜单,按'b'是boot等等),然后输入下面的命令引导进入Slackware的安装环境。
root=(hd0,7)
kernel /isolinux/bzImage devfs=nomount vga=normal load_ramdisk=1 prompt_ramdisk=0 ramdisk_size=22000 root=/dev/ram0 rw
initrd /isolinux/initrd.img
boot
这里有几点需要说明。第一点就是Linux和Grub是如何表示某一个硬盘分区的。Linux是用诸如/dev/hda1的形式来表示某个分区。所有分区都分别作为一个设备挂载到/dev目录下,可以当作文件来访问。hd的意思是硬盘,hda的意思是第一块硬盘,如果有多个硬盘则按照a,b,c,d的顺序排列。注意,有可能你只有一块硬盘,但是却是hdb而不是hda。一般的主板都有两个IDE口,每个IDE口可以挂一个主设备(Prime Device),一个从设备(Slave Device)。那么hda~hdd的命名是这样的:
IDE1 Prime /dev/hda
IDE1 Slave /dev/hdb
IDE2 Prime /dev/hdc
IDE2 Slave /dev/hdd
hda1中的1是这样计数的:每一块硬盘可以有4个主分区,其中M$的扩展分区的类型也是一个主分区。M$把一个扩展分区划分为多个逻辑驱动器。一个分区的类型是主还是逻辑可以在上图PQ的信息中看出来。逻辑驱动器由于不是主分区,所以没有boot sector(逻辑驱动器其实是链表结构),因此不能做为引导分区(不能被BIOS引导)。4个主分区分别记做1,2,3,4,如果只有2个主分区,那么1~4中被占用两个编号,剩余的两个也会空着。也就是说逻辑驱动器总是从5开始编号的。所以,我上面的分区其实被编号为:
分区 |
Linux 表示法 |
GRUB 表示法 |
WINXP |
/dev/hda1 |
(hd0,0) |
LinuxBoot |
/dev/hda3 |
(hd0,2) |
Entend |
/dev/hda4
|
(hd0,3)
|
|
Linux Swap |
/dev/hda5 |
(hd0,4) |
|
LinuxRoot |
/dev/hda6 |
(hd0,5) |
|
LinuxSWbak |
/dev/hda7 |
(hd0,6) |
|
PROGRAM_DSK |
/dev/hda8 |
(hd0,7) |
|
MYBAK_DISK |
/dev/hda9 |
(hd0,8) |
GRUB的分区表示法跟Linux表示法不同,但大体相似。GRUB用0~3表示Linux表示法的a~d,分区也是从0开始计数的。请在上表中跟Linux表示法对比一下。
所以,上面的4个命令的含义分别是:
第一条命令root=(hd0,7) 的意思是把(hd0,7)也就是PROGRAM_DSK指定为根路径,下面命令中如果用到了/来表示路径,都是从PROGRAM_DSK的根目录开始。
第二条命令指定kernel是/isolinux/bzImage,这是创建安装环境的Linux引导内核。bzImage后面的是传给内核的引导参数。大体意思是指定了安装环境的root设备被挂载到一个内存盘上/dev/ram0上。和第一条命令不同的是,第一条命令的root是根路径的意思,第二条命令的root是Linux引导时的root设备。
第三条命令指定initrd是/isolinux/initrd.img。initrd的全称是initialize root device,就是初始化时的根设备,也就是要被丢到/dev/ram0中的那个根设备。
第四条命令启动引导动作。
2. 安装包
上一步执行boot操作后,系统会重新启动,然后切换到Linux的安装console环境。执行setup,进入安装主界面。文本的用户交互界面,见解而又容易理解,这正是我喜欢的地方。绝大多数地方都可以故名思意的操作,没有什么困难,这里我就不多述,一个很有用的参考就是Linuxsir上这篇有抓图的。我着重讲讲source、select这两步和后续的一些要点。
source这一步是选择安装的盘的位置。我们是从硬盘安装的,所以选择“Install from hard driver partition“。然后就是填写所在的分区,我这里是/dev/hda8。如果你记不清楚了也无需着急,直接回车,然后会自动弹出当前分区信息的列表出来。安装目录填写为/slackware。这里的/slackware就是Program_DSK这个分区(/dev/hda8)的/slackware目录,上面有图说明的。如果填写无误就会进入下一步,否则会有错误信息提示。
select这个环节是让你定制安装包。Slackware把安装包分为几个大的类,如必装的内核,基本工具,基本开发工具,X,网络服务等等。每一类有细化为很多包,可以由用户进一步定制。我的做法是,选择大的类,而小的包则按照默认的装。这样不会占用太多空间,不常用的东东都不必安装,而又不会缺少具体的包而在后续使用过程中为之头疼。第一次装也不必在这一步揪的很细,Linux的好处就是即便装了包也可以卸载的很干净,即便是没装也可以在后续操作中补装上。我去掉了E,K,KDE,KDEI,T,TCL,XAP,Y这些包,其他全装。基本的内核和工具是要装的,内核开发工具也要装(不然无法编译某些驱动,Linux上自己编译比较偏门的驱动是件很平常的事),X是要装的,但是KDE等X应用都不装,留带后续装网上的最新发布版。:) 选择完大类之后会提示你用何种方式安装具体的包,偶选择newbie,这样安装程序会用默认的包分组方式来装,无需我们费心了。
有一步很重要:它问你是否启用hotplug。如果使用了板载声卡、显卡、网卡的一定要装,不然后续过程中可能无法安装驱动。这一点我栽了跟头,捣鼓了1个小时,最后还是把hotplug开启了才装上网卡驱动。到现在都不明白为什么。:( 如果有那位高手知道的话,请指点一下。
Slackware默认的loader是lilo。这是最经典的引导器,功能简单,上手方便。可惜偶贪恋GRUB的强大维护能力,所以早已弃lilo不用。:) 装lilo这步我直接跳过,后面讲如何补装GRUB,如何在ntldr中挂上GRUB引导Linux。
三、引导篇
经过上面的安装,Slackware Linux已经驻入硬盘了,但是,它还无法直接进入。:) 就好比深山中埋藏的宝藏,非要打开进入的通道不可。
有道是难者不会、会者不难,loader这层纸捅破了也是不值一钱。首先偶把grub装到LinuxBoot分区的boot sector上,LinuxBoot分区是个主分区,所以可以这么干,这一点上面已经说过了。首先准备好grub的安装包,偶是直接到Linux公社下载一个,然后在Linux下访问Window分区把它装上。这里大概介绍一下步骤,详细内容及原理参见《》。
用GRUB启动光盘启动,看到GRUB启动菜单后,按C进入grub console,输入:
kernel (hd0,2)/vmlinuz ro root=/dev/hda6
然后输入b引导即进入我们装好的Linux了。
这里简要说明一下,首先
ro的意思是readonly,挂载root设备必须挂载为只读的,不然会破坏文件系统。这个原理我说不清,请大侠们指教。vmlinuz是指向真实的链接,由于在安装过程中我们把/dev/hda3挂到/boot上了,所以内核和vmlinuz链接会由安装程序自动创建到这个分区里面。上述这行命令的含义跟安装的时候的命令并无大不同,都是指定内核和根设备位置。只不过安装时的内核和根设备与装好的系统的内核和根设备不同罢了。弄明白这个道理,相信以后在Linux下装另外版本的Linux、或者自己交叉编译Linux内核都不成问题拉。
引导入Linux,
建一个/boot/grub目录,把grub的文件copy进去:
stage1
stage2
e2fs_stage1_5
fat_stage1_5
ffs_stage1_5
jfs_stage1_5
minix_stage1_5
reiserfs_stage1_5
vstafs_stage1_5
xfs_stage1_5
创建menulst:
#-----------------------------------------
default 1
timeout 0
#-------------------------------
#-- Slackware Linux 10 kernel 2.4.26
title Slackware Linux 10 kernel 2.4.26
kernel (hd0,2)/vmlinuz ro root=/dev/hda6
boot
#-----------------------------------------
然后执行shutdown -r now重启Linux,在用GRUB启动光盘启动系统,进入grub console后执行:
grub>install (hd0,2)/grub/stage1 (hd0,2) (hd0,2)/boot/grub/stage2 p (hd0,0)/grub/menulst
至此,GRUB就装入/dev/hda3的boot sector了。再次用GRUB启动光盘进入Linux,把WINXP分区挂上,执行dd命令把/dev/hda3的boot sector的写入到XP分区(C盘)的linboot.bin中:
md /mnt/hd
mount -t vfat /dev/hda1 /mnt/hd
dd if=/dev/hda3 of=/mnt/hd/linboot.bin bs=512 count=1
重启系统进入XP,打开C盘的boot.ini文件,修改为:
[boot loader]
timeout=5
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect
c:\linboot.bin="Slackware 10.2 kernel 2.4.31 - GRUB"
至此,引导系统安装完毕。重启系统后,WINDOWS启动菜单多了一项Slackware 10.2 kernel 2.4.31 - GRUB, 选择它就可以进入Linux拉。
小节一下:上面的过程基本上是一个Linux的完整安装过程了,虽然没有装Gnome等桌面系统。这个帖子太长了,偶也过于懒惰,所以才一拖再拖。今天把这篇blog草草结束,留待日后闲暇时再好好润色、添枝加叶吧。至于如何装Gnome和桌面应用,我准备另起一篇炉灶来写它。:)
-------------
乾坤一笑 写于2006年05月04日 转载请标明出处和原文链接
--------------------next---------------------