码迷,mamicode.com
首页 > 系统相关 > 详细

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

时间:2015-09-19 13:57:18      阅读:302      评论:0      收藏:0      [点我收藏+]

标签: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中没有安装。


技术分享


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


本文出自 “Linux新手学习” 博客,请务必保留此出处http://xzb2015.blog.51cto.com/8796643/1696237

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

标签:grub安装、系统剪裁、系统精简

原文地址:http://xzb2015.blog.51cto.com/8796643/1696237

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!