分享

简单构建Linux(LFS)

 guitarhua 2012-07-19

简单构建Linux(LFS)

来源: 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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多