首先看linux内核重要文件grub

linux内核启动修复

首先看linux内核重要文件grub.conf

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/sda2
#          initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0    #如果有多个菜单,默认选择的菜单为0
timeout=5    #菜单选项栏等待5s
splashimage=(hd0,0)/grub/splash.xpm.gz   #/dev/sda1即/boot下开机启动图片
hiddenmenu   #影藏菜单
title CentOS 6 (2.6.32-696.el6.x86_64)     #标题为CentOS 6 (2.6.32-696.el6.x86_64),此标题不能没有
    root (hd0,0)     #第一块磁盘,第1个分区,指的是/boot
    kernel /vmlinuz-2.6.32-696.el6.x86_64 ro root=UUID=9ca5bdac-ce61-410e-a9fb-19a7877163cc rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSF ONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet      #  kernel相对于/boot的路径,此处根值/boot,kenrl后面跟有系统启动相关参数  rhgb 图形化工具(转圈圈),删除rhgb直接到正常启动界面   quiet默认隐藏内核的启动过程
    initrd /initramfs-2.6.32-696.el6.x86_64.img

title CentOS 6 (2.6.32-696.el6.x86_64)     #标题为CentOS 6 (2.6.32-696.el6.x86_64),此标题不能没有
    kernel (hd0,0)/vmlinuz-2.6.32-696.el6.x86_64 ro root=UUID=9ca5bdac-ce61-410e-a9fb-19a7877163cc rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSF ONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet      #  没有定义根,后面不能调用只能在前面添加(hd0,0)
    initrd (hd0,0)/initramfs-2.6.32-696.el6.x86_64.img

  

一:删除/boot/grub/*下所有文件,只保留grub.conf配置文件,系统能否正常启动修复?

系统能够正常启动

stage2阶段就是一个grub.conf配置文件,其它文件都不起到直接的作用

此时重新启动系统只会在一开始报一个没有启动图片的错误,此错误不影响系统的正常启动(可忽略),/boot/grub下的所有文件只做暂时备份使用即stage1 stage1_5阶段的备份文件,只有当1和1.5阶段出现故障的时候 可以通过一些命令进行修复,修复的时候会用到此处的备份文件

二:破坏MBR的前446字节的信息,修复(stage1阶段修复)

dd if=/dev/zero of=/dev/sda bs=1 count=4426

破坏stage1阶段

此时发现系统重启进入光盘界面

重启系统直接进入光盘界面,也就是光盘上的MBR没有启动代码

选择第三项进入救援模式

修复步骤

1.切根  chroot /mnt/sysiamge

此时所处的位置并不是磁盘上的根,真正的根位于/mnt/sysimage下

起因:在救援模式自身是不提供grub-install的只有切根才可以

2.grub-install  /dev/sda

修复grub,此过程stage[1,1.5,2]都可以修复

此时出现分区别标签的错误,不用管,此步骤容易出现故障

3.sync

确保磁盘已经写入进去了

此时不仅修复了mbr还修复了grub里面不同stage的文件

4.退出shell,重新启动

总结:此时stage1阶段的恢复完成,主要通过grub-install进行恢复

-------------------------------补充关闭selinux---------------------------

1、重启系统按c键,直接进入grub

grub> kernel /vmlinuz-2.6.32-696.el6.x86_64 ro root=/dev/sda2 selinux=0

grub> initrd /initramfs-2.6.32-696.el6.x86_64.img

grub> boot

2、通过修改/etc/sysconfig/selinux     把selinux=disabled

-----------------------------------------------------------------------------------

三 破坏512字节之后的内容进行修复(stage1.5阶段过程)

dd if=/dev/zero of=/dev/sda bs=1 count=10240 seek=512

此时会发现菜单都看不到

stage1.5出故障使用光盘引导

修复步骤:

1.按Esc键进入光盘引导界面

2.选择第三项进入救援模式

3.切根  chroot /mnt/sysimage

4.grub-install或者使用grub命令

sh-4.1# grub

grub>root (hd0,0)     #表示boot在第一块磁盘第1个分区

setup (hd0)      #此步骤依赖于/boot/grub/*下面的文件

--------------------------------------------------------------------------------------------------------

表示把grub按在哪个硬盘上,没有写分区的原因在于有一部分是装在MBR里面的即boot分区里面,boot里面有一个目录名为grub,告诉各个路径在什么地方

-------------------------------------------------------------------------------------------------------------

5.sync   #设置通过到磁盘

6.reboot  #退出shell,重启系统方可恢复

四  在“三”的基础上再重新做“一”的操作,在启动会出现报错,状态码是Error 15

修复方案:

如把stage2文件复制到/boot/grup目录下,系统可以重新启动

解释

重启系统,此时可以知道重新安装grub以后stage2并不是起备份作用了,“一”中之所以成功是通过磁盘上别的空间来读取数据,可以明白stage1.5阶段已经成功了

注:如果后期没有更改时间,grub.conf文件时间就是安装操作系统的时间

在grub.conf文件下kernel没有写/boot分区是因为boot是一个独立分区,此文件是相对于boot分区,/=/boot

如果没有指定root的位置必须指定kernel,initrd的位置及在前面加上(hd0,0),即为/boot

五  如果没有root(hd0,0)且kernel,initrd不指定/boot的位置会出现如下报错

title CentOS 6 (2.6.32-696.el6.x86_64)     #标题为CentOS 6 (2.6.32-696.el6.x86_64),此标题不能没有
    kernel vmlinuz-2.6.32-696.el6.x86_64 ro root=UUID=9ca5bdac-ce61-410e-a9fb-19a7877163cc rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSF ONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet      #  没有定义根,后面不能调用只能在前面添加(hd0,0)
    initrd initramfs-2.6.32-696.el6.x86_64.img

此时只能进入救援模式切根修改文件
title CentOS 6 (2.6.32-696.el6.x86_64)     #标题为CentOS 6 (2.6.32-696.el6.x86_64),此标题不能没有
    kernel /vmlinuz-2.6.32-696.el6.x86_64 ro root=UUID=9ca5bdac-ce61-410e-a9fb-19a7877163cc rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSF ONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet      #  没有定义根,后面不能调用只能在前面添加(hd0,0)
    initrd /initramfs-2.6.32-696.el6.x86_64.img

  

六 如果在默认文件中去掉root (hd0,0)一行系统启动会出现的情况

title CentOS 6 (2.6.32-696.el6.x86_64)
    kernel /vmlinuz-2.6.32-696.el6.x86_64 ro root=UUID=9ca5bdac-ce61-410e-a9fb-19a7877163cc rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSF ONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
    initrd /initramfs-2.6.32-696.el6.x86_64.img

开头出现下面的提示,但是系统能够正常的启动

七 调换kernel和initrd调换顺序,开机启动情况?

title CentOS 6 (2.6.32-696.el6.x86_64)
    initrd /initramfs-2.6.32-696.el6.x86_64.img
    kernel /vmlinuz-2.6.32-696.el6.x86_64 ro root=UUID=9ca5bdac-ce61-410e-a9fb-19a7877163cc rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSF ONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet

  

解释:直接报错,大概意思是linux kernel必须在initrd之前加载,否则系统无法启动

只有加载kernel才会知道操作系统的根,找到根了才会找到内存用户驱动

修复步骤

修复方法,显示删除initrd添加一新行,在编辑新行grub> initrd /initramfs-2.6.32-696.el6.x86_64.img

八 单用户模式下可以轻易破解口令,如何明文加密口令?

加上密码口令并不影响启动,只是不能菜单编辑

在title的上一行加上passwd   密码     此时验证的时候不知道都不会成功

password zangfans

  

验证会出现Failed

操作

在hidddenmenu上方和initrd下方各插入一行

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/sda2
#          initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
password centos6    #编辑菜单项输入密码
hiddenmenu
title CentOS 6 (2.6.32-696.el6.x86_64)
    root (hd0,0)
    kernel /vmlinuz-2.6.32-696.el6.x86_64 ro root=UUID=9ca5bdac-ce61-410e-a9fb-19a7877163cc rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSF ONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
    initrd /initramfs-2.6.32-696.el6.x86_64.img

title CentOS 6 (2.6.32-696.el6.x86_64)
    kernel (hd0,0)/vmlinuz-2.6.32-696.el6.x86_64 ro root=UUID=9ca5bdac-ce61-410e-a9fb-19a7877163cc rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSF ONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet      #
    initrd (hd0,0)/initramfs-2.6.32-696.el6.x86_64.img
    password centos6   #启动输入密码

  

九 如何通过密文设置加密口令

使用加密算法对口令进行加密,可以使用MD5.SHA512

明文加密

1、使用grub-md5-crypt设置密码

[[email protected] ~]# grub-md5-crypt
Password:
Retype password:
$1$Z.gAn/$Xd647hXfPj/sJ.i8A0By8.

  

进入/boot/grub/grub.conf文件使用vim编译器的功能

输入密码和验证,即可生成一段md5加密的字符串

password --md5 $1$V1hAn/$hSLRXWfIZWwVtYz4th5rg1

  

密文加密

2、使用grub-crypt及sha512进行加密

[[email protected] ~]# grub-crypt
Password:
Retype password:
$6$jkKAT.eUrv3d4bfM$f41lkKlqQk3fAPqNwgy93J6Wi6bVF.zB5b.24V1QPwAGXkVVmwk2MGdi1UxzStHBaPWarW20AppaOvwheNRRj.

  

修改/boot/grub/grub.conf文件

password --encrypted $6$ndPVD/LnVhjBwHaG$XlSiTmJfRJrWufrmH0tLzle/zlmCB.Zyi/WClkcL8G43NDpXlKuQPvsw4AiIJqT1fJrb2Kh8DgZLY68pIAKFI0

  

十 如果忘记root账号口令,如何修复?

修复方案:

可以通过救援模式删除口令

删除口令之后进入系统直接输入root用户无需密码验证就可以登录

十一 设置启动背景图片

图片像素和格式是有要求的

使用convert工具对图片像素进行设置

首先得安装convert命令所提供的包

[[email protected] ~]# which convert
/usr/bin/convert
[[email protected] ~]# rpm -qf `which convert`
ImageMagick-6.7.2.7-6.el6.x86_64
[[email protected] ~]# convert -resize 640x480 -colors 14 zf.jpg zf.xpm      #此命令必须在zf.jpg位置使用,使用less zf.xpm可以在头部看到相关信息
[[email protected] ~]# cp zf.xpm /boot/grub
[[email protected] grub]# vim grub.conf
splashimage=(hd0,0)/grub/zf.xpm

  

进入grub界面就能看到设置的背景图片

查看内核启动参数内核参数

[[email protected] ~]# cat /proc/cmdline
ro root=UUID=9ca5bdac-ce61-410e-a9fb-19a7877163cc rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16   KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet

  

十二 删除grub.conf文件,启动修复

环境:/boot/grub 目录下只有stage2文件,删除原有的grub.conf文件

重启系统进入如下界面

解释:stage1、stage1.5没有问题主要stage2有问题,连菜单都进不去,直接跳到grub

修复方案:

grub支持交互式输入,如果没有grub.conf文件可以手动输入

十三 删除/boot/grub整个目录,如何修复?

[[email protected] ~]# rm -rf /boot/grub

重启进入如下界面

修复方案:

1、进入救援模式

2、chroot /mnt/sysimage 切根

3、使用grub-install /dev/sda

4、sync同步磁盘,此时grub目录已经修复好了

5、写一个grub.conf文件

因为修复时并没有grub.conf文件必须手写

#必须写三项分别是title kernel initrd
default 0
timeout 3
title  Centos6
kernel /vmlinuz-2.6.32-696.el6.x86_64 ro root=/dev/sda2       #方便的小技巧,防止手敲出错
initrd /initramfs-2.6.32-696.el6.x86_64.img

  

使用UUID也是可以的

注:r!blkid|grep /dev/sda2   #UUID后面注意去掉引号

十四 删除/boot下所有文件如何修复?  

环境:

[[email protected] ~]# ls /boot
config-2.6.32-696.el6.x86_64  initramfs-2.6.32-696.el6.x86_64.img  System.map-2.6.32-696.el6.x86_64
efi                           lost+found                           vmlinuz-2.6.32-696.el6.x86_64
grub                          symvers-2.6.32-696.el6.x86_64.gz
[[email protected] ~]# rm -rf /boot
rm: cannot remove `/boot‘: Device or resource busy
[[email protected] ~]# ls /boot
[[email protected] ~]# 

修复分析:

主要修复/boot里面的内核,虚拟文件系统,grub。内核:可以在光盘里面找或者去其它相同系统的机子上拷一份

修复方案:

1、进入救援模式

2、chroot /mnt/sysimage  切根

3、挂载光盘    mount /dev/sr0  /mnt

4、cd /mnt/selinux/

vmlinuz  大小和刚开始文件系统大小是一样的,说明内核是一个固定不变的东西

5、cp vmlinuz /boot  复制内核到/boot下

6、mkinitrd /boot/initramfs.img `uname -r`

7、grub-install /dev/sda

8、在/boot/grub目录下新建一个grub.conf文件

default o

timeout 3

title Centos6

kernel  /vmlinuz ro root=/dev/sda2

initrd    /initramfs.img

9、重启恢复正常

十五 误删除/sbin/init,无法进入系统如何修复?

[[email protected] ~]# mv /sbin/init ~/

恢复方案;

1、进入grub

2、按a键在后面添加 init=/bin/bash  #指定不用系统默认的init,使用/bin/bash来代替

用bash来作为计算机的第一个进程,bash内置了一些内部命令

4、回车之后进入如下界面,可以输入一些命令

5、查看/sbin/bash命令来自哪个包

bash-4.1# rpm -qf /sbin/init
#upstart包提供

此时挂载是只读挂载,不能安装此包

6、重新挂载根,默认只读挂载

bash-4.1# mount -o remount,rw /

7、安装upstart包

注意此时光盘已经挂载,安装包要覆盖安装,--force选项,upstart包毕竟已经安装过了

#默认光盘已经挂载在/mnt
bash-4.1# cd /mnt
bash-4.1# rpm -ivh /Packages/upstart-xxxxxx  --force

8、同步到磁盘

bash-4.1# sync

9、检查一下可以看到/sbin/bin

总结:/sbin/bin文件误删除后,不需要进入救援模式就可以直接通过命令进行修复,过程中发现根是只读挂载的,必须重新挂载才能安装upstart包

十六 误删除/etc/fstab文件和/boot下的所有文件如何修复?

[[email protected] ~]# rm -rf /etc/fstab
[[email protected] ~]# rm -rf /boot

重启后进入如下界面

修复分析:进入救援模式怎么区分/boot,/,/swap?可以通过挂载分区,进入挂载目录里面,查看内容,以区分区挂载目录

bash-4.1# mkdir /mnt/tmp   #创建
bash-4.1# mount /sda1 /mnt/tmp   #挂载到临时文件
bash-4.1# ls /mnt/tmp    #查看里面的内容,此处可以看到没有任何文件可以判断为/boot
通过以上方法就可以知道每个分区到底是什么

  

恢复方案:

1、进入救援模式

2、chroot /mnt/sysimage   #切根

3、mkdir /mnt/tmp

4、mount /dev/sda2 /mnt/tmp

5、touch /mnt/tmp/etc/fstab   #创建删除的文件

6、vi /mnt/tmp/etc/fstab

/dev/sda1 /boot  ext4   defaults 0 0

/dev/sda2 /         ext4   defaults 0 0

/dev/sda5 swap  swap  defaults 0 0

错误一:扩展内存加上了/

错误二:文件系统类型为ext4

注:此处是一个大坑,稍有出错会导致在救援系统里面无法挂载光盘

7、重启系统进入救援模式

8、切根挂载光盘

chroot /mnt/sysimage/

mount /dev/cdrom /mnt

9、重新安装内核

rpm -ivh /mnt/Packege/kernel-xxxxx.rpm --force

这里不同于“十四”,重新安装内核,“十四”是通过复制光盘的文件到/boot,重写grub.conf进行恢复

10、此时/boot会生成一些新文件  (看教程使用在强制安装kernel后在做grub-instlal /dev/sda,通过我的操作过程我了解在重新安装内核会自动生成grub目录里面的内容)

11、新建grub.conf文件

#必须写三项分别是title kernel initrd
default 0
timeout 3
title  Centos6
kernel /vmlinuz-2.6.32-696.el6.x86_64 ro root=/dev/sda2
initrd /initramfs-2.6.32-696.el6.x86_64.img

12、重启系统,恢复正常

十七 根文件系统放在逻辑卷上,若误操作删除/fstab /boot/*文件该如何修复?

[[email protected] ~]# mv /etc/fstab /root
[[email protected] ~]# rm -rf /boot/*

  

此时boot里面的内核文件已经删除了,所以不能通过手写恢复,只有通过救援模式

重启直接进入grub

修复分析:boot分区是不能放在逻辑卷上的,那么有多快逻辑卷如何区分哪块逻辑卷是根?

恢复方案:

1、进入救援模式

2、创建一个临时目录   mkdir /mnt/tmp

3、激活逻辑卷  vgchage -ay    #当前逻辑卷状态处于非活动状态,必须激活才可以

4、根据我的机器我从里面文件的结构和大小了解到,Vo100,Vo101app,Vo102分别为root、app、swap

5、挂载/dev/vg_centos6lvm/LogVo100到/mnt/tmp

mount /dev/vg_centos6lvm/LogVo100 /mnt/tmp

6、新建fstab文件

touch /mnt/tmp/etc/fstab

7、对fstab文件添加挂载信息

vi /mnt/tmp/etc/fstab

8、重启系统,挂载一下分区,然后进入救援模式

9、切根 chroot /mnt/sysimage

到此步不能用第十四题思路对grub解题

10、重新安装内核

rpm -ivh /mnt/Packege/kernel-xxxxx.rpm --force

这里不同于“十四”,重新安装内核,“十四”是通过复制光盘的文件到/boot,重写grub.conf进行恢复

11、重写grub.conf文件

#必须写三项分别是title kernel initrd
default 0
timeout 3
title  Centos6_lvm
kernel /vmlinuz-2.6.32-696.el6.x86_64  ro root=/dev/vg_centos6lvm/LogVo100  selinux=0
initrd /initramfs-2.6.32-696.el6.x86_64.img

12、重启系统,恢复正常

原文地址:https://www.cnblogs.com/zangfans/p/8672155.html

时间: 2024-08-25 18:15:34

首先看linux内核重要文件grub的相关文章

Linux 内核的文件 Cache 管理机制介绍-ibm

https://www.ibm.com/developerworks/cn/linux/l-cache/ 1 前言 自从诞生以来,Linux 就被不断完善和普及,目前它已经成为主流通用操作系统之一,使用得非常广泛,它与 Windows.UNIX 一起占据了操作系统领域几乎所有的市场份额.特别是在高性能计算领域,Linux 已经成为一个占主导地位的操作系统,在2005年6月全球TOP500 计算机中,有 301 台部署的是 Linux 操作系统.因此,研究和使用 Linux 已经成为开发者的不可回

Linux 内核的文件 Cache 管理机制介绍

Linux 内核的文件 Cache 管理机制介绍 文件 Cache 管理是 Linux 内核中一个很重要并且较难理解的组成部分.本文详细介绍了 Linux 内核中文件 Cache 管理的各个方面,希望能够对开发者理解相关代码有所帮助. http://www.ibm.com/developerworks/cn/linux/l-cache/ http://www.cnblogs.com/MYSQLZOUQI/p/4857437.html 1 前言 自从诞生以来,Linux 就被不断完善和普及,目前它

linux内核头文件kdev_t.h 宏定义解析

kdev_t.h 宏定义解析 这个header file反正不多,直接原因是--遇到了,就搞定它! dev_t 类型的变量定义在linux/types.h 用来保存设备编号--包括主设备号和次设备号.dev_t 是一个32位的数,其中12位用来表示设备号,其余20位用来表示次设备号. 始终不要对这32位是高12位是主设备号还是低2位是主设备号做出假定,不利于代码的可移植性,始终记得使用宏定义来处理dev_t ! 都在这里了: #define MINORBITS 20 //次设备号的占位数目 #d

linux内核头文件 cdev.h 解析

遇到一个内核API--cdev_init 就找到这里来了. #ifndef _LINUX_CDEV_H #define _LINUX_CDEV_H #include <linux/kobject.h #include <linux/kdev_t.h> #include <linux/list.h> struct file_operations; struct inode; struct module; struct cdev { struct kobject kobj; st

Linux内核Makefile文件(翻译自内核手册)

转载自:http://www.cnblogs.com/jason-lu/p/3728198.html --译自Linux3.9.5 Kernel Makefiles(内核目录documention/kbuild/makefiles.txt) kbuild(kernel build) 内核编译器 This document describes the Linux kernel Makefiles 本文当介绍了Linux内核的Makefile === Table of Contents=== 目录

linux 内核头文件及内核库文件

与用户空间应用不同的是,内核不能调用标准C库或其它任何不属于内核的库.主要原因是,速度及大小的限制. 标准C库对内核而言实在是太大了. 许多常用的的 libc 函数已经在内核中实现了.内核中的库文件是在内核的根目录下 lib 目录下存放. 如常用的字符串操作函数是在 lib/string.c 中定义的,调用时主需要将头文件 <linux/string.h>包含进即可. 关于内核的头文件,内核是不能包含内核之外的头文件的,如同内核不能调用内核之外的库一样. 1)基本的头文件放在内核的 inclu

Linux内核的文件预读readahead

Linux的文件预读readahead,指Linux系统内核将指定文件的某区域预读进页缓存起来,便于接下来对该区域进行读取时,不会因缺页(page fault)而阻塞.因为从内存读取比从磁盘读取要快很多.预读可以有效的减少磁盘的寻道次数和应用程序的I/O等待时间,是改进磁盘读I/O性能的重要优化手段之一. 维基百科上关于readhead的介绍资料: readahead is a system call of the Linux kernel that loads a file's content

你为什么看不懂Linux内核驱动源码?

学习嵌入式Linux驱动开发,最核心的技能就是能够编写Linux内核驱动.深入理解Linux内核.而做到这一步的基础,就是你要看得懂Linux内核源码,了解其基本的框架和具体实现,了解其内核API的使用方法,然后才能根据自己的需求写出高质量的内核驱动程序. 说易行难,很多新人.甚至工作1-2年的开发者刚接触Linux内核时,别说写了,看内核代码可能都是一脸懵逼:明明是C语言,但是就是看不懂是什么意思,除了根据函数名.函数参数.函数的返回值以及注释,了解整个函数的基本功能外,一旦分析其细节,你会发

Linux内核分析+子安全系统selinux+Linux的用户组和用户

一.Linux内核分析/etc/grub.conf文件 1.passwd命令 Linux以安全性和稳定性在世界上自居,在Linux发明之初就在安全领域做了很多手段,其中最简单就是提供了密码的登录和密码修改的功能,在Linux系统当中无论什么用户都必须具有密码才能登录Linux操作系统. 命令格式: passwd [用户名] 命令作用:更新或者设置用户登录的密码 2.黑客攻防:Linux单用户模式破解root密码 原因在大部分的人安装Linux的时候,很多人没有设置装载引导的密码,所以就导致黑客可