linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘建议留言网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > article > Linux入门与提高 > 安装与配置 >
栏目导栏
资料搜索
热门文章
·什么是ISO文件
·VMware下Linux的安装及简单设置
·为Canon PIXMA iP1000喷墨打印
·Linux必学60个命令文件处理
·实例解说Linux中fdisk分区使用
·Linux下软件安装详解(图)
·Windows下硬盘安装FC6
·用DVD镜像文件硬盘安装FC5详细
·linux下软件的基本安装和卸载
·Linux下硬盘分区的最佳方案
·Suse Linux最新版本 10.1的 IS
·Ubuntu Linux操作系统安装Luma
·Linux下的软件安装
·FC5,LINUX下ADSL上网设置与安装
·把你的Linux配置成Windows
最新文章
·Fedora 9下使用VirtualBox安装
·Ubuntu Linux 8.04 Vsftp 虚拟
·Weblogic 8.1 for Linux ES3.0
·Ubuntu Linux 8.04下本地安装L
·VMware安装Redhat不能输入密码
·双系统攻略:修复Windows XP引
·Windows Vista硬盘安装Fedora
·在一个硬盘上安装两个Linux操作
·从硬盘安装Fedora-9-i386-DVD
·Ubuntu 8.04下安装配置Tomcat5
·Linux系统下显示多核模式方法
·Ubuntu Linux 8.04下关于字体的
·Linux系统下Autodock 4.0安装与
·SUSE Linux系统BASH下配置JAVA
·Linux kernel2.6.25 CS8900网卡
Google
 
制作Linux操作系统闪存启动盘
[ 作者:  加入时间:2008-03-17 09:56:36  来自:Linux联盟收集整理 ]
 

在U盘上建立Linux启动盘,对于系统维护人员具有更加实用的意义,你可以使用Linux建立小巧的内核,建立网络环境,快速地判断和排除网络故障与传送文件。

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

一、编译内核

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

以Linux-2.4.20为例说明。编译时一定要注意不要编译不必要的模块,如声卡驱动等驱动模块,使编译的内核尽可能小一些。由于要支持优盘启动,必须将SCSI设备、usbcore、usb-storage、Loopback device 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.测试编译的内核是否正常启动

测试编译的内核是否正常启动,以及在启动过程中是否可看见优盘的相关信息。

二、建立闪存启动盘

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 -s busybox建立这些文件的符号联接。可以根据个人需要重新编译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

三、应用举例

举一个传送文件的例子。在一台正常工作的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 01 00,这4个字节记录了FAT分区总的扇区数量),再使用朗科随盘提供的制作引导盘的工具制作Windows 98启动盘,然后使用Linux下bvi或者能够编辑二进制文件的工具修改Boot Record的32~35字节为原来的内容。这样,就能够实现名副其实的三启动方式(Windows双启动+Linux启动)。

Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·Linux操作系统下RAID查看方法  (2008-03-17 09:56:07)
 ·Linux主机服务器被入侵后需要采取的措施  (2008-03-17 09:51:21)
 ·Linux系统利用Crontab命令实现定时重启  (2008-03-15 19:29:08)
 ·Linux操作系统下LVM扩充方法  (2008-03-15 19:26:45)
 ·Linux系统下DNS服务器的架设  (2008-03-15 19:21:22)
 ·实用技巧:Linux系统丢失口令的解决办法  (2008-03-15 19:19:57)
 ·DB2从AIX server上转移(迁移)到linux上  (2008-03-14 10:36:27)
 ·在Linux终端下不常用但很有用的查询命令  (2008-03-14 10:35:17)
 ·Linux系统平台下架建个人蓝牙局域网方法  (2008-03-14 10:34:12)
 ·Linux下Apache安装/增加mod_rewrite模块  (2008-03-14 10:24:33)