一.grub修复

    1.模拟grub.conf损坏

        #mv grub.conf grub.conf.bak

        重启,直接进入命令行模式

        grub>

    2.手动配置grub

        grub>root (hd0,0) (使用find和tab键自动补全功能,找到grub所在分区)

        grub>kernel /vmlinuz....  ro root=/dev/root(系统自己找不到的话,只能自己凭记忆)quiet

        grub>initrd /initramfs....img

        grub>boot

        重写grub.conf即可


    3.模拟grub损坏

        #dd if=/dev/zero of=/dev/sda bs=100 count=1

    4.使用光盘进入救援模式,进入到命令行

        第一种安装方式#chroot /mnt/sysp_w_picpath/

        #grub

        grub>root (hd#,#)

        grub>setup (hd#)

        grub>quit

        第二种方式

        #chroot /mnt/sysp_w_picpath

#grub-install --root-directory=/(指定boot所在的目录) /dev/sda

        #sync(将内存数据加载到硬盘上)

        缺少配置文件时,需要自己写grub.conf



二.系统裁剪

1.给目标磁盘分区

      两个分区:

        宿主机上:/dev/sdb1, /dev/sdb2

/dev/sdb1 挂载至 /mnt/boot

        /dev/sdb2 挂载至 /mnt/sysroot

2.安装grub至目标磁盘

   #grub-install --root-directory=/mnt /dev/sdb

  

3.复制内核和initrd文件

        cp /boot/vmlinuz-Version  /mnt/boot/vmlinuz(便于简化,没有加版本号)

        cp /boot/initramfs-Version.img /mnt/boot/initramfs.img


4.创建目标主机的根系统文件

       mkdir -pv /mnt/sysroot/{etc/rc.d,usr,var,proc,sys,dev,lib/modules,lib64,bin,sbin,boot,src,mnt,media,home,root}

       

       接着去移植bash等命令至目标主机的根文件系统

       cp /lib/modules/2.6.32-642.el6.x86_64/kernel/drivers/net/e1000/e1000.ko /mnt/sysroot/lib/modules(便于简化,没有创建更深的目录)


5.为grub提供配置文件

       vim /mnt/boot/grub/grub.conf

       default=0

       timeout=5

       title My First MiniLinux

         root(hd0,0)

kernel /vmlinuz ro root=/dev/sda2 selinux=0 init=/sbin/init(不指定也可以,系统默认会找这个可执行程序)

initrd /initramfs

6.写一个init脚本用于初始化(模拟/sbin/init)       

    #!/bin/bash

    #

    echo -e "\t\033[34mWelcome My Linux\033[0m"

    mount -n -t proc proc /proc

    mount -n -t sysfs sysfs /sys

    insmod /lib/modules/e1000.ko

    ifconfig lo 127.0.0.1/8

    ifconfig eth0 192.168.0.110/16

    mount -n -o remount,rw /dev/sda2 /(重新挂载根文件系统)

    /bin/bash

    由于脚本中用到ifconfig,insmod,mount等命令,需要将相关命令移植到我们所创建的根文件系统中(/mnt/sysroot),移植的命令时可以将其写成脚本方便移植

通过以上步骤即可完成一个简单的Linux,有网络功能