-
#device mountpoint filesystem options dump checkpassno
-
/dev/hda6 / ext3 defaults 1 1
-
none /dev/pts devpts gid=5,mode=620 0 0
-
none /dev/shm tmpfs defaults 0 0
-
none /proc proc defaults 0 0
-
none /sys sysfs defaults 0 0
-
/dev/hda5 swap swap defaults 0 0
-
/dev/hda1 /mnt/ubuntu ext3 defaults 0 0
-
/dev/hda2 /mnt/winC ntfs locale=zh_CN.GB18030,umask=0 0 0
-
/dev/hda7 /mnt/winD vfat iocharset=cp936,umask=0,exec,rw 0 0
-
/dev/hda8 /mnt/winH ntfs locale=zh_CN.GB18030,umask=0 0 0
-
/dev/hdc /mnt/cdrom-hdc udf,iso9660 iocharset=cp936,user,noauto 0 0
重新编译Linux内核
最近我们在搞系统软件课程设计,一共有七个实验,其中第一个不用实际做东西,也就是一共有六个实验需要做,我一周多一点就完成了三个实验,现在只剩下三个了。我估计这个学期还没结束就可以全部搞定了。其中有一个实验是要为Linux添加新的系统调用,这其中就需要重新编译Linux内核。
虽然我用Linux也有不短的时间了,但是重新编译内核还是头一回。我下载的版本是Linux 2.6.25,这个内核比我原来的内核还新一些。我照着网上说的,先make xconfig,Linux内核就会利用源代码中一个基于Qt 3.x的源码配置器的源代码还编译生成一个源码配置器,这个源码配置器还很复杂,选项很多。我先按照它的默认设置。生成了一个配置文件。然后敲入make,然后开始编译了,Linux内核编译的时间非常长,大概有一个小时吧。(其实Qt 4.4更长,达四个多小时)。
编译完内核,就会在源代码根目录下生成一个叫vmlinux的文件,那就是Linux的内核了,再make bzImage,这时将会生成一个bz2格式压缩的内核,除了内核本身处,还得编译内核的模块,make modules就行了,然后再写make modules_install就可以了。说起来简单,做起来其实有一番麻烦的。即使我每一步都小心翼翼,总是有一些问题。事实上,从网上搜索到的很多都不能完全照搬,例如很多网上资料说到先make dep,但是我输入这一命令时,程序却提醒我已经不必了。而且我下载的安装将已经非常智能了,我原先以为还要手工做初始化内存盘映像,还要手工复制内核并修改grub的配置文件,现在已经都不需要了,程序会自动生成初始化内存盘映像和复制文件,还会自动将新的内核加入grub的引导菜单。
现在想起来网上的资料真是很乱,搜来搜去也就那几篇,而且转贴的网站一般都有一堆恶心的广告,排版又非常差。
Linux里的配置文件
我用了Linux也有一些时间了,Linux里使用许多风格迥异的配置文件,而且与相关的应用程序紧密配合,有的如fstab的文件,这是文件分区挂载的配置文件,我的如下:
主要是通过一些制表符和空格分开的组成,每个字段按一定的顺序排列,每列都有相应的意义,特别适合用awk来分析。有的如Grub的配置文件:
-
# grub.conf generated by MagicInstaller.
-
-
# Note that you do not have to rerun grub after making changes to this file.
-
default=1
-
timeout=11
-
gfxmenu=(hd0,5)/boot/grub/message
-
title Ubuntu
-
root (hd0,0)
-
kernel /boot/vmlinuz-2.6.22-14-generic root=UUID=61e2d63b-07fa-4a31-9309-4323d19a8641 ro quiet splash locale=zh_CN
-
initrd /boot/initrd.img-2.6.22-14-generic
-
title Microsoft Windows XP
-
rootnoverify (hd0,1)
-
chainloader +1
-
title MagicLinux
-
root (hd0,5)
-
kernel /boot/vmlinuz-2.6.22.12-smp ro root=/dev/hda6 vga=791 splash quiet
-
initrd /boot/initrd-2.6.22.12-smp.img
-
title MagicLinux (Single Mode)
-
root (hd0,5)
-
kernel /boot/vmlinuz-2.6.22.12-smp single ro root=/dev/hda6 vga=791 splash quiet
-
initrd /boot/initrd-2.6.22.12-smp.img
各个启动操作系统的都有相应的启动参数,这些参数按行分开,而不是像fstab那样放在一列,各操作系统以title XXX分开,其它的如默认选择则以等式在最前面。还有的如X Window的xorg.conf,因此太长,我只帖了部分:
-
Section "Monitor"
-
-
# 1440x900 @ 60.00 Hz (GTF) hsync: 55.92 kHz; pclk: 106.47 MHz
-
Identifier "Monitor0"
-
VendorName "Monitor Vendor"
-
ModelName "LAW982"
-
HorizSync 30.0 - 82.0
-
VertRefresh 56.0 - 76.0
-
ModeLine "1440x900_60.00" 106.5 1440 1520 1672 1904 900 901 904 932 -hsync +vsync
-
EndSection
-
-
Section "Device"
-
Identifier "Videocard0"
-
Driver "sis"
-
VendorName "Videocard vendor"
-
BoardName "Silicon Integrated Systems [SiS] 661/741/760 PCI/AGP or 662/761Gx PCIE VGA Display Adapter"
-
VideoRam 32768
-
EndSection
这个则将各类的设备配置有相关的Section XXX与EndSection相分开,里面则由相关的配置项与配置参数成对写在一行。这三个文件都是Linux相当重要的文件,它们之间的不同,我觉得完全是历史的原因,而事实上都完全可以使用统一的形式,POSIX标准可能主要为了兼容的原因,没有将它们统一。这些风格迥异的配置文件,也表现了Unix的自由和风格多样性吧,当然从坏的方面来讲,也说明了Unix的混乱。