-
基于
Linux
源代
码及
Busybox
源代码制作精简可启动内核镜
像技术实验方法总结
熊海泉
一、需要准备的东西
.............................
..................................................
..........................................
1
Linux
内核源代码
.............................................
..................................................
.......................
1
Busybox
源代码
......
..................................................
..................................................
...............
2
Unetbootin
工具
...............
..................................................
..................................................
.......
2
二、制作
Linux
内核镜像及内存虚拟盘根文件系统
..................................................
...................
2
Linux
内核镜像文件
bzImage
的编译制作
...............
..................................................
...........
2
基于<
/p>
Busybox
的根文件系统虚拟盘
p>
的制作
..........................
...................................
5
三、利用
unetbootin
工具制作可启动
U
盘
.
.............
..................................................
.....................
7
unetbootin
工具的获取与安装
...
..................................................
..............................................
7
unetbootin
使用
....
..................................................
..................................................
..................
7
四、制作可启动的光盘镜像与磁盘镜像
.
.....................................
..................................................
.
9
制作一个基于
grub
引导的
ttylinux LiveCD .
..................................................
.........................
9
制作一个基于
grub
引导的
ttylinux
磁盘镜像
..............................................
........................
1
0
五、基于
Qemu
模拟器的运行
.
..................
..................................................
..................................
11 <
/p>
1
,基于如下命令运行刚才制作的
tty
linux
可启动光盘镜像
................
...............................
11
2
,以下为启动界面
.
..................................
..................................................
............................
11
3
,以下为基于
Qemu
模拟
器的
ttylinux
运行界面
p>
.
.............................
.................................
1
2
六、基于
Bochs X86
PC
模拟器的运行
.
..............................................
..........................................
1
2
1
,基
于如下命令运行刚才制作的
ttylinux
可启动光盘镜像<
/p>
........................................
.......
1
2
2
,以下为在
Bochs
模拟器中的启动界面
.
..................
..................................................
........
1
3
3
,以下为基于
Bochs
模拟器的
ttylinux
运行界面
..........
..................................................
..
1
4
一、需要准备的东西
Linux
内核源代码
下载地址
/linux/kernel/v2.6/
这里下载的是
linux-
Busybox
源代码
下载地址
这里下载的是
busybox-
1
Unetbootin
工具
下载地址
这里可以在
Fedora
13
中直接用下面的命令行安装:
#yum install unetbootin
二、制作
Linux
内核镜像及内存虚拟盘根文
件系统
Linux
内核镜像文件
p>
bzImage
的编译制作
1
、
bzI
mage
的制作
将下载下来的内核源
代码压缩包拷贝到
/study/
目录下,然后进入到这个目录
将
其解压
,
命令如下
< br>:
#tar jxvf linux-
然后创建一个目录,用来保存编译内核产生的目标文件
#mkdir linux-
linux-
< br>,在编译内核时会将目标文件输出保存到这个目录下。
然后我们开始编译
linux
内核编译配置
,
输入如下所示的命令
:
#cd
/study/linux-
#make O=/study/linux-
menuconfig (
配置内核
)
这里首先将宿主机的
/boot
目录下的
config-
,作为下面内核编译配置的基
础。
#cp /boot/config-
/study/linux-
配置内核时,里面的选项有很多
,
如果不确定的话就将所有选项都编译进内
核,当然最好能针对
性的配置内核,这样产生出的内核镜像不至于太大。还有一
点就是配置时一定要将选定的
选项编译进内核,而不要编译成模块,也就是说在
前面带有
M<
/p>
选项时,要么直接静态编译进内核,要么去掉。同时,为了支持
i
nitrd
内存盘文件系统,有两个选项是必须的。
一个是
General Setup
–
> Initial RAM filesystem
and RAM disk support
2
另一个是
Device
Drivers
–
> Block Devices
–
> RAM block device support
这个选项的子选项保持默认就可以了,如下图所示
:
然后退出配置界面,在退出时会提示你是否保存刚才的配置,选择
yes
就可
以了
(
因
为我们在配置时指明了
O=/study/linux-
目录
,所以配置文件会保存到
这个目录下,文件名为
.config
)
然后在
linux-
#make
mrproper
接下来我们开始编译内核
:
#make O=/study/linux-
–
j 16 (
生成内核镜像,采用多
线程编译,
4
核八线程故开启
-j
16
选项,加快编译速度
)
通常,我
们编译内核是为了更新内核,但这里我们只是为了编译出一个内核
镜像,所以就不调用<
/p>
make
install
命令来安装内核了。
好!内核编译完成,我们将编译好的内核镜像拷贝到主目录下,以供后面使
用。
# cp /study/linux-
/study/bootdisk (
拷贝到此目录下将来由
u
netbootin
制作启动盘
)
基
于
Busybox
的根文件系统虚拟盘
的制作
接下来我们开始编译
busybox
。(我的
busybox-
#tar jxvf busybox- (
解压
busybox
压缩包
)
#cd busybox-1.18.0 (
进入到解压后的<
/p>
busybox
源码目录
)
#make menuconfig
(
配置
busybox)
注意配置时,一定要选择静态链接选项,该选项位于
:
Busybox Settings
–
> Build Options
–
> Build Busybox as a static
binary
#yum install libselinux-static
libsepol-static glibc-static(
具体根据系统可能还需
要其它的包,这是我的系统中需要安装的几个包,是链接
bus
ybox
所需要的
)
接下来,我们安装
busybox
#make install (busybox
默认安装到了
其源码树目录的名字为
_install
的目录中
)
#cd _install (
进入安装了
p>
busybox
的目录
)
3