简单构建Linux(LFS)
日期:2012-02-24
来源: leezqang
最简单的构建自己的Linux (LFS) 根据Linux的启动过程分解我们可以更明确的了解整个系统的工作,从而也可以利用现有的系统构建个自己的Linux,命令集
可以定做,使的Linux更专一,更小巧。
Linux的启动过程分解加电自检-->BIOS-->MBR(grub引导)-->kernel-->init(/etc
/inittab)-->rc.sysinit(/etc/rc.d/rc.sysinit)-->shell
下面就在虚拟机中一步一步的构建我们自己的Linux了。。 一、为磁盘分区并格式化在虚拟机中新建一块磁盘(不小于200M)(磁盘一定是一个 single file)将磁盘挂载到当前的主机(宿主机),然后启动系统#fdisk -l 可查看刚挂载的磁盘/dev/sdb(如果主机中只有一块硬盘设备则为/dev/sda,那么添加的这块新磁盘就是/dev/sdb)保险起见先将磁盘的MBR段充零#dd if=/dev/zero of=/dev/sdb bs=512 count=1为磁盘创建一个100M大小的boot分区和512M大小的根分区#echo 'np1 +100Mw '|fdisk /dev/sdb#echo 'np2 +512Mw '|fdisk /dev/sdb #partprob /dev/sdb ##通知内核重新加载磁盘将这两个分区格式化为ext3格式mkfs -t ext3 /dev/sdb1mkfs -t ext3 /dev/sdb2#partprob /dev/sdb 二、为磁盘为分区设置挂载点并安装grub #mkdir /mnt/{boot,sysroot} #mount /dev/sdb1 /mnt/boot #mount /dev/sdb2 /mnt/sysroot #grub-install --root-directory=/mnt /dev/sdb#cd /mnt/boot/grub 其实为磁盘安装grub的方法还有一种 这里也介绍给大家了 #cp /usr/share/grub/i386-rathat/* /mnt/boot/grub #umount /dev/sdb1 #grub grub>root (hd1,0) grub>setup (hd1) grub>quit ##退出 #mount /dev/sdb1 /mnt/boot #cd /mnt/boot ##这两种方法都可以,只使用其一即可 三、将内核文件和initrd文件cp到磁盘中,并编写grub.conf配置文件 #uname -a ##查看当前系统的版本 #ll /boot #cp /boot/vmlinuz-2.6.18-164.el5 /mnt/boot/Mylinux ##将相应的内核cp到/mnt/boot中 #mkdir /tmp/linux #cd !$ #zcat /boot/initrd-2.6.18-164.el5.img|cpio -id # vim init 找到/dev/vol0/root 换成/dev/sda2 # find . | cpio -o -H newc --quiet | gzip -9 > /mnt/boot/initrd.gzcd /mnt/boot/grub #vim grub.conf default=0 timeout=5 title Mylinux root (hd0,0) kernel /Mylinux ro root=/dev/sda2 initrd /initrd.gz ##保存退出 四、提供根文件系统 # cd /mnt/sysroot # mkdir -pv ./{etc/rc.d,bin,sbin,usr,proc,sys,var,tmp,lib,mnt,media ,misc,opt,dev} ##这些目录都要添加虽然有些是空目录, 如果想投机少添加了,rc.sysinit文件会找不到相应目录,初始化僵死#cp /sbin/init sbin/#cp /bin/bash bin/ 分别复制上述两个可执行文件依赖的库文件:# ldd /sbin/init# cp /lib/列出的库文件 lib/ 五、 提供配置文件#vim /etc/inittabid:3:initdefault:si::sysinit:/etc/rc.d/rc.sysinit ##保存退出#vim /etc/rc.d/rc.sysinit#!/bin/bashecho "Welcome to Mylinux!!!!!!"/bin/bash ##保存退出 #chmod +x etc/rc.d/rc/sysinit 上面五步完整的做完一次后 ,将宿主机挂起,新建个虚拟机,并用刚才新建的磁盘做系统盘,系统启动后会出现一堆信息 最后显示的应该是:Welcome to Mylinux!!!!!! bash-3.2# 因为命令没有cp到系统中,有很多命令都无法实现,不过pwd,cd 这些内置命令还是可以使用,如果你想实现ls touch等命令时重新开启宿主机,将ls命令cp到磁盘的相应目录中 [root@ ~]# which ls alias ls='ls --color=tty' /bin/ls cd /mnt/sysroot[root@ ~]#cp /bin/ls bin/[root@ ~]# ldd /bin/ls linux-gate.so.1 => (0x0044b000) (因为第一行为空 所以此行不用cp) librt.so.1 => /lib/librt.so.1 (0x00d54000) libacl.so.1 => /lib/libacl.so.1 (0x00b00000) libselinux.so.1 => /lib/libselinux.so.1 (0x00986000) libc.so.6 => /lib/libc.so.6 (0x00110000) libpthread.so.0 => /lib/libpthread.so.0 (0x002aa000) /lib/ld-linux.so.2 (0x00cd1000) libattr.so.1 => /lib/libattr.so.1 (0x00267000) libdl.so.2 => /lib/libdl.so.2 (0x00848000) libsepol.so.1 => /lib/libsepol.so.1 (0x00e63000) 依次将>后的文件cp到/lib中touch也是如此 简单构建个人Linux到此就算结束了,其实还有很多步骤都省略,算是投机取巧了,不过它可是个实实在在的Linux哦。。。。 http://www./linuxrumen/20291.html |
|