📄 这是一篇比较详尽的内核编译说明!!!!.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0049)http://www.heblinux.org/view.php?skin=art&ID=3559 -->
<HTML><HEAD><TITLE>linuxbyte</TITLE>
<META http-equiv=Content-Language content=zh-cn>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<STYLE type=text/css>A:link {
COLOR: #000000; TEXT-DECORATION: none
}
A:visited {
COLOR: #000000; TEXT-DECORATION: none
}
A:hover {
TEXT-DECORATION: underline
}
BODY {
FONT-SIZE: 12px; SCROLLBAR-ARROW-COLOR: #395d81; BACKGROUND-COLOR: #ffffff
}
TABLE {
BORDER-RIGHT: #889093 1px solid; BORDER-TOP: #889093 1px solid; FONT-SIZE: 9pt; BORDER-LEFT: #889093 1px solid; COLOR: #000000; BORDER-BOTTOM: #889093 1px solid
}
TEXTAREA {
BORDER-RIGHT: #666666 1px solid; BORDER-TOP: #666666 1px solid; FONT-WEIGHT: normal; FONT-SIZE: 12px; BORDER-LEFT: #666666 1px solid; COLOR: #000000; BORDER-BOTTOM: #666666 1px solid; FONT-FAMILY: Verdana, Tahoma, Arial; BACKGROUND-COLOR: #f8f8f8
}
INPUT {
BORDER-RIGHT: #666666 1px solid; BORDER-TOP: #666666 1px solid; FONT-WEIGHT: normal; FONT-SIZE: 12px; BORDER-LEFT: #666666 1px solid; COLOR: #000000; BORDER-BOTTOM: #666666 1px solid; FONT-FAMILY: Verdana, Tahoma, Arial; BACKGROUND-COLOR: #f8f8f8
}
SELECT {
FONT-WEIGHT: normal; FONT-SIZE: 12px; COLOR: #000000; FONT-FAMILY: Tahoma, Verdana; BACKGROUND-COLOR: #f8f8f8
}
.nav {
FONT-WEIGHT: bold; FONT-SIZE: 12px; FONT-FAMILY: Tahoma, Verdana
}
.header {
FONT-WEIGHT: bold; FONT-SIZE: 11px; COLOR: #ffffff; FONT-FAMILY: Tahoma, Verdana; BACKGROUND-COLOR: #698cc3
}
.category {
FONT-SIZE: 11px; COLOR: #000000; FONT-FAMILY: Tahoma, Verdana; BACKGROUND-COLOR: #efefef
}
.multi {
FONT-SIZE: 11px; COLOR: #003366; FONT-FAMILY: Tahoma, Verdana
}
.smalltxt {
FONT-SIZE: 11px; FONT-FAMILY: Tahoma, Verdana
}
.mediumtxt {
FONT-SIZE: 12px; COLOR: #000000; FONT-FAMILY: Tahoma, Verdana
}
.bold {
FONT-WEIGHT: bold
}
</STYLE>
</STYLE>
<META content="MSHTML 6.00.2800.1106" name=GENERATOR></HEAD>
<BODY leftMargin=0 background=这是一篇比较详尽的内核编译说明!!!!.files/bg.gif topMargin=0
rightMargin=0>
<TABLE
style="BORDER-RIGHT: #656b6d 1px solid; TABLE-LAYOUT: fixed; BORDER-TOP: #656b6d 1px solid; BORDER-LEFT: #656b6d 1px solid; BORDER-BOTTOM: #656b6d 1px solid; WORD-WRAP: break-word"
cellSpacing=0 cellPadding=0 width="98%" align=center bgColor=#ffffff border=0>
<TBODY>
<TR height=0>
<TD width="25%"></TD>
<TD width="65%"></TD>
<TD width="10%"></TD></TR>
<TR height=26>
<TD vAlign=center align=right width="100%"
background=这是一篇比较详尽的内核编译说明!!!!.files/topbg.jpg colSpan=3>
<FORM action=search.php method=post><SELECT name=radiobutton> <OPTION
value=news selected>-- 新闻搜索 --</OPTION> <OPTION value=articles>-- 文章搜索
--</OPTION> <OPTION value=software>-- 软件搜索 --</OPTION></SELECT><INPUT
size=15 name=Search> <INPUT type=image
src="这是一篇比较详尽的内核编译说明!!!!.files/go.gif" border=0> </FORM></TD></TR>
<TR>
<TD align=left width="20%"><IMG src="这是一篇比较详尽的内核编译说明!!!!.files/logo.jpg"
border=0></TD>
<TD align=middle width="60%"><IMG
src="这是一篇比较详尽的内核编译说明!!!!.files/logo2.jpg" border=1></TD>
<TD align=middle width="20%">::<A
href="http://www.heblinux.org/news.php">网站新闻</A>::<BR>::<A
href="http://www.heblinux.org/articles.php">技术文献</A>::<BR>::<A
href="http://www.heblinux.org/softs.php">软件中心</A>::<BR>::<A
href="http://www.heblinux.org/bbs/index.php" target=_blank>讨论区</A>::
</TD></TR>
<TR>
<TD background=这是一篇比较详尽的内核编译说明!!!!.files/tabledi.jpg colSpan=3
height=6></TD></TR>
<TR>
<TD background=这是一篇比较详尽的内核编译说明!!!!.files/titlebg.jpg colSpan=3 height=22>
<CENTER> <B><A href="http://www.heblinux.org/index.php">首页</A></B> ||
<B><A href="http://www.heblinux.org/bbs/index.php" target=new>讨论区</A></B>
|| <B><A href="http://www.heblinux.org/news.php">新闻中心</A></B> || <B><A
href="http://www.heblinux.org/articles.php">技术文献</A></B> || <B><A
href="http://www.heblinux.org/softs.php">软件中心</A></B> || <B><A
href="http://www.heblinux.org/about.php">关于本站</A></B> || <B><A
href="mailto:oneteam@mail.linuxbyte.net">联系本站</A></B>||</CENTER></TD></TR></TBODY></TABLE>
<TABLE
style="TABLE-LAYOUT: fixed; BORDER-COLLAPSE: collapse; WORD-WRAP: break-word"
cellSpacing=0 cellPadding=0 width="98%" align=center bgColor=#ffffff border=1>
<TBODY>
<TR><!--第二列-->
<TD vAlign=top align=left width="75%"><BR> <A
href="http://www.heblinux.org/index.php">首页</A><< <A
href="http://www.heblinux.org/articles.php">技术文献</A><< <B>这是一篇比较详尽的内核编译说明!!!!</B><BR><BR>
<UL> Linux 内核编译说明 <BR>1.Linux内核源码结构:
<BR>内核源码中主要包含以下子目录: <BR>arch :包含了与体系结构相关的代码
<BR>对应于每一个支持的体系结构,有一个相应的子目录如i386、arm、alpha等。 <BR>其每个体系结构子目录下包含几个主要的子目录:
<BR>kernel :包含与体系结构相关的内核代码 <BR>mm : 包含与体系结构相关的内存管理代码 <BR>lib :
包含与体系结构相关的库代码 <BR>documentation:包含内核的文档 <BR>drivers
:包含设备驱动代码。每类设备有相应的子目录,如char 、block、net等 <BR>fs :
包含文件系统的代码。每个支持的文件系统有相应的子目录,如 ext2、proc等 <BR>include
:内核头文件,对每一种体系结构,分别有相应的子目录。 <BR>init : 包含内核初始化代码 <BR>lib : 包含内核的库代码
<BR>mm :包含内存管理代码 <BR>kernel :包含内核管理代码 <BR>net :包含网络部分的代码
<BR><BR>2.系统引导的过程 <BR>在pc机上系统启动过程:
<BR>系统加电以后bois对系统完成监测设置后将控制权交给硬盘上MBR中的 BootLoader在这里即是lilo或grub等。
<BR>BootLoader 将操作系统代码调入内存,然后将控制权交给arch/i386/boot中的Setup.S这段程序。
<BR>Setup.S 这段程序在386实模式下对系统进行基本的检测和设置后转入保护模式把控制权交给Head.S <BR>Head.S
建立内存管理和中断管理的框架后调用init/main.c中的start_kernel()函数在start_kernel执行完成后用户就可以登录和使用linux了。Start_kernel()函数在init/main.c
中定义。 <BR>Start_kernel的流程中的主要步骤: <BR>setup_arch(&command_line);
用于和处理器、内存等最基本的硬件相关部分的初始化。 在 arch/i386/kernel/setup.c 中定义;
<BR>parse_options(command_line); 把启动时得到的参数从命令行的字符串中分离出来并赋给相应的变量。在
init/main.c 中定义; <BR>trap_init(); 对中断向量表进行初始化。在 arch/i386/kernel/trap.c
中定义; <BR>init_IRQ(); 与中断有关的初始化, 在 arch/i386/kernel/i8259.c 中定义;
<BR>sched_init(); 进程调度初始化。 在 kernel/sched.c 中定义; <BR>softirq_init(); 在
kernel/softirq.c 中定义; <BR>time_init(); 时间部分初始化。 在
arch/i386/kernel/time.c 中定义; <BR>console_init(); 对终端初始化。 在
drivers/char/tty_io.c 中定义; <BR>buffer_init(mempages); 对用于指示块缓存的buff free
list 初始化。 在fs/buffer.c 中定义; <BR>mem_init(); 内存管理初始化。 在
arch/i386/mm/init.c中定义; <BR>rest_init(); 此函数中调用
<BR>kernel_thread(init,NULL, CLONE_FS | CLONE_FILES |
CLONE_SIGNAL)函数时会调用init/main.c中的init()函数
在init()函数中将会建立dbflush、kswapd两个新的内核线程。初始化tty1设备。寻找/etc/init或/sbin/init
或/bin/init来建立一个init进程。
<BR>Init进程根据/etc/inittab文件进行文件系统检查、启动系统守护进程为联机终端建立getty进程,执行/etc/rc下的命令文件。
<BR>此后getty会在终端上显示login提示符,以等待用户登录。 <BR><BR>3.使用make建立内核 <BR>1.使用make
menuconfig命令: <BR>使用以下编译选项: <BR>Processor type and features --->
<BR>(Pentium-Pro/Celeron/Pentium-II) Processor family <BR>(3GB) Maximum
Virtual Memory <BR>General setup ---> <BR>(ELF) Kernel core
(/proc/kcore) format <BR>[*] Kernel support for ELF binaries <BR>File
systems ---> <BR>[*] /proc file system support <BR>[*] Second
extended fs support <BR>ATA/IDE/MFM/RLL support ---> <BR>[*]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -