科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道教你制作Linux操作系统的Boot/Root盘 (2)

教你制作Linux操作系统的Boot/Root盘 (2)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

·/bin和/sbin:该目录中包含有必不可少的应用程序,如ls, mv, cat,你可以根据自己的需要选择,不过一定要记住包括以下程序:init, getty,login, mount,运行你的rc的外壳shell。

作者:赛迪网技术社区 来源:赛迪网技术社区 2007年10月21日

关键字: root BOOT 制作 Linux

  • 评论
  • 分享微博
  • 分享邮件

·/bin和/sbin:该目录中包含有必不可少的应用程序,如ls, mv, cat,你可以根据自己的需要选择,不过一定要记住包括以下程序:init, getty,login, mount,运行你的rc的外壳shell。

·/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.so (对 a.out 库) 或是 ld-linux.so (对 ELF 库)。新版本的ldd一般会告诉你所需库的装载器。把装载器和库拷贝到/lib后,再仔细检查一遍,一定保证没有遗漏。

3 模块

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

4 打包

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

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

压缩结束后,你就拥有了一个压缩的根文件系统,不过你得检查它的大小,如果大了,你还得删除一些东西。

组织引导盘

有了根文件系统和内核之后,最后的工作就是把它们组织在一起。先检查总文件的大小,如果超出1.44MB,就得考虑重新创建所需或用两张磁盘,即使用两张磁盘,你的根文件系统也得小于1.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.conf。 接下来就是创建一个内核文件系统。把一张干净的软盘插入软驱,在上面创建ext2文件系统。

  
    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
    最后,拷贝你创建的配置文件bdlilo.conf和内核到内核文件系统的根目录下,
    cp bdlilo.conf KERNEL /mnt/floppy
  

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

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

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

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章