第一次编译linux,学到东西是一定的!
从头开始编译是一个过程花费了三天时间,除去重复命令输入的无味,以及对编译过程error出错的担心,把系统成功运行起来还算欣慰。
在一台祼机上,自己编译个性的linux,确实觉得有点意思。
拿到一张LFS
6.2-5的LiveCD,借助其系统,以及光盘上提供的安装软件包,还有一份详细的安装文档,打造自己的linux系统就这么开始了,呵呵。。。
开始总是艰难的!
一是对编译系统没有一个完整的概念,二是对linux的了解有一定局限。
启动CD后,最开始要做的便是,修改主机硬盘的分区,一个完整的linux系统,怎么能少了root分区和swap分区。
根据磁盘类型进行分区:
fdisk /dev/hda --IDE
分区后,重启后再格式化分区为ext3格式。mkfs.ext3 /dev/hda[x]
在linux系统上,对其它磁盘的访问,不像win那样直接在命令行下敲盘符就行,linux上对分区的定义是以文件的形式来管理的,不管分区多大,多小
也只是根目录下的一个文件,一旦看成是文件了,那么使用cd命令就可以轻松切换了。
借助的CD上的系统,把不同文件,作为本地文件来处理,就需要使用mount进行挂载了。
在CD系统上建立文件/mnt/lfs作为新系统的根目录的挂载点。
export LFS=/mnt/lfs
mkdir -pv
$LFS
mount /dev/sda2 $LFS
注意:
mount命令加载的分区在重新启动后就失效了,所以在这其中重新启动则需要重新加载。
加载必要的文件系统
mount
-vt proc proc $LFS/proc
mount -vt sysfs sysfs $LFS/sys
Chroot到
目标系统下
chroot "$LFS" /tools/bin/env -i HOME=/root TERM="$TERM"
PS1='\u:\w\$ ' PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin
/tools/bin/bash --login +h
环境设置好了,当我们往/mnt/lfs中写入数据,实际就是写往分区hda2
中,当一个系统所需的数据编译并成功安装后,就OK了
LiveCD中lfs-sources里面所有源码包复制到$LFS/sources目录中。
cp -a /lfs-sources/*
$LFS/sources
接下来的事就是按照,参考文档上的提示,从前往后一行行的输入指令。编译的过程中一定要细心,特别是在写配置文件的时候,
我一开始就把.bash_profile文件中的一个Path路径写错了,导致我在编译完gcc后,再利用编译后的gcc来编译glicb时出现库文件找
不着的错误,我想这就是gcc相就的库文件没有正确放置的问题吧,修改后还是有问题,只好重新编译,这才过去了。。。
当编译成功后,后面的安装包就顺利多了,只是命令输入的问题而已。
对内核的编译,只要前面的编译都正常通过,编译过去应该没问题,系统能不能启动就得看在make
menuconfig里的设置了,起初编译过的好几次仍然是没有起来,总是提示cannot open devies
root=hda,换成CD中的内核则可以正常起来....
最后,还是得高人指点,使用了Live
CD中的.config文件,重新编译,终于成功...
配置网卡。。。
整个系统的完成不难,编译的目的也不在于是否编译成功,正常运行,重要的还是在于,如何通过编译来学习linux系统,认识系统的组成。
最开始的运行的是grub
把grub看成是一个微型的操作系统,因为其五脏具全,支持script,有文件系统,其中的stage1和stage1.5是引导程序,而stage2
则是一个操作系统,只不过是用来引导其它操作系统的一个操作系统。
从开机BIOS执行INT
0X19,这个指令从引导设备第一个扇区读取512字节,装入地址,加载mbr到0x7c00(磁盘第一扇区),这时cpu指令指针该地址
(JMP..._),并执行,stage1通常被写入mbr中,stage1开始执行时直接加载stage1.5或2并执行,stage2运行。
stage2这个小型操作系统,会把系统切入保护模式,设置好运行环境后,在menu.lst的配置下运行给出的shell命令。stage2加载其它系
统并将对机器硬件控制权转交给引导的系统,完成系统的启动。
root (hd0,2)//设置内核所在的根分区
kernel /boot/lfs-linux-vesion root=/dev/hda3 //内核的加载
boot
//启动运行
内核加载内存,一旦系统正常进入,则可以理解为机器是一直在等待用户指令的输入,根据用户不同的需求,执行相应的任务。
进一步要做的是,分析安装文档资料,深层次学习linux系统,分析源码。
阅读(1278) | 评论(1) | 转发(0) |