信息系统项目管理师_2024年软考学习应考交流_信息系统项目管理师考试

 找回密码
 马上注册

QQ登录

只需一步,快速开始

查看: 2543|回复: 19
打印 上一主题 下一主题

经典技巧:制作Linux操作系统闪存启动盘

  [复制链接]
  • TA的每日心情
    开心
    2016-1-18 12:18
  • 签到天数: 117 天

    [LV.6]常住居民II

    跳转到指定楼层
    楼主
    发表于 2008-12-1 14:56:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    在U盘上建立Linux启动盘,对于系统维护人员具有更加实用的意义,你可以使用Linux建立小巧的内核,建立网络环境,快速地判断和排除网络故障与传送文件。

    下载相关软件:e3,bvi,Liuux内核。

    一、编译内核

    首先计算机的主板必须要支持USB硬盘的启动方式,并且所使用的优盘是启动型优盘。

    以Linux-2.4.20为例说明。编译时一定要注意不要编译不必要的模块,如声卡驱动等驱动模块,使编译的内核尽可能小一些。由于要支持优盘启动,必须将SCSI设备、usbcore、usb-storage、Loopbackdevice support、RAM disk support和initrd等编译到内核中。

    许多人会问,usb-storage模块已经包括在内核了为什么还要建立initrd.img文件?这是由于优盘的初始化过程比执行/sbin/init慢,导致内核已经启动完成了,优盘还没有完成初始化工作,因此根文件系统没有加载,这时执行/sbin/init命令肯定不成功。通过建立initrd.img文件,在启动内核时加载initrd.img文件到内存中,等待3秒使优盘完成初始化工作,再执行/sbin/init指令。具体操作步骤如下。

    1.建立initrd.img文件


    # mkdir -p /mnt/initrd  
    # cd /tmp  
    # mkinitrd /tmp/initrd.gz 2.4.20-usb

    2.解压initrd.img文件,修改启动脚本linuxrc


    # gunzip initrd.gz
    # mount -o loop /tmp/initrd /mnt/initrd
    # cp /sbin/busybox /mnt/initrd/bin
    # cd /mnt/initrd/bin
    # ln -s busybox sleep
    # vi /mnt/initrd/linuxrc

    加入如下内容:



    echo 'wait 3 seconds.....'  
    /bin/sleep 3

    3.重新生成initrd.img文件

    由于缺省建立的initrd文件比较大(为4MB),为了加快优盘的启动,必须减小它。具体操作如下:


    # mkdir -p /mnt/initrdusb
    # cd /tmp
    # dd if =/dev/zero of= /tmp/initrdusb bs=1M count=1
    # mke2fs -m 0 initrdusb
    # mount -o loop /tmp/initrdusb /mnt/initrdusb
    # cp -a /mnt/initrd/* /mnt/initrdusb  
    # umount /mnt/initrd
    # umount /mnt/initrdusb
    # cd /tmp  
    # gzip -9 initrdusb  
    # cp initrdusb.gz /boot/initrd-2.4.20-usb.img

    4.测试编译的内核是否正常启动

    测试编译的内核是否正常启动,以及在启动过程中是否可看见优盘的相关信息。
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏 转播转播 分享分享 顶 踩
  • TA的每日心情
    开心
    2016-1-18 12:18
  • 签到天数: 117 天

    [LV.6]常住居民II

    沙发
     楼主| 发表于 2008-12-1 14:57:02 | 只看该作者
    二、建立闪存启动盘

    1.将优盘分成两个分区

    留给Linux分区容量大小完全取决于安装哪些系统维护工具,结果如下:



      # modprobe usb-storage  
      # fdisk -l /dev/sda  
      Disk /dev/sda: 16 heads, 63 sectors, 126 cylinders  
      Units = cylinders of 1008 * 512 bytes  
      Device Boot Start End Blocks Id System  
      /dev/sda1 1 102 51376+ 6 FAT16  
      /dev/sda2 103 126 12096 83 Linux

    注意:如果需要使用优盘引导Windows 98,扇区大小必须设置为63个扇区,可以通过fdisk的x命令扩展修改heads、sectors和cylinders参数。

    2.建立与生成ext2分区


      # mke2fs -m 0 /dev/sda2  
      # mkdir -p /mnt/sda2  
      # mount /dev/sda2 /mnt/sda2  
      # cd /mnt/sda2
    3.建立boot目录

    将编译好的内核与initrd-2.4.20-usb.img文件拷贝到boot目录、编译好的模块拷贝到lib/modules目录,以及将/boot/grub的文件拷贝到boot目录,编辑boot/grub/menu.lst文件,内容如下:



      timeout 10  
      color 0x17 0x70  
      default 0  
      title Windows 98  
      rootnoverify (hd0,0)  
      makeactive  
      chainloader +1  
      title GNU/Linux Redhat 8.0 (2.4.20-usb)  
    root (hd0,1)  
      kernel /boot/vmlinuz-2.4.20-usb ro root=/dev/sda2  
      initrd /boot/initrd-2.4.20-usb.img

    安装grub,具体操作如下:
    grub> root (hd1,1)
    grub> setup (hd1)

    4.建立bin目录

    根据自工作的需要拷贝系统维护工具,如insmod、fsck和mkdosfs等实用程序。一定要注意使用ldd命令检查那些共享库文件,这些文件需要按照原来的路径拷贝到lib目录。由于受到磁盘空间的限制,使用busybox命令代替一些常见的Linux命令,主要原因就是busybox文件非常小,并且是静态链接的,包括许多常见的Linux命令(如cat、init、ifconig、route)用ln -sbusybox建立这些文件的符号联接。可以根据个人需要重新编译busybox,包括vi等命令,也可以使用小巧的e3代替vi。

    另外,如果使用bash,还必须编辑与裁减/etc/termcap及如下文件:


      /bin/bash  
      /etc/termcap  
      /usr/share/terminfo/l/linux  
      /usr/share/terminfo/k/klone+acs  
      /usr/share/terminfo/k/klone+color  
      /usr/share/terminfo/k/klone+sgr

    5.建立dev目录

    使用cp -a命令拷贝常用的设备文件,包括console、tty1、tty2、tty3sda、sda1、sda2、hda、hdb和hda1等设备文件。

    6.编辑etc/init.d/rcS

    内容如下:


      #!/bin/sh  
      PATH=/sbin:/bin  
      export PATH  
      mount -n -t proc none /proc  
      umount /initrd  
      mount -n -o remount,rw /  
      mount -n -o remount,rw -t proc none /proc  
      ifconfig lo 127.0.0.1

    7.编辑etc/fstab文件

    内容如下:

      /dev/sda2 / ext2 defaults 1 1  
      none /proc proc defaults 0 0
  • TA的每日心情
    开心
    2016-1-18 12:18
  • 签到天数: 117 天

    [LV.6]常住居民II

    藤椅
     楼主| 发表于 2008-12-1 14:57:22 | 只看该作者
    三、应用举例

    举一个传送文件的例子。在一台正常工作的Linux机器A(IP=192.168.100.5)上执行:

    $ tar cf - win98 | nc -l -p 5555

    注意:可以在机器B上使用优盘启动机器,telnet登陆到机器A上执行以上命令。

    在机器B上使用优盘启动执行:



      # mount -t vfat -o codepage=938,iocharset=cp936 /dev/hda5 /mnt/2dos  
      # cd /mnt/2dos  
      # modprobe eepro00  
      # ifconfig eth0 192.168.1.10  
      # route add default gw 192.168.1.1  
      # ping 192.168.10.5  
      # nc 192.168.10.5 5555 | tar xf -

    如果这时使用format /s命令无法建立优盘Windows 98启动盘,可以采用变通的方式,具体操作如下:


      # mkdosfs -F 16 /dev/sda1  
      # xxd -c 16 /dev/sda1 | less

    这时记录下Boot Record的32~35字节内容(本例为60 91 0100,这4个字节记录了FAT分区总的扇区数量),再使用朗科随盘提供的制作引导盘的工具制作Windows98启动盘,然后使用Linux下bvi或者能够编辑二进制文件的工具修改BootRecord的32~35字节为原来的内容。这样,就能够实现名副其实的三启动方式(Windows双启动+Linux启动)。
  • TA的每日心情
    开心
    2015-10-4 11:49
  • 签到天数: 86 天

    [LV.6]常住居民II

    升级  0.04%

    板凳
    发表于 2011-7-5 20:42:59 | 只看该作者
    一楼的位置好啊..  
  • TA的每日心情
    无聊
    2011-7-7 12:46
  • 签到天数: 2 天

    [LV.1]初来乍到

    升级  0.01%

    报纸
    发表于 2011-7-5 20:42:59 | 只看该作者
    我来看看!谢谢  
  • TA的每日心情
    开心
    2014-2-10 14:43
  • 签到天数: 10 天

    [LV.3]偶尔看看II

    升级  0.03%

    地板
    发表于 2011-7-13 15:15:48 | 只看该作者
    鉴定完毕.!  
  • TA的每日心情
    开心
    2015-4-17 09:25
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    升级  0.03%

    7
    发表于 2011-7-14 01:23:10 | 只看该作者
    好困啊  

    该用户从未签到

    升级  0.1%

    8
    发表于 2011-7-19 07:38:18 | 只看该作者
    晕死也不加点分  

    该用户从未签到

    升级  0.1%

    9
    发表于 2011-7-19 07:38:18 | 只看该作者
    太棒了!  
  • TA的每日心情
    擦汗
    2011-7-16 08:12
  • 签到天数: 1 天

    [LV.1]初来乍到

    升级  0.1%

    10
    发表于 2011-7-19 07:38:18 | 只看该作者
    天啊.  
    您需要登录后才可以回帖 登录 | 马上注册

    本版积分规则

    小黑屋|手机版|Archiver|信息系统项目管理师_软考交流平台. ( 鄂ICP备11002878号-1  公安备案号:42011102001150

    GMT+8, 2025-7-8 01:10

    Software by Discuz! X3.2

    © 2001-2013 SKIN BY DSVUE

    快速回复 返回顶部 返回列表