加载中…
个人资料
LavenLiu
LavenLiu
  • 博客等级:
  • 博客积分:0
  • 博客访问:59,943
  • 关注人气:2
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

制作U盘系统

(2014-10-22 08:51:36)
标签:

u盘

linux

分类: Gnu/Linux

制作U盘系统,用于系统排错:

1 删除原来的分区:
  # dd if=/dev/zero of=/dev/sdb count=1 bs=1024   –使用dd命令用数字覆盖u盘分区表,等于删除了原来的分区

2 分区/格式化:
  # fdisk /dev/sdb
            –新建分区
       –建立主分区
           –分区1
   enter      –按回车键
   enter

   –*设置成为可启动设备,一定要设置
         –给分区1设置为可启动设备

  # mkfs.ext3 /dev/sdb1    –格式化创建的u盘分区
  # mkdir /mnt/usb         –创建挂载目录
  # mount /dev/sdb1 /mnt/usb    –将U盘分区挂载到/mnt/usb

3 :在U盘中生成linux文件系统目录,安装filesystem包就可以了
   # rpm -qf /
   filesystem-2.4.30-2.1.el6.i686
   # yum -y install filesystem-2.4.0-2 –installroot=/mnt/usb/    –installroot指定包的安装目录
   # ls /mnt/usb/     –检查是否已经生成文件系统目录
   bin   dev  home  lost+found  mnt  proc  sbin     srv  tmp  var
   boot  etc  lib   media       opt  root  selinux  sys  usr

4 安装相关的软件包
   # yum –installroot=/mnt/usb -y install vim-enhanced openssh-clients bash  coreutils tar bzip2 gzip gpm net-tools passwd SysVinit elinks iptables shadow-utils unzip zip e2fsprogs initscripts iproute bind-utils yum acl libselinux-utils iptables util-linux diffutils lvm2 vixie-cron vim-minimal

   vim-enhanced:vim安装包
   gpm:在字符界面,可以鼠标选择文本、按下右键将选择的文件进行复制(*)
   openssh-clients:ssh、scp命令安装包
   SysVinit:关机命令安装包
   util-linux:mount命令安装包

5 GRUB安装,MBR引导记录安装
  5.1安装GRUB软件包:
      # rpm -ivh –force –nodeps –root=/mnt/usb/ grub-0.97-13.5.i386.rpm   –使用rpm安装可以去掉依赖关系包(使用yum需要安装很多包),force强制安装,nodeps去除依赖关系,root指定将软件包安装到哪里?
   
  5.2 安装MBR和GRUB所需要的文件
   # grub-install –root-directory=/mnt/usb/ –recheck /dev/sdb
          grub-install [OPTION] install_device
  –root-directory=DIR
            install  GRUB images under the directory DIR instead of the root directory
  –recheck
               probe a device map even if it already exists
               This option is unreliable and its use is strongly discouraged.

  5.3 创建grub.conf文件
   从原系统中拷贝一份
   # cp /boot/grub/grub.conf /mnt/usb/boot/grub/grub.conf
   #vim /mnt/usb/boot/grub/grub.conf
    # grub.conf generated by anaconda
    # Note that you do not have to rerun grub after making changes to this file
    # NOTICE:  You have a /boot partition.  This means that
             all kernel and initrd paths are relative to /boot/, eg.
             root (hd0,0)
             kernel /vmlinuz-version ro root=/dev/vol0/root
             initrd /initrd-version.img
    #boot=/dev/sda
    default=0          –默认启动那个title,从0开始
    timeout=5    –默认多少时间后启动默认title下的系统
    splashimage=(hd0,0)/grub/splash.xpm.gz     –系统开机过程中加载的图像
    hiddenmenu     –隐藏title
    title my linux   –系统标签
          root (hd0,0)   –(hd0,0)指第一个硬盘第一个分区
          kernel /vmlinuz-2.6.18-194.el5 ro root=/dev/sda1 rhgb quiet   –加载的内核文件,ro只读,root指定根分区,rhgb是红帽的启动进度条,quiet是系统在加载模块时信息在屏幕不显示
          initrd /initrd-2.6.18-194.el5.img   –加载的驱动文件

   制作U盘系统,如要兼容性好些,可以在常用的系统上,mkinitrd一个驱动文件,这样到哪里都能加载相关的硬件;同时GRUB中,最好使用UUID、LABEL指定U盘。

   5.3.1 在启动系统的时候使用卷标加载根文件系统:
     e2label /dev/sda1  –查看设备分区标签

     # vim /mnt/usb/boot/grub/grub.conf
      default=0
      timeout=3
      splashimage=(hd0,0)/grub/splash.xpm.gz
      hiddenmenu
      title my usblinux
            root (hd0,0)
              kernel /boot/vmlinuz-2.6.18-164.el5 ro root=LABEL=myusb rhgb quiet   –使用卷标,/boot/vmlinuz是因boot是属于/分区
              initrd /boot/initrd-2.6.18-164.el5.img

   5.3.2 使用UUID加载根文件系统:
     # blkid /dev/sdb1     –先查出U盘系统的根分区对应的UUID
     /dev/sdb1: UUID="e57a0667-4f6e-4714-a4c0-afad32974cc3" SEC_TYPE="ext2" TYPE="ext3" LABEL="myusb"
     # vim /mnt/usb/boot/grub/grub.conf
     default=0
     timeout=3
     splashimage=(hd0,0)/grub/splash.xpm.gz
     hiddenmenu
     title my usblinux
           root (hd0,0)
             kernel /boot/vmlinuz-2.6.18-164.el5 ro root=UUID=e57a0667-4f6e-4714-a4c0-afad32974cc3 rhgb quiet  –使用UUID,不能使用引号将UUID值引起来
             initrd /boot/initrd-2.6.18-164.el5.img

修改device.map文件
  #vim /mnt/usb/boot/grub/device.map
  (hd0)   /dev/sdb --只保留自己的U盘设备

7 创建临时的根文件系统(ramdisk)
  # mkinitrd –with usb_storage /mnt/usb/boot/initrd-2.6.18-164.el5.img `uname -r`
  –with usb_storage  加载usb存储模块
  –`uname -r`  –内核版本
  initrd文件会随硬件不同而不同
 NAME
       mkinitrd – creates initial ramdisk images for preloading modules

 SYNOPSIS
       mkinitrd [--version] [-v] [-f]
                [--preload=module] [--omit-scsi-modules]
                [--omit-raid-modules] [--omit-lvm-modules]
                [--with=module] [--image-version]
                [--fstab=fstab] [--nocompress]
                [--builtin=module] [--nopivot]
                [--with-fips]
                image kernel-version
        –with=module
              Load the modules module in the initial ramdisk image. The module
              gets loaded after  any  SCSI  modules  which  are  specified  in
              /etc/modprobe.conf.  This  option  may  be used as many times as
              necessary.

  

  7.1 解开initrd.img文件:
   # mkdir /tmp/initrd   –创建已经目录
   # cp /mnt/usb/boot/initrd-2.6.18-164.el5.img /tmp/initrd/   –将initrd.img文件复制到创建的目录
   # cd /tmp/initrd
   # zcat initrd-2.6.18-164.el5.img | cpio -i    –将initrd.img文件解开,因initrd.img文件是使用gzip进行高压缩,使用zcat可以查看内容
   # rm -rf initrd-2.6.18-164.el5.img     –删除原文件
   [root@station6 initrd]# ll    –查看解开的文件,init文件中有加载的模块信息,可以进行编辑
   总计 68
   drwx—— 2 root root 4096 09-07 20:16 bin
   drwx—— 3 root root 4096 09-07 20:16 dev
   drwx—— 2 root root 4096 09-07 20:16 etc
   -rwx—— 1 root root 2286 09-07 20:16 init
   drwx—— 3 root root 4096 09-07 20:16 lib
   drwx—— 2 root root 4096 09-07 20:16 proc
   lrwxrwxrwx 1 root root    3 09-07 20:16 sbin -> bin
   drwx—— 2 root root 4096 09-07 20:16 sys
   drwx—— 2 root root 4096 09-07 20:16 sysroot

   # vim init –删除USB重复模块加载
    echo "Loading usb-storage.ko module"
    insmod /lib/usb-storage.ko
  
  7.2 重新打包initrd.img文件
   # cd /tmp/initrd
   # find . | cpio -oc > initrd.img –重新打包initrd.img
   # gzip -9 initrd.img    –压缩当前文件,减少占用磁盘空间,提高启动的速度
   # cp initrd.img.gz  /mnt/usb/boot/initrd-2.6.18-164.el5.img –覆盖原来的initrd.img文件

8 创建内核:从原系统中拷贝一份
   # cp /boot/vmlinuz-2.6.18-164.el5 /mnt/usb/boot/ –创建内核

9 创建内核模块文件:从原系统中拷贝一份
   # cp -rv /lib/modules/ /mnt/usb/lib/modules/ –创建模块文件
 
10 创建挂载文件:fstab
   # cp /etc/fstab  /mnt/usb/etc/fstab –从原系统拷贝一个模板
   # vim /mnt/usb/etc/fstab   –只要挂载U盘和一些系统启动需要的虚拟系统
   UUID=57f20b36-eaba-4c9a-bebc-d06964e9f708    ext3    defaults        1 1
   tmpfs                   /dev/shm                tmpfs   defaults        0 0
   devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
   sysfs                   /sys                    sysfs   defaults        0 0
   proc                    /proc                   proc    defaults        0 0
   
   最好使用UUID标识U盘系统根分区;
   devpts:跟图形环境终端有关
   sysfs:跟文件系统、设备有关
   proc:跟系统进程有关
   tmpfs:虚拟内存

11 创建用户密码、用户环境
  # cp /etc/passwd /etc/shadow /mnt/usb/etc/ –为U盘系统创建用户名和密码,可以将不需要的用户和秘密删除
  # cp /etc/skel/.b* /mnt/usb/root   –创建用户配置文件

12 支持网络
  # cp /etc/sysconfig/network-scripts/ifcfg-eth0 /mnt/usb/etc/sysconfig/network-scripts/   –拷贝网卡配置文件
  # cp /etc/hosts /etc/resolv.conf  /mnt/usb/etc/   –拷贝hosts、resolv.conf文件
  # vim /mnt/usb/etc/sysconfig/network-scripts/ifcfg-eth0   –编辑配置文件,去除HWADDR,这样可以具有很好的移植性
  DEVICE=eth0
  BOOTPROTO=static
  IPADDR=192.168.0.253
  NETMASK=255.255.255.0
  ONBOOT=yes

13 同步数据
  # sync  –把内存中的数据写回磁盘.

14 使用U盘启动,不能驱动网卡
  可能是模块没有加载成功,使用rmmod卸载模块,然后使用modprobe重新加载模块;
  lsmod   –列出当前已经加载模块

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有