📄 linux_step_in.htm
字号:
<TR>
<TD class=code style="FONT-SIZE: 9pt"
bgColor=#e6e6e6><PRE><CCID_CODE>#mv linux linux-2.4.0test8
#ln -s linux-2.4.0test8 linux</CCID_CODE></PRE></TD></TR></TBODY></TABLE></CCID_NOBR></CENTER>
<P> 这样我们也有了一个名为linux的符号链接,就不用担心以后会把它覆盖掉了(也许你会觉得重新建立linux的符号链接没有必要,但实际上这是必不可少的,下文中会有介绍)。如果你还下载了patch文件,比如patch-2.4.0test8,你就可以进行patch操作(下面假设patch-2.4.0test8已经位于/usr/src目录下了,否则你需要先把该文件拷贝到/usr/src下):
</P>
<CENTER><CCID_NOBR>
<TABLE cellSpacing=0 borderColorDark=#ffffff
cellPadding=2 width=400 align=center
borderColorLight=black border=1>
<TBODY>
<TR>
<TD class=code style="FONT-SIZE: 9pt"
bgColor=#e6e6e6><PRE><CCID_CODE>#patch -p0 < patch-2.4.0test8</CCID_CODE></PRE></TD></TR></TBODY></TABLE></CCID_NOBR></CENTER>
<P> 现在,我们已经把内核源程序升级到最新版本了,下面就让我们开始内核编译的旅程吧。</P>
<P> <STRONG>准备工作</STRONG><BR><BR> 通常要运行的第一个命令是:
</P>
<P></P>
<CENTER><CCID_NOBR>
<TABLE cellSpacing=0 borderColorDark=#ffffff
cellPadding=2 width=400 align=center
borderColorLight=black border=1>
<TBODY>
<TR>
<TD class=code style="FONT-SIZE: 9pt"
bgColor=#e6e6e6><PRE><CCID_CODE>#cd /usr/src/linux;make mrproper</CCID_CODE></PRE></TD></TR></TBODY></TABLE></CCID_NOBR></CENTER>
<P> 该命令确保源代码目录下没有不正确的.o文件以及文件的互相依赖。由于我们使用刚下载的完整的源程序包进行编译,所以本步可以省略。而如果你多次使用了这些源程序编译内核,那么最好要先运行一下这个命令。
<BR><BR> 确保/usr/include/目录下的asm、linux和scsi等链接是指向要升级的内核源代码的。它们分别链向源代码目录下的真正的、该计算机体系结构(对于PC机来说,使用的体系结构是i386)所需要的真正的include子目录。
<BR><BR> 如:asm指向/usr/src/linux/include/asm-i386等。若没有这些链接,就需要手工创建,按照下面的步骤进行:
</P>
<CENTER><CCID_NOBR>
<TABLE cellSpacing=0 borderColorDark=#ffffff
cellPadding=2 width=400 align=center
borderColorLight=black border=1>
<TBODY>
<TR>
<TD class=code style="FONT-SIZE: 9pt"
bgColor=#e6e6e6><PRE><CCID_CODE># cd /usr/include/
# rm -r asm linux scsi
# ln -s /usr/src/linux/include/asm-i386 asm
# ln -s /usr/src/linux/include/linux linux
# ln -s /usr/src/linux/include/scsi scsi</CCID_CODE></PRE></TD></TR></TBODY></TABLE></CCID_NOBR></CENTER>
<P> 这是配置非常重要的一部分。删除掉/usr/include下的asm、linux和scsi链接后,再创建新的链接指向新内核源代码目录下的同名的目录。这些头文件目录包含着保证内核在系统上正确编译所需要的重要的头文件。现在你应该明白为什么我们上面又在/usr/src下"多余"地创建了个名为linux的链接了吧?</P>
<P> <STRONG>配置
</STRONG><BR><BR> 接下来的内核配置过程比较烦琐,但是配置的适当与否与日后Linux的运行直接相关,有必要了解一下一些主要的且经常用到的选项的设置。<BR><BR> 配置内核可以根据需要与爱好使用下面命令中的一个:</P>
<CENTER><CCID_NOBR>
<TABLE cellSpacing=0 borderColorDark=#ffffff
cellPadding=2 width=400 align=center
borderColorLight=black border=1>
<TBODY>
<TR>
<TD class=code style="FONT-SIZE: 9pt"
bgColor=#e6e6e6><PRE><CCID_CODE>#make config(基于文本的最为传统的配置界面,不推荐使用)
#make menuconfig(基于文本选单的配置界面,字符终端下推荐使用)
#make xconfig(基于图形窗口模式的配置界面,Xwindow下推荐使用)
#make oldconfig(如果只想在原来内核配置的基础上修改一些小地方,会省去不少麻烦)</CCID_CODE></PRE></TD></TR></TBODY></TABLE></CCID_NOBR></CENTER>
<P> 这三个命令中,make
xconfig的界面最为友好,如果你可以使用Xwindow,那么就推荐你使用这个命令。
<BR><BR> 如果你不能使用Xwindow,那么就使用make
menuconfig好了。界面虽然比上面一个差点,总比make config的要好多了。
<BR><BR> 选择相应的配置时,有三种选择,它们分别代表的含义如下: </P>
<CENTER><CCID_NOBR>
<TABLE cellSpacing=0 borderColorDark=#ffffff
cellPadding=2 width=400 align=center
borderColorLight=black border=1>
<TBODY>
<TR>
<TD class=code style="FONT-SIZE: 9pt"
bgColor=#e6e6e6><PRE><CCID_CODE>Y--将该功能编译进内核
N--不将该功能编译进内核
M--将该功能编译成可以在需要时动态插入到内核中的模块</CCID_CODE></PRE></TD></TR></TBODY></TABLE></CCID_NOBR></CENTER>
<P> 如果使用的是make
xconfig,使用鼠标就可以选择对应的选项。如果使用的是make
menuconfig,则需要使用空格键进行选取。你会发现在每一个选项前都有个括号,
但有的是中括号有的是尖括号,还有一种圆括号。
<BR><BR> 用空格键选择时可以发现,中括号里要么是空,要么是"*",而尖括号里可以是空,"*"和"M"这表示前者对应的项要么不要,要么编译到内核里;后者则多一样选择,可以编译成模块。而圆括号的内容是要你在所提供的几个选项中选择一项。
<BR><BR> 在编译内核的过程中,最烦杂的事情就是这步配置工作了,很多新手都不清楚到底该如何选取这些选项。实际上在配置时,大部分选项可以使用其缺省值,只有小部分需要根据用户不同的需要选择。
<BR><BR> 选择的原则是将与内核其它部分关系较远且不经常使用的部分功能代码编译成为可加载模块,有利于减小内核的长度,减小内核消耗的内存,简化该功能相应的环境改变时对内核的影响;不需要的功能就不要选;与内核关心紧密而且经常使用的部分功能代码直接编译到内核中。下面就让我们对常用的选项分别加以介绍。
</P>
<P> 1. Code maturity level options
<BR><BR> 代码成熟等级。此处只有一项:prompt for development
and/or incomplete
code/drivers,如果你要试验现在仍处于实验阶段的功能,比如khttpd、IPv6等,就必须把该项选择为Y了;否则可以把它选择为N。<BR><BR> 2.
Loadable module support
<BR><BR> 对模块的支持。这里面有三项:<BR><BR> Enable
loadable module
support:除非你准备把所有需要的内容都编译到内核里面,否则该项应该是必选的。<BR><BR> Set
version information on all module
symbols:可以不选它。<BR><BR> Kernel module
loader:让内核在启动时有自己装入必需模块的能力,建议选上。</P>
<P> 3. Processor type and features
<BR><BR> CPU类型。内容蛮多的,不一一介绍了,有关的几个如下:<BR><BR> Processor
family:根据你自己的情况选择CPU类型。<BR><BR> High Memory
Support:大容量内存的支持。可以支持到4G、64G,一般可以不选。<BR><BR> Math
emulation:协处理器仿真。协处理器是在386时代的宠儿,现在早已不用了。<BR><BR> MTTR
support:MTTR支持。可不选。 <BR><BR> Symmetric
multi-processing
support:对称多处理支持。除非你富到有多个CPU,否则就不用选了。<BR><BR> 4.
General setup
这里是对最普通的一些属性进行设置。这部分内容非常多,一般使用缺省设置就可以了。下面介绍一下经常使用的一些选项:<BR><BR> Networking
support:网络支持。必须,没有网卡也建议你选上。 PCI
support:PCI支持。如果使用了PCI的卡,当然必选。<BR><BR> PCI
access
mode:PCI存取模式。可供选择的有BIOS、Direct和Any,选Any吧。<BR><BR> Support
for hot-pluggabel
devices:热插拔设备支持。支持的不是太好,可不选。<BR><BR> PCMCIA/CardBus
support:PCMCIA/CardBus支持。有PCMCIA就必选了。<BR><BR> System
V IPC<BR><BR> BSD Process Accounting
<BR><BR> Sysctl
support:以上三项是有关进程处理/IPC调用的,主要就是System
V和BSD两种风格。如果你不是使用BSD,就按照缺省吧。<BR><BR> Power
Management support:电源管理支持。 Advanced Power
Management BIOS support:高级电源管理BIOD支持。<BR></P>
<P></P>
<P> 5. Memory Technology
Device(MTD)<BR><BR> MTD设备支持。可不选。<BR><BR> 6.
Parallel port
support<BR><BR> 串口支持。如果不打算使用串口,就别选了。<BR><BR> 7.
Plug and Play configuration
<BR><BR> 即插即用支持。虽然Linux对即插即用目前支持的不如Windows好,但是还是选上吧,这样你可以拔下鼠标之类的体验一下Linux下即插即用的感觉。<BR><BR> 8.
Block
devices<BR><BR> 块设备支持。这个就得针对自己的情况来选了,简单说明一下吧:<BR><BR></P>
<CENTER><CCID_NOBR>
<TABLE cellSpacing=0 borderColorDark=#ffffff
cellPadding=2 width=400 align=center
borderColorLight=black border=1>
<TBODY>
<TR>
<TD class=code style="FONT-SIZE: 9pt"
bgColor=#e6e6e6><PRE><CCID_CODE>Normal PC floppy disk support:普通PC软盘支持。这个应该必选。
XT hard disk support:
Compaq SMART2 support:
Mulex DAC960/DAC1100 PCI RAID Controller support:RAID镜像用的。
Loopback device support:
Network block device support:网络块设备支持。如果想访问网上邻居的东西,就选上。
Logical volume manager(LVM)support:逻辑卷管理支持。
Multiple devices driver support:多设备驱动支持。
RAM disk support:RAM盘支持。</CCID_CODE></PRE></TD></TR></TBODY></TABLE></CCID_NOBR></CENTER>
<P> 9. Networking options
<BR><BR> 网络选项。这里配置的是网络协议。内容太多了,不一一介绍了,自己看吧,如果你对网络协议有所了解的话,应该可以看懂的。如果懒得看,使用缺省选项(肯定要选中TCP/IP
networking哦)就可以了。
<BR><BR> 让我们看看,TCP/IP、ATM、IPX、DECnet、Appletalk……支持的协议好多哦,IPv6也支持了,Qos
and/or fair
queueing(服务质量公平调度)也支持了,还有kHTTPd,不过这些都还在实验阶段。
<BR><BR> 10. Telephony Support
<BR><BR> 电话支持。这个是什么东东?让我查查帮助,原来是Linux下可以支持电话卡,这样你就可以在IP上使用普通的电话提供语音服务了。记住,电话卡可和modem没有任何关系哦。
</P>
<P> 11. ATA/IDE/MFM/RLL
support<BR><BR> 这个是有关各种接口的硬盘/光驱/磁带/软盘支持的,内容太多了,使用缺省的选项吧,如果你使用了比较特殊的设备,比如PCMCIA等,就到里面自己找相应的选项吧。</P>
<P> 12. SCSI support
<BR><BR> SCSI设备的支持。我没有SCSI的设备,所以根本就不用选,如果你用了SCSI的硬盘/光驱/磁带等设备,自己找好了。<BR><BR> 13.
IEEE 1394(FireWire)support
这个是什么?低版本的没有见过,看看帮助再说。原来是要Fireware硬件来提高串行总线的性能,我没有,不选了。<BR><BR> 14.
I2O device support
<BR><BR> 这个也不清楚,帮助里说是这个需要I2O接口适配器才能支持的,在智能Input/Output(I2O)体系接口中使用,又是要硬件,不选了。
<BR><BR> 15. Network device support
<BR><BR> 网络设备支持。上面选好协议了,现在该选设备了,可想而知,内容肯定多得很。还好还好,里面大概分类了,有ARCnet设备、Ethernet(10
or 100 Mbit)、Ethernet(1000Mbit)、Wireless
LAN(non-hamradio)、Token Ring device、Wan
interfaces、PCMCIA network device
support几大类。<BR><BR> 我用的是10/100M的以太网,看来只需要选则这个了。还是10/100M的以太网设备熟悉,内容虽然多,一眼就可以看到我所用的RealTeck
RTL-8139 PCI Fast Ethernet Adapter
support,为了免得麻烦,编译到内核里面好了,不选M了,选Y。耐心点,一般说来你都能找到自己用的网卡。如果没有,你只好自己到厂商那里去要驱动了。
<BR><BR> 16. Amateur Radio support
<BR><BR> 又一个不懂的,应该是配置业余无线广播的吧,没有,不要了。
<BR><BR> 17. IrDA(infrared)support
<BR><BR> 这个要红外支持,免了。<BR><BR> 18. ISDN
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -