Linux:Day13(下) GRUB
GRUB(Boot Loader):
grub:GRand Unified Bootloader
grub 0.x:grub legacy
grub 1.x:grub2
grub legacy:
stage1:mbr
stage1_5:mbr之后的扇区,让stage1中的bootloader能识别stage2所在的分区上的文件系统;
stage2:磁盘分区(/boot/grub/)
配置文件:/boot/grub/grub.conf <-- /etc/grub.conf
stage2及内核等通常放置于一个基本磁盘分区;
功用:
(1) 提供菜单,并提供交互式接口
e:编辑模式,用于编辑菜单;
c:命令模式,交互式接口;
(2) 加载用户选择的内核或操作系统
允许传递参数给内核
可隐藏此菜单
(3) 为菜单提供了保护机制
为编辑菜单进行认证
为启用内核或操作系统进行认证
如何识别设备:
(hd#,#)
hd#:磁盘编号,用数字表示;从0开始编号
#:分区编号,用数字表示;从0开始编号
grub的命令行接口
help:获取帮助列表;
help KEYWORD:详细帮助信息
find (hd#,#)/PATH/TO/SOMEFILE;
root ( hd#,#)
kernel /PATH/TO/ERNEL_FILE;设定本次启动时用到的内核文件;额外还可以添加许多内核支持使用的cmdline参数;
例如:init=/path/to/init,selinux=0
initrd /PATH/TO/INITRAMFS_FILE:设定为选定的内核提供额外文件的ramdisk;
boot:引导启动选定的内核;
手动在grub命令行接口启动系统:
grub> root (hd#,#)
grub> kernel /vmlinuz-VERSION-RELEASE ro root=/dev/DEVICE
grub> initrd /initramfs-VERSION-RELEASE.img
grub> boot
配置文件:/boot/grub/grub.conf
配置项:
default=#:设定默认启动的菜单项;茶单项(title)编号从0开始;
timeout=#:指定菜单项等待用户选择的时长;
splashimage=(hd#,#)/PATH/TO/XPM_PIC_FILE:指明菜单背景图片文件路径;
hiddenmenu:隐藏菜单;
password [--md5] STRING:菜单编辑认证;
title TITLE:定义菜单项“标题”,可出现多次;
root (hd#,#):grub查找stae2及kernel文件所在设备分区;为grub的“根”;
kernel /PATH/TO/VMLINUZ_FILE [ PARAMETERS];启动内核
initrd /PATH/TO/INITRAMFS_FILE:内核匹配的ramfs文件;
password [--md5] STRING:启动选定的内核或操作系统时进行认证;
grub-md5-crypt命令
进入单用户模式:
(1) 编辑grub菜单(选定要编辑的title,而后使用e命令);
(2) 在选定的kernel后附加
1,s,S或single都可以;
(3) 在kernel所在行,键入“b"命令;
安装grub:
(1) grub-install # 完整安装,三个阶段都会安装
grub-install --root-directory=ROOT /dev/DISK
(2) grub # 安装第1阶段和1.5阶段
grub> root (hd#,#)
grub> setup (hd#)
练习:
1、新加硬盘,提供直接单独运行bash系统;
2、破坏本机grub stage1,而后在救援模式下修复之;
3、为grub设备保护功能;
Linux Kernel:
单内核体系设计、但充分借鉴了微内核设计体系的优点,为内核引入模块化机制。
内核组成部分:
kernel:内核核心,一般为bzImage,通常在/boot目录下,名称为vmlinuz-VERSION-RELEASE;
kernel object:内核对象,一般放置于/lib/modules/VERSION-RELEASE/
[ ]:N
[M ]:M
[*]:Y
辅助文件:ramdisk
initrd
initramfs
运行中的内核:
uname命令:
uname - print system information
uname [OPTION]...
-n:显示节点名称;
-r:显示VERSION-RELEASE;
模块:
lsmod命令:
显示由核心已经装载的内核模块
显示的内容来自于:/proc/modules文件
modinfo命令:
显示模块的详细描述信息
modinfo [ -k kernel ] [modulename|filename...]
-n:只显示模块文件路径
-p:显示模块参数
-a:author
-d:description
-l:license
modprobe命令:
装载或卸载内核模块
modprobe [ -C config-file ] [ modulename ] [ module parame-ters... ] # 直接指定模块名且可自动解决依赖关系
配置文件:/etc/modprobe.conf,/etc/modprobe.d/*.conf
modprobe [-r] modulename...
depmod命令:
内核模块依赖关系文件及系统信息映射文件的生成工具;
装载或卸载内核模块:
insmod命令:
insmod [ filename ] [ module options... ] # 此命令必须指定路径且不能自动解决依赖关系
rmmod
rmmod [ modulename ]
/proc目录:
内核把自己内部状态信息及统计信息,以及可配置参数通过proc伪文件系统加以输出。
参数:
只读:输出信息
可写:可接受用户指定“新值”来实现对内核某功能或特性的配置
/proc/sys
(1) sysctl命令用于查看或设定此目录中诸多参数;
sysctl -w path.to.parameter=VALUE
(2) echo命令通过重定向的方式也可以修改大多数参数的值;
echo "VALUE" > /proc/sys/path/to/parameter
sysctl命令:
配置文件:/etc/sysctl.conf
(1) 设置某参数
sysctl -w parameter=VALUE
(2) 通过读取配置文件设置参数
sysctl -p [/path/to/conf_file]
内核中的路由转发:
/proc/sys/net/ipv4/ip_forward
常用的几个参数:
net.ipv4.ip_forward
vm.drop_caches
kernel.hostname
/sys目录:
sysfs:输出内核识别出的各硬件设备的相关属性信息;也有内核对硬件特性的设定信息;有些参数是可以修改的,用于调整硬件工作特性。
udev通过此路径下输出的信息动态为各设备创建所需要设备文件;uddev是运行用户空间程序;专用工具:udevadmin,hotplug;
udev为设备创建设备文件时,会读取其事先定义好的规则文件,一般在/etc/udev/rules.d及/usr/lib/udev/rules.d目录下;
ramdisk文件的制作:
(1) mkinitrd命令
为当前正在使用的内核重新制作ramdisk文件
~]# mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)
(2)dracut命令
为当前正在使用的内核重新制作ramdisk文件
~]# dracut /boot/initramfs-$(uname -r).img $(uname -r)
编译内核:
前提:
(1) 准备好开发环境;
(2) 获取目标主机上硬件设备的相关信息;
(3) 获取到目标主机系统功能的相关信息,例如要启用的文件系统;
准备好开发环境:
包组(CentOS 6):
Server Platform Development
Development tools
目标主机硬件设备相关信息:
CPU:
cat /proc/cpuinfo
x86info -a
lscpu
PCI设备:
lspci
-v
-vv
lsusb
-v
-vv
lsblk
了解全部硬件设备信息
hal-device
简单依据模板文件的制作过程:
tar xf linux-3.10.57.tar.xz -C /usr/src
cd /usr/src
ln -sv linux-3.10.67 linux
cd linux
cp /boot/config-$(uname -r) ./.config
make menuconfig
screen
make -j #
make modules_install
make install
重启系统,并测试使用新内核;
练习:编译好,并启用之;
Linux:Day13(下) GRUB的更多相关文章
- 如何在Linux上通过grub添加内核参数
转自Linux中国 我们可以在linux内核启动时为其提供各种各样的参数.这些参数可以自定义内核默认的行为,或者通知内核关于硬件的配置信息.内核参数应在内核启动时通过引导装载程序,如GRUB或LILO ...
- Linux 技巧之 Grub 超实用技巧
1. 简单介绍 什么是 GRUB?GRUB 全名Grand Unified Boot Loader,它是一个引导装入器 -- 它负责装入内核并引导 Linux 系统.GRUB 还能够引导其他操作系统, ...
- Ubuntu 11.10下GRUB 2 1.99版编译安装笔记
Ubuntu 11.10下GRUB 2 1.99版编译安装笔记 以下的安装笔记,都是QLi自己学习grub2 时,所整理的,还是新手,有错误的话,请大家帮忙就别提出来了. 最新版grub V1.99官 ...
- 深入理解linux系统下proc文件系统内容
深入理解linux系统下proc文件系统内容 内容摘要:Linux系统上的/proc目录是一种文件系统,即proc文件系统. Linux系统上的/proc目录是一种文件系统,即proc文件系统.与其它 ...
- 【云和恩墨】性能优化:Linux环境下合理配置大内存页(HugePage)
原创 2016-09-12 熊军 [云和恩墨]性能优化:Linux环境下合理配置大内存页(HugePage) 熊军(老熊) 云和恩墨西区总经理 Oracle ACED,ACOUG核心会员 PC S ...
- python基础——Linux系统下的文件目录结构
单用户操作系统和多用户操作系统 单用户操作系统:指一台计算机在同一时间只能由一个用户使用,一个用户独自享用系统的全部硬件和软件资源. 多用户操作系统:指一台计算机在同一时间可以由多个用户使用,多个用户 ...
- 在Linux虚拟机下配置tomcat
1.到Apache官网下载tomcat http://tomcat.apache.org/download-80.cgi 博主我下载的是tomcat8 博主的jdk是1.8 如果你们的jdk是1.7或 ...
- 在Linux系统下运行微信Web开发者工具
微信Web开发者工具只有window版本和mac版本,如果想要在Linux系统下运行微信Web开发者工具,需要花费很大周折. 注:带 * 的步骤或文件为不确定是否管用的步骤或文件.本人系统为Linux ...
- 在Linux虚拟机下配置jdk的环境变量
1.到Oracle公司的官网里下载好jdk,网址 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133 ...
随机推荐
- 行为驱动:Cucumber + Selenium + Java(三) - 使用标签实现测试分组
在上一篇中,我们写出了Selenium + Cucumber + Java环境下的第一个BDD自动化测试用例,这一篇我们说说怎么用标签对用例进行分组. 3.1 Cucumber标签 实际工作中,我们的 ...
- SpringBoot完美配置阿里云的文件上传
新建一个config类 AliyunOSS.java @Configuration @Data public class AliyunOSS { private OSSClient ossClient ...
- ansible学习系列2-ansible常用模块使用
1. 查看支持的模块 [root@localhost ~]# ansible-doc -l 这里我们看下ansible的支持的模块个数 [root@localhost ~]# ansible-doc ...
- Linux基础知识第二讲,文件目录命令使用
目录 一丶Linux终端使用技巧. 1.自动补全 Tab技巧. 2.使用输入过的命令 二丶Linux 目录知识 1.linux目录的特点 2.ls 隐藏文件的查看 3.ls 常用选项 4.通配符的配合 ...
- 小程序开发笔记【一】,查询用户参与活动列表 left join on的用法
今天在做一个用户活动查询功能的时候,查询参与的活动.正常,使用egg-mysql查询数据一般会这么写 result = await this.app.mysql.select('tb_activity ...
- Python面向对象:杂七杂八的知识点
为什么有这篇"杂项"文章 实在是因为python中对象方面的内容太多.太乱.太杂,在写相关文章时比我所学过的几种语言都更让人"糟心",很多内容似独立内容.又似相 ...
- .Net语言 APP开发平台——Smobiler学习日志:如何快速实现按钮组功能
最前面的话:Smobiler是一个在VS环境中使用.Net语言来开发APP的开发平台,也许比Xamarin更方便 一.目标样式 我们要实现上图中的效果,需要如下的操作: 1.从工具栏上的“Smobil ...
- SQL使用总结
本文为转载:对于SQL的学习与使用,推荐大家去这儿,讲的很系统: http://www.w3school.com.cn/sql/index.asp 练习SQL的使用,推荐大家去这里: https:// ...
- CentOS7.3 yum install MySQL5.7
安装环境:阿里云服务器 + CentOS7.3 测试工具:Navicat for MySQL 参考博客:https://blog.csdn.net/qq_38417808/article/detail ...
- CSS Grid 布局完全指南(图解 Grid 详细教程)
CSS Grid 布局是 CSS 中最强大的布局系统.与 flexbox 的一维布局系统不同,CSS Grid 布局是一个二维布局系统,也就意味着它可以同时处理列和行.通过将 CSS 规则应用于 父元 ...