组建自己的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中没有安装。

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

[[email protected] ~]# cp /boot/vmlinuz-2.6.32-358.el6.x86_64 /mnt/boot/vmlinuz 
[[email protected] ~]# 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文件

[[email protected] ~]# 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脚本并赋予执行权限

[[email protected] ~]# 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

[[email protected] ~]# chmod u+x /mnt/sysroot/sbin/init

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

[[email protected] ~]# sync 
[[email protected] ~]# sync 
[[email protected] ~]# sync 
[[email protected] ~]# sync 
#可以多同步几次防止出问题
[[email protected] ~]# umount /dev/sdb1
[[email protected] ~]# umount /dev/sd

参考博客:

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

时间: 2024-11-10 08:20:32

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

Windows下的Linux子系统安装,WSL 2下配置docker

Windows下的Linux子系统安装,WSL 2下配置docker 前提条件: 安装WSL 2需要Windows 10版本是Build 18917或更高,首先先确认系统版本已升级. 在“启用或关闭Windows功能”中启用以下两个选项:Windows虚拟机平台.适用于Linux的Windows子系统. 启用这些更改后,重新启动计算机. 从如上图中安装最新的Ubuntu发行版. 1. Powershell下配置 将WSL2作为Ubuntu的默认架构 wsl -- set - version Ub

Linux - CentOS6.5服务器搭建与初始化配置详解(下)

传送带:Linux - CentOS6.5服务器搭建与初始化配置详解(上) 继续接着上面的安装,安装完后会出现下面界面 点击reboot重启 重启后可以看到下面的tty终端界面  因为这就是最小化安装 输入root和之前配置的密码 第一步先把防火墙给光了 iptables -F  命令用于清空规则 这里插一条命令(这个命令我忘记打上去了) /etc/init.d/iptables save  用于保存当前被清空的规则 chkconfig  iptables  stop  开机不允许启动防火墙 c

Linux CentOS6安装grub

安装grub的方式一: 这个方式是通过在一台新的硬盘上安装grub程序和简版的内核及/bash组成一个系统,来验证grub的安装结果. 1.添加新硬盘 2.为硬盘分区 1个用于/boot 1个用于swap分区 1个用于根文件系统 3.格式化文件系统 4.挂载/dev/sdb1准备安装grub程序 5.安装grub grub-install 6.将内核文件及initramdisk文件放入启动项目录中 7.获取或者创建grub配置文件 8.在根目录中创建FHS结构的目录 9.为新系统增加几个简单的命

Linux下安装java的jdk和配置环境变量

每次感觉配这个超级简单 但是每次都要查下 记一下好了 Linux下安装jdk,步骤如下 1:下载jdk包:本章使用的为后缀为tar.gz的文件(不需要安装),如jdk-8u111-linux-x64.tar.gz 2: 把jdk文件保存至Linux下目录:通过控制台,使用mkdir命令生成user/java目录,并把文件放入其下 3:解压tar.gz文件:通过控制台,进入user/java下,执行$ tar zxvf jdk-8u111-linux-x64.tar.gz,将其进行解压 4:配置环

Linux虚拟机安装完centos后环境配置

linux下面安装软件 yum install rpm -ivh 编译安装 三部曲:./configure make make install 卸载 rpm -e 安装方法 1)通过yum安装软件 需要你联网 通过ping 命令测试是否联网 2) 更改系统的yum源 阿里云 #https://opsx.alibaba.com/mirror 来源 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backu

Linux下安装Python3的django并配置mysql作为django默认数据库(转载)

我的操作系统为centos6.5 1  首先选择django要使用什么数据库.django1.10默认数据库为sqlite3,本人想使用mysql数据库,但为了测试方便顺便要安装一下sqlite开发包. yum install mysql mysql-devel #为了测试方便,我们需要安装sqlite-devel包 yum install sqlite-devel 2  接下来需要安装Python了,因为Python3已经成为主流,所以接下来我们要安装Python3,到官网去下载Python3

【linux基础】19、系统初始化流程

一.内核 linux系统的组成:内核(kernel)+根文件系统(rootfs) 1.内核的功能 进程管理:task_struct,scheduler(调度) 内存管理: I/O管理:中断及中断处理 文件系统: 驱动程序 安全相关功能:SElinux,各种加密库 2.内核设计流派 单内核:单一体系 将所有功能都作成一个整体,都作在内核中 linux: 模块化设计:核心 + 外围功能性模块组成 内核支持动态装卸载模块  .ko文件:kernel object 微内核:内核子系统 windows,s

linux系统初始化配置脚本分享

这个脚本是我借鉴某大神的脚本改写的(其实是赤裸裸的拿来用了),功能主要是实现系统自定义配置,搭建原始的linux环境模板,分享给大家,顺便分享个小诀窍: 复制代码后,请使用"notepad++"或其它编辑器打开此文档, "alt+0"将函数折叠后方便查阅 . 插句话,这个方法我是从雪松大神的[python实例手册] [shell实例手册]学到的,感谢他们的共享精神,一直在维护这两个手册的更新,  分享下着两个手册的地址: [python实例手册] [shell实例手

在VMware vSphere Client下使用Linux虚拟机安装CentOS6.4系统

序言:公司要准备虚拟化,将配置比较高的物理机虚拟化成N个虚拟机,以便可以给更多的应用服务提供服务. 1,使用vShere client连接到物理机上面,选择"配置"--"存储器"-"数据存储",右键点击选择"浏览数据存储",就可以上传文件,如下图所示:? 2,将需要安装的centos.iso文件上传上去. 3,右键开始创建虚拟机,然后选择安装类型 4,输入虚拟机名称 5,选择虚拟机文件的目标存储,选择虚拟机的操作系统(Linu