您好,欢迎来到思海网络,我们将竭诚为您提供优质的服务! 诚征网络推广 | 网站备案 | 帮助中心 | 软件下载 | 购买流程 | 付款方式 | 联系我们 [ 会员登录/注册 ]
促销推广
客服中心
业务咨询
有事点击这里…  531199185
有事点击这里…  61352289
点击这里给我发消息  81721488
有事点击这里…  376585780
有事点击这里…  872642803
有事点击这里…  459248018
有事点击这里…  61352288
有事点击这里…  380791050
技术支持
有事点击这里…  714236853
有事点击这里…  719304487
有事点击这里…  1208894568
有事点击这里…  61352289
在线客服
有事点击这里…  531199185
有事点击这里…  61352288
有事点击这里…  983054746
有事点击这里…  893984210
当前位置:首页 >> 技术文章 >> 文章浏览
技术文章

Linux启动盘boot/root盘的制作

添加时间:2011-1-25  添加: admin 

boot/root盘由两部分
盘上去,通常要对内核和根
一些不必要的支持去掉,如
RAMDISK及ext2,否则系统不
成根文件系统的压缩包。对
件系统组件,第二是将根文
 组成,即核心和根文件系统。要
文件系统进行压缩,压缩核心的
对网络和其它周边设备的支持,
能正常引导。关于内核的编译本
于根文件系统的压缩包括两方面
件系统做成一个压缩包,类似于
 把这两部分都放到一个1.44MB的软
最好方法是进行重新编译内核,将
重要的一点是记住内核必须支持
文不再阐述,下面重点介绍如何生
的问题,第一是只保留必要的根文
内核工作的原理。
 

    (1)根文件系统概述                                                      

    一个根文件系统必
 须包括支持完整Linux系统的全
 部东西,它至少应包括以下几项:
 

    基本文件系统结构                                                          
    至少含有以下目录
 :/dev、 /proc、 /bin、 /etc
 、 /lib、 /usr、 /tmp
 
    最基本的应用程序,如sh、 ls、 cp、 mv等                        
    最低限度的配置文件,如rc、 inittab、 fstab等              
    设备:/dev/hd*、 /dev/tty*、 /dev/fd0          
    基本程序运行所需的库函数                                                  

    以上所需文件一般情况下会超过
缩到软盘中,当用软盘启动时,再把文件
RAMDISK控制系统启动。
 1.44M,因此我们通常的做法是先准备好内容后再压
解压到内存中,形成一个虚拟盘(RAMDISK),通过

 

    为了能创建以上的根文件系统,
。系统缺省情况下已替我们建好了一个大
我们就使用它来保存我们预先准备好的根
 你必须有一个空闲的能够放下大约4MB文件的RAMDISK
小为4096KB的RAMDISK,其设备名一般为/dev/ram0,
文件系统。
 
                                                                              
    (2) 创建根文件系统                                                    

    Linux内核识别两
ext2性能更好。mke2fs缺省
件系统需要更多的信息节点
一般不会用完。
 种可以直接拷贝到RAMDISK的文
情况下在1.44M的软盘上产生360
,所以使用如下命令创建文件系

 件系统,它们是minix 和ext2,
个信息节点,使用压缩格式的根文
统可以创建2000个信息节点,而且

 

    mke2fs -m 0 -i 2000 /dev/ram0                

    mke2fs将会自动判断设备容量的
留空间,这样会腾出更多的有用空间。接
 大小并相应地配置自身,-m 0参数防止它给root保
着把虚拟盘挂在节点/mnt上:
 

    mount -t ext2 /dev/ram0 /mnt/floppy    


 

接着是创建目录。根文件系统最少应该有如下8个目录:                           
    /dev — 设备                                                        
    /proc — proc 文件系统所需目录                                
    /etc — 系统配置文件                                                
    /sbin — 重要的系统程序                                            
    /bin — 基本应用程序                                                
    /lib — 共享函数库                                                  
    /mnt — 装载其他磁盘节点                                            
    /usr — 附加应用程序                                                
    执行如下命令创建这些目录:                                                
    #cd /mnt/floppy                                            
    #mkdir dev proc
 etc sbin bin lib mnt usr
 
 

    接下来的工作就是确定各个目录下的内容了:                                  

    /dev:/dev中含有
,然后删除不必要的文件。
dp开关保证链接文件仍然不
备,删除所有的以sd开头的
过记住一定要保留console
 系统不可缺少的设备文件。可以
命令cp -dpR /dev /mnt会拷贝
变,不会拷贝链接所指原文件,
文件。如果你不想使用串口设备
、kmem、mem、null、ram、tty1
 把现有系统中/dev的文件拷贝过来
/dev整个目录但不拷贝文件内容,
而且属性不变。如果你没有SCSI设
,删除所有以cua开头的文件。不
等文件。
 

    /etc:这个目录中
底哪些文件是必需的,哪些
,干脆全部保留算了。
 含有一些必不可少的系统配置文
可有可无呢?由于这下面的文件

 件。这下面的文件比较多,那么到
一般是一些文本文件,都不是很大

 

    我的启动盘中含有不到15个配置文件,大致可分为3部分:                    

    rc.d/* — 系统启动脚本                                            
    fstab — 列出要登录的文件系统                                      
    inittab — 包含启动过程参数                                      

    而且这些文件都是最简单的。rc应该包括:                                  

    #!/bin/sh                                                        
    /bin/mount -av                                              
    /bin/hostname yjy                                        
    fstab应包括:                                                        
    /dev/ram0 / ext2 defaults                        
    /dev/fd0 / ext2 defaults                          
    /proc /proc proc defaults                        
    inittab包括:                                                      
    id:2:initdefault:                                        
    si::sysinit:/etc/rc                                    
    1:2345:respawn:/sbin/getty 9600 tty1  
    2:23:respawn:/sbin/getty 9600 tty2     


  /bin和/sbin:该目录
的需要选择,不过一定要记
壳shell。
 中包含有必不可少的应用程序,
住包括以下程序:init, getty

 如ls, mv, cat,你可以根据自己
,login, mount,运行你的rc的外

 

    /lib: 该目录中包
函数库,系统会停止启动或
 含有你的启动盘启动过程中所需
出现一大堆错误信息,所以一定
 要的共享函数库,如果缺少必须的
要注意。
 

    几乎所有的程序都需要libc库,列一下目录/lib中的libc:          

     ls -l /lib/libc*                                        
    -rwxr-xr-x 1
 root root 4016683 Apr 16 18:
 48 libc-2.1.1.so*
 
    lrwxrwxrwx 1 root root 13 Apr 10 12:25 libc.so.6 -> libc-2.1.1.so*

    libc.so.6的6表示版本号,它指向的文件才是你真正需要的。          

    查看每一个程序使用的函数库,用命令ldd,如:                            

     ldd /sbin/mke2fs                                        
    libext2fs.so.2 => /lib/libext2fs.so.2 (0x40014000)

    libcom_err.so.2 => /lib/libcom_err.so.2 (0x40026000)

    libuuid.so.1 => /lib/libuuid.so.1 (0x40028000)

    libc.so.6 => /lib/libc.so.6 (0x4002c000)

    /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)


    输出右边的库都是必须的,有的可能是链接文件。                              

    在/lib目录下你还必须有函数库
ld-linux.so (对 ELF 库)。新版本的l
 装载器,这个装载器或是ld.so (对 a.out 库) 或是
dd一般会告诉你所需库的装载器。
 

    把装载器和库拷贝到/lib后,再仔细检查一遍,一定保证没有遗漏。          

     模块                                                                    

    如果你有一个模块化的内核,你
/lib/modules,你可以把不是很重要的模
启动盘的空间。
 还得考虑需要加载的模块,它们都位于
块放到别的盘上,当系统启动后再加载,这样会节省

 

     打包                                                                    

    一旦你完成了上述工作,卸下虚拟盘,拷贝到一个文件中,然后压缩。            

    umount /mnt                                                    
    dd if=/dev/ram0 bs=1k | gzip -v9>rfs.gz


    压缩结束后,你就
,你还得删除一些东西。
 拥有了一个压缩的根文件系统,

 不过你得检查它的大小,如果大了

 

    (3) 组织引导盘                                                        

    有了根文件系统和内核之后,最后的工作就是把它们组织在一起。                

    先检查总文件的大小,如果超出
用两张磁盘,你的根文件系统也得小于1.
 1.44MB,就得考虑重新创建所需或用两张磁盘,即使
44MB。
 
  接着就是确定是用LILO
你能增加支持初始化硬件的
建议使用LILO控制系统启动
的方法就不作叙述了。
 控制启动还是直接用拷贝到盘上
参数到内核中,缺点是较复杂且
。下面我就介绍用LILO的过程,

 的内核控制启动。用LILO的好处是
占用珍贵的磁盘空间,不过我还是
直接用拷贝到盘上的内核控制启动

 

    用LILO控制启动首
已经够用了。
 先就得写一个LILO配置文件,以

 下是一个最简单的配置文件,但是

 

    boot =/dev/fd0                                              
    install =/boot/boot.b                                
    map =/boot/map                                              
    read-write                                                      
    backup =/dev/null                                        
    compact                                                            
    image = KERNEL                                              
    label = Bootdisk                                          
    root =/dev/fd0                                              

    参数说明见相关资
件系统。把一张干净的软盘
 料。然后把它命名为bdlilo.con
插入软驱,在上面创建ext2文件
 f。 接下来就是创建一个内核文
系统。
 

    mke2fs -i 8192 -m 0 /dev/fd0 50            
    “-i 8192”表示每8192位创建一个信息节点。接着登录系统:        
    mount /dev/fd0 /mnt/floppy                      
    rm -rf /mnt/floppy/lost+found                
    mkdir /mnt/floppy{boot,dev}                    
    删去目录/ lost+found,创建两
 个目录/boot和/dev,再执行:
 
    cp -R /dev/{null,fd0} /mnt/floppy/dev
    接着拷贝启动加载器boot.b到目录/boot中,                        
    cp /boot/boot.b /mnt/floppy/boot          
    最后,拷贝你创建的配置文件bd
 lilo.conf和内核到内核文件系统的根目录下,
 
    cp bdlilo.conf KERNEL /mnt/floppy        

    现在,根文件系统
LILO引导器到软盘的根文件
 所需的所有文件都准备就绪了。
系统上面:
 再执行下面的命令可以帮助安装

 

    lilo -v -C bdlilo.conf -r /mnt              

    OK,可以运行它了,如果运行结果没有错误就表明成功,否则就应该仔细检查一下上
面的设置。
 

     关键字:Linux、boot、root
 
 

 

分享到:

顶部 】 【 关闭
版权所有:佛山思海电脑网络有限公司 ©1998-2024 All Rights Reserved.
联系电话:(0757)22630313、22633833
中华人民共和国增值电信业务经营许可证: 粤B1.B2-20030321 备案号:粤B2-20030321-1
网站公安备案编号:44060602000007 交互式栏目专项备案编号:200303DD003  
察察 工商 网安 举报有奖  警警  手机打开网站