组建自己的Linux-03安装grub,提供系统初始化配置

1.安装grub

  基本的命令移植完成了接下来就是安装grub,使用grub-install安装即可。

  --root-directory:安装的时候会在此目录下创建boot/grub/目录,并生产安装文件。内核位置是单独的分区且挂载在/mnt/boot/下,所以--root-directory=/mnt/时安装过程就会生产/mnt/boot/grub目录。

  /dev/sdb:指定在/dev/sdb的MBR区域安装。


  刚开始的时候/mnt/boot/下没有文件,/dev/sdb的MBR也没有数据,安装后再次查看,两个区域都生产了相应的安装数据。grub的数据只安装在了/dev/sdb的MBR中,而/dev/sdb1h和/dev/sdb2的bootsector中没有安装。


wKiom1X8uvazbJRAABG9bgfdAN8396.gif


2.提供内核vmlinuz和虚拟文件系统initramfs.img

[root@Pure-01 ~]# cp /boot/vmlinuz-2.6.32-358.el6.x86_64 /mnt/boot/vmlinuz 
[root@Pure-01 ~]# cp /boot/initramfs-2.6.32-358.el6.x86_64.img /mnt/boot/initramfs.img


3.initrd的作用(摘自鸟哥的私房菜-基础篇)

   initrd目的在于提供启动过程中所需要的最重要核心模块,以让系统启动过程可以顺利完成。 会需要 initrd 的原因,是因为核心模块放置于 /lib/modules/$(uname -r)/kernel/ 当中, 这些模块必须要根目录 (/) 被挂载时才能够被读取。但是如果核心本身不具备磁碟的驱动程序时, 当然无法挂载根目录,也就没有办法取得驱动程序,因此造成两难的地步。

   initrd 可以将 /lib/modules/.... 内的『启动过程当中一定需要的模块』包成一个文件 (档名就是 initrd), 然后在启动时透过主机的 INT 13 硬件功能将该文件读出来解压缩,并且 initrd 在内存内会模拟成为根目录, 由于此虚拟文件系统 (Initial RAM Disk) 主要包含磁碟与文件系统的模块,因此我们的核心最后就能够认识实际的磁碟, 那就能够进行实际根目录的挂载啦!所以说:『initrd 内所包含的模块大多是与启动过程有关,而主要以文件系统及硬盘模块 (如 usb, SCSI 等) 为主』的啦!

   一般来说,需要 initrd 的时刻为:

    根目录所在磁碟为 SATA、U盘 或 SCSI 等连接介面;

    根目录所在文件系统为 LVM, RAID 等特殊格式;

    根目录所在文件系统为非传统 Linux 认识的文件系统时;

    其他必须要在核心加载时提供的模块。


   注意:上面的initrd完启动相关的功能之后,我们需要将根目录重新挂载到真正的根上才能正常使用系统。


4.提供配置文件grub.conf文件

[root@Pure-01 ~]# vi /mnt/boot/grub/grub.conf 
default=0
timeout=5
title LFT TEST
    kernel (hd0,0)/vmlinuz ro root=/dev/sda2 selinux=0 init=/sbin/init
    #kernel (hd0,0)/vmlinuz  以grub的寻址找到内核位置,第一个分区(对应/mnt/boot)
    #root=/dev/sda2    磁盘的第二个分区(对应/mnt/sysroot)
    #init=/sbin/init       系统启动后直接执行/sbin/init
    initrd (hd0,0)/initramfs.img


5.提供init脚本并赋予执行权限

[root@Pure-01 ~]# vi /mnt/sysroot/sbin/init 
#!/bin/bash
echo -e "\033[34m Hello World!\033[0m"
mount -n -t proc proc /proc
mount -n -t sysfs sysfs /sys
mount -n -o remount,rw /dev/sda2 /
/bin/bash

[root@Pure-01 ~]# chmod u+x /mnt/sysroot/sbin/init

6.同步数据并卸载/dev/sdb

[root@Pure-01 ~]# sync 
[root@Pure-01 ~]# sync 
[root@Pure-01 ~]# sync 
[root@Pure-01 ~]# sync 
#可以多同步几次防止出问题
[root@Pure-01 ~]# umount /dev/sdb1
[root@Pure-01 ~]# umount /dev/sd


参考博客:

    http://tanxw.blog.51cto.com/4309543/1368801


你可能感兴趣的:(GRUB安装,系统精简,系统剪裁)