grub shell 错误_GRUB启动故障排除和内核编译
如何进入光盘应急系统(以下修复操作仅适用于GRUB legacy, 不适用于GRUB2):
步骤一:给主机挂上安装光盘, 或者有相应启动镜像的硬盘分区(可移动的分区)
步骤二:开机时选择CDROM先启动
步骤三:进入光盘启动界面选择应急救援模式
步骤四: 不选择设置网络接口, 直接读取磁盘分区并以读写方式挂载
步骤五: 选择shell进入bash中对磁盘进行其他操作, 操作完成后用exit退出到此界面并选择重启选项重启电脑, 并且移除光盘.
GRUB故障之一:
/boot/目录下grub.conf文件丢失
处理方法:
在grub命令行模式下, 先root (hd0,0)指定启动分区所在磁盘, 然后使用kernel /vmlinuz-xxxx
root=/dev/sda1指定内核和启动分区. 最后指定initrd /initrd-xxxx.img, 然后输入boot启动.
如遇故障可重新进行步骤一, 并且修改root=/dev/sda1中的选项. 这时候能进入系统中, 然后进行与方法二中创建文件内容相似的操作,
保存后写入文件中. 下次重启即能正常进入系统.
使用光盘进入应急系统中, 在原目录中新建文件, 格式如下
default=0
timeout=3
title=linux
root (hd0,0)
kernel (hd0,0)/vmlinuz-xxxx root=/dev/sda1
initrd (hd0,0)/initrd-xxxx.img
文件保存到/boot/grub/grub.conf , 然后退出应急系统重启
GRUB故障之二:
/boot下initrd文件(或initramfs)丢失
处理方法:
使用光盘进入应急系统,
进入位于/mnt/sysimage/boot/目录下使用命令mkinitrd 命令, 稍等片刻即生成initrd文件,
然后检查/mnt/sysimage/boot/grub/grub.conf 文件中对应条目下的名称是否与所创建文件的文件名一致.
从光盘boot目录下拷贝同名文件到/mnt/sysimage/boot/目录下, 前提是内核版本与光盘中内核版本相同, 如果不同会出现问题导致无法启动.
GRUB故障之三:
vmlinuz文件丢失
处理方法:
进入光盘应急系统中, chroot到/mnt/sysimage/,
然后挂载光盘至/mnt目录下, 进入/mnt/Packages/目录下覆盖安装kernel包, 使用命令为rpm -ivh
–replacepkgs kernel-VERSION.rpm 安装完成后会在/boot目录下自动生成相应版本的vmlinuz文件.
(前提是内核版本未更新, 和光盘中的内核版本一致)
与之二中第二种方法一致, 复制文件.
GRUB故障之四:
GRUB stage1_5和stage2丢失
处理方法:
进入光盘应急系统中, 使用命令grub-install /dev/sda对分区进行grub安装, 安装完成后会自动生成对应文件如图所示, 在对应目录下生成了所需文件, 至此, 我们只需退出shell 并且重启机器, 修复后的第一次重启系统会重新配置一次, 然后再重启一次就能进入系统了.
从相同配置的机器上拷贝到对应目录下(不推荐, 不同主机间的硬件配置可能不同, 造成的问题无法追溯, 使用方法一即时生成更加安全)
GRUB故障之五:
磁盘bootloader扇区出错, 即引导磁盘前446字节被擦写
解决方法:
与之四的方法一相同
GRUB故障之六:
/boot分区丢失, 或所有文件丢失
解决方法:
结合之前的方法, 先进入光盘应急系统, 然后进行之四的方法一, 再进行之三的方法一, 再进行之二的方法一, 再进行之一的方法一, 完成后检查配置文件和相应文件的对应关系, 然后退出应急系统重启主机.
内核编译和内核模块
linux的内核是宏内核架构, 把大部分功能集成在了内核上, 然后又吸取了微内核的优点, 把非必需的驱动做成模块,
在需要的时候加载至内核中, 由于linux支持的硬件和平台众多, 通用内核通常会具有一些用不上的功能和模块,
此时就需要工作人员对内核进行定制化编译来达到提升内核运行效率和减少其他驱动出错造成系统错误的机会.
从kernel.org官方站点下载同主线最新的内核模块, 笔者用的archlinux , 内核版本为4.7.2 下载了最新版本的4.7.3版本的内核源代码进行编译和安装. 编译之前组安装下开发工具(development tools)
下载后对源代码的压缩文件进行解压, tar xf linux-4.7.3.tar.xz
解压完成后进入目录, 然后使用命令make menuconfig 对内核编译的配置文件进行自定义, 定义完成后, 保存配置文件退出
配置过程中:
[ ] : 表示不进行编译
[M] : 表示以模块的形式进行编译
[*] : 编译进内核中
然后使用命令make [-j 2 ] -j是指定几个处理器进行编译操作, 操作过程中会产生大量中间文件, 需留足空间.
然后使用make modules_install 对模块进行编译, 编译完成后, 使用make install正式编译内核文件.
编译完成后, 会自动在/boot目录下生成对应文件并修改启动的配置文件, 在原有内核选项下加上新的内核启动选项.
由于编译过程过长, 所以在此就不演示了.
具体步骤如下:
make menuconfig
make -j 2
make modules_install
make install
modprobe 命令:
对内核模块进行装载或卸载
装载: modprobe mod_name
卸载: modprobe -r mod_name
modinfo 命令:
查看模块信息
modinfo mod_name
insmod 命令: 指定内核模块进行装载
insmod [ filename ] [module options ]
insmod `modinfo -n exportfs`
insmod `modinfo -n mod_name`
rmmod 命令: 卸载指定内核模块(未运行的)
rmmod [ mod_name ]
/proc目录:
内核把自己内部状态信息及统计信息,以及可配置参数通过proc伪文件系统加以输出
参数:只读:输出信息
可写:可接受用户指定“新值”来实现对内核某功能或特性的配置
/proc/sys
(1) sysctl命令用于查看或设定此目录中诸多参数
sysctl -w path.to.parameter=VALUE
sysctl -w kernel.hostname=mail.magedu.com
(2) echo命令通过重定向方式也可以修改大多数参数的值
echo “VALUE” > /proc/sys/path/to/parameter
echo “websrv” > /proc/sys/kernel/hostname
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
net.ipv4.icmp_echo_ignore_all
vm.drop_caches
/sys目录:
sysfs:为用户使用的伪文件系统,输出内核识别出的各硬件设备的相关属性信息,也有内核对硬件特性的设定信息;有些参数是可以修改的,用于调整硬件工作特性.udev通过此路径下输出的信息动态为各设备创建所需要设备文件,udev是运行用户空间程序
专用工具:udevadmin, hotplug
udev为设备创建设备文件时,会读取其事先定义好的规则文件,一般在/etc/udev/rules.d及/usr/lib/udev/rules.d目录下
ramdisk管理
ramdisk文件的制作:
(1) mkinitrd命令
为当前正在使用的内核重新制作ramdisk文件
mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)
(2) dracut命令
为当前正在使用的内核重新制作ramdisk文件
dracut /boot/initramfs-$(uname -r).img $(uname -r)
uname 命令:
uname 输出系统信息
-n : 显示节点信息
-r : 显示发行版本
-a : 显示所有信息
原创文章,作者:M20-石俊,如若转载,请注明出处:http://www.178linux.com/45947
grub shell 错误_GRUB启动故障排除和内核编译相关推荐
- grub shell 错误_grub命令_Linux grub 命令用法详解:多重引导程序grub的命令行shell工具...
grub命令是多重引导程序grub的命令行shell工具. 语法grub(选项) 选项--batch:打开批处理模式: --boot-drive=:指定stage2的引导驱动器: --config-f ...
- 电脑出现错误信息的故障排除
1.出现TASKMON caused an invalid page fault in module KERNEL32.DLL (1)适用范围:Windows Me.Windows 98 (2)症状: ...
- Linux系统之TroubleShooting(启动故障排除)
尽管Linux系统非常强大,稳定,但是我们在使用过程当中,如果人为操作不当,仍然会影响系统,甚至可能使得系统无法开机,无法运行服务等等各种问题.那么这篇博文就总结一下一些常见的故障排除方法,但是不可能 ...
- grub shell 错误_各种情况GRUB损坏进不了系统的解决方案
1.在磁盘分区表变动之后,比如删除了grub.cfg所在分区的前一个分区,导致分区号前移一位时,开机显示 grub rescue> . 处理方法:(假设原来grub.cfg在/dev/sda4, ...
- grub shell 错误_使用 grub shell 修改品牌电脑 BIOS 中屏蔽的 DVMT 设置
在某些情况下,我们可能需要变更 DVMT 的设置,但是一些品牌电脑的 BIOS 中可能屏蔽了此项设置,我们可以使用下面方式通过 Grub Shell 来直接修改这项设置. 工具获取 本文中使用的工具, ...
- 马哥学习----李洋个人笔记--启动故障排除
故障1 删除/boot之后的恢复步骤: 1 重启电源,迅速按esc进去选择启动模式,然后选cd-rom这项(从光驱启动) 2 重启后进入救援模式(选择rescue),选择语言和键盘布局后,一路回车到下 ...
- grub shell 错误_使用grub-install修复Grub时出错
你的位置: 问答吧 -> Debian -> 问题详情 使用grub-install修复Grub时出错 WinXP+Debian双系统,由于误操作导致开机后无法进入系统,错误信息为: GR ...
- 详细故障排除步骤:针对 Azure 中到 Windows VM 的远程桌面连接问题
本文提供详细的故障排除步骤,用于为基于 Windows 的 Azure 虚拟机诊断和修复复杂的远程桌面错误. Important 若要消除更常见的远程桌面错误,请务必先阅读远程桌面的基本故障排除文章, ...
- linux5启动过程及故障排除
启动过程及故障排除 1加电-----cmos---(post上电自检程序------mbr引导----grub菜单 开机自检>MBR引导>GRUB菜单>加载内核>运行init进 ...
最新文章
- SAP SD基础知识之维护中央信贷主数据
- 用 Flask 来写个轻博客 (12) — M(V)C_编写和继承 Jinja 模板
- 如何修改markdown中图片的大小
- Manage Jenkins管理界面提示“依赖错误: 部分插件由于缺少依赖无法加载...“问题解决办法
- android 版本权限差别,android apk 的root 权限和USB adb 权限的区别
- 考研计算机专业课复习,考研中计算机专业课的复习考试.pdf
- centos 安装java sdk_Linux——CentOS7使用yum命令安装Java SDK
- WinXp怎么开机进入Dos
- 通过ng-change选择ng-object
- iOS gmssl 编译
- 手机怎么用外嵌字幕_怎么用手机给视频添加字幕?原来方法这么简单,3分钟教你学会...
- 【ObjectArx C++】CAD二次开发第一课 如何开发调试
- 差分管电路图_差分放大器的非线性应用
- 数学建模之马尔可夫链模型详解(附详细Matlab程序)
- msm8953 android8.1编译环境搭建
- mib文件在服务器的什么位置,MIB文件简单分析
- MPLS-虚拟专用网络
- MySql安装 Staring the server出错
- 计算机无法启动 一直在启动修复需要多久,关于电脑总是卡机蓝屏启动修复~...
- 读论文《Natural Language Processing (Almost) from Scratch》
热门文章
- SpringCloud服务消费者第一次调用出现超时问题的解决方案
- MySQL显示ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)解决方法
- Redis 配置连接池,redisTemplate 操作多个db数据库,切换多个db,解决JedisConnectionFactory的设置连接方法过时问题。(转)
- jsp项目中连接数据库解决java.lang.ClassNotFoundException: com.mysql.jdbc.Driver的问题
- org.springframework.beans.factory.BeanCreationException 解决异常错误
- 如何将github存储库回滚到特定提交?
- 如何在Python中定义二维数组
- .vimrc文件中的leader是什么?
- 全网首译 : 初学者终极指南—掌握Scrum敏捷框架—第1章
- 撩课-Web大前端每天5道面试题-Day38