系统启动及恢复

一、知识整理

1、modinfo命令:显示模块的详细描述信息:

-n 只显示模块文件路径

-p 显示模块参数

-a auther

-d description

-l license协议

modprobe命令:装载或卸载内核

-r卸载内核,同rmmod

配置文件:/etc/modprobe.d/*.conf

depmod命令:内核模块依赖关系文件及系统信息映射文件的生成工具

[root@centos68 testdir]# depmod
[root@centos68 testdir]#

insmod命令:加载模块,指定模块文件,不自动解决依赖模块:

[root@centos68 ~]# modprobe ntfs
[root@centos68 ~]# lsmod
Module                  Size  Used by
ntfs                  197214  0 
nls_utf8                1389  1 
autofs4                33127  3 
[root@centos68 ~]# rmmod ntfs
[root@centos68 ~]# insmod `modinfo -n ntfs`
[root@centos68 ~]# lsmod
Module                  Size  Used by
ntfs                  197214  0 
nls_utf8                1389  1 
autofs4                33127  3

2、/proc目录:内核把自己内部状态信息及统计信息,以及可配置参数通过proc伪文件系统加以输出:有些可以指定配置,有些不能修改。内核信息:

[root@centos68 ~]# cat /proc/cmdline 
ro root=UUID=aaad69ad-d716-4676-941f-851223ddab7f rd_NO_LUKS 
KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD.UTF-8 rd_NO_LVM rd_NO_DM quiet

二、命令详解及事例

1、系统配置文件丢失的修复方法: 当没有备份文件的时候,想恢复/etc/inittab文件:

通过重新安装软件包来恢复,首先找到/etc/inittab属于哪个rpm包,然后救援模式下安装rpm包,使用–force或–replacepkgs覆盖安装即可恢复原文件:

[root@centos68 sysroot]# rpm -qf /etc/inittab 
initscripts-9.03.53-1.el6.centos.x86_64

若只想提取RPM包中的/etc/inittab文件进行恢复,可以在进入救援模式后,执行命令:

[root@centos68testdir]# rpm2cpio /media/cdrom/Packages/initscripts-9.03.53-1.el6.centos.x86_64.rpm |cpio -idv  ./etc/inittab

将单个文件解压到当前目录下,不写目录默认解压所有文件到当前目录。

2、sysctl命令:对sys目录下的文件操作。默认配置文件:/etc/sysctl.conf

[root@centos68 ~]# cat  /etc/sysctl.conf 
# Kernel sysctl configuration file for Red Hat Linux
# For binary values, 0 is disabled, 1 is enabled.  See sysctl(8) and
# sysctl.conf(5) for more details.
# Use '/sbin/sysctl -a' to list all possible parameters.
# Controls IP packet forwarding
net.ipv4.ip_forward = 0

设置某参数:sysctl -w parameter=VALUE,此处的.表示目录路径/。

[root@centos68 ~]# sysctl -w net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1
[root@centos68 ~]# sysctl -w net.ipv4.ip_forward=0
net.ipv4.ip_forward = 0

通过读取配置文件设置参数:sysctl -p [/PATH/CONF_FILE]:若直接修改了配置文件,则用此命令重读配置文件进内核。

[root@centos68 ~]# sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296

最大最小共享内存

[root@centos68 ~]# sysctl -p /proc/sys/net/ipv4/ip_forward
[root@centos68 ~]#

内核中的路由转发:/proc/sys/net/ipv4/ip_forward,0或1

常用的几个参数:net.ipv4.ip_forward

net.ipv4.icmp_echo_ignore_all开启和禁止linux系统的ping功能,1为禁止

vm.drop_caches清空缓存,用free查看

echo 1 > /proc/sys/vm/drop_caches

3、sys目录:输出内核识别出的各硬件设备的相关属性信息,也有内核对硬件特性的设定信息,有些参数是可以修改的,用于调整硬件工作特性。udev通过此路径下输出的信息动态为各设备创建所需要的设备文件,udev是运行用户空间程序。udev为设备创建设备文件的时,会读取其事先定义好的规则文件,一般在/etc/udev/rules.d及/usr/lib/udev/rules.d目录下。专用工具:udevadmin,hotplug

4、ramdisk文件的制作:mkinitrd和dracut

dracut|mkinitrd /boot/initramfs-$(uname -r).img  $(uname -r)

5、了解全部硬件设备信息:hal-device

查看PCI设备信息:lspci,lsusb

-v 详细信息

-vv 更详细的信息

[root@centos68 boot]# lsusb
Bus 002 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse
Bus 002 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

第一个字段:USB主控器号:001号接了一个设备,002号接了3个

第二个字段:总线上的设备序列号,在一个总线上序列号唯一

第三个字段:供应商和产品ID

第四个字段:供应商和产品ID字符串表示形式

[root@centos68 boot]# lspci | grep -i usb
02:00.0 USB controller: VMware USB1.1 UHCI Controller
02:02.0 USB controller: VMware USB2 EHCI Controller

一共有两个主控器

[root@centos68 boot]# lspci
00:00.0 Host bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (rev 01)
00:01.0 PCI bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 01)
00:07.0 ISA bridge: Intel Corporation 82371AB/EB/MB PIIX4 ISA (rev 08)
00:07.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01)
00:07.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 08)
00:07.7 System peripheral: VMware Virtual Machine Communication Interface (rev 10)
00:0f.0 VGA compatible controller: VMware SVGA II Adapter
00:10.0 SCSI storage controller: LSI Logic / Symbios Logic 53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI (r
ev 01)00:11.0 PCI bridge: VMware PCI bridge (rev 02)
00:15.0 PCI bridge: VMware PCI Express Root Port (rev 01)
00:15.1 PCI bridge: VMware PCI Express Root Port (rev 01)
00:15.2 PCI bridge: VMware PCI Express Root Port (rev 01)
00:15.3 PCI bridge: VMware PCI Express Root Port (rev 01)
00:15.4 PCI bridge: VMware PCI Express Root Port (rev 01)
00:15.5 PCI bridge: VMware PCI Express Root Port (rev 01)
00:15.6 PCI bridge: VMware PCI Express Root Port (rev 01)

lspci输出内容:第一个字段:<bus>:<slot>:<func>:具体参考-s参数

第一个字段:Host bridge,数字形式通过-n获得

第三个字段:供应商,数字形式通过-n获得

第四个字段:产品ID

三、课后练习

1、破解root口令,并为grub设置保护功能

首先进入单用户模式更改密码

blob.png

blob.png

设置保护功能:更改grub.conf文件:password写在title的上方,即内核编辑时候的密码。若写在title内部则是开机密码。为增加安全性,不使用明文,使用md5加密,在vim中直接读入命令:

blob.png

重启之后,再进行内核编辑则需要输入密码,不影响开机。

blob.png

输入密码

blob.png

密码书写方式:password –md5 $1$oEPXy$wqt2b5Mwg07etxLHw6jiw/

可以直接写明文,password STRING

使用md5加密的两个命令:grub-md5-crypt和openssl passwd -salt “” -1

第二种方式可以不指定salt,最后是数字1,代表md5加密方式。

1、破坏本机grub stage1,而后在救援模式下修复

blob.png

1、删除vmlinuz和initramfs文件后无法启动,两种方法恢复

首先重装内核:

blob.png

blob.png

然后恢复initrd文件:

blob.png

1、删除/etc/fstab和/boot目录的所有文件,并恢复

进入救援模式,挂载分区,找出根分区,首先恢复fstab文件,重启再进入救援模式:

blob.png

blob.png

修复boot目录:首先安装内核,然后生成grub,重写grub.conf文件:

blob.png

blob.png

重启系统。

3、编译安装kernel,启动支持ntfs文件系统功能

下载内核文件,解压至/usr/src目录下;

为解压后的目录在当前目录下创建软链接;

[root@centos68 src]# ln -sv linux-3.16.37  linux
"linux" -> "linux-3.16.37"

创建一个编译文件:

[root@centos68 src]# cp /boot/config-`uname -r` ./linux/.config
[root@centos68 linux]# ls -a 
.   .config  Documentation .gitignore  Kbuild   .mailmap   net    scripts   usr
.. COPYING  drivers  include  Kconfig  MAINTAINERS  README  security  virt
arch CREDITS  firmware  init  kernel   Makefile   REPORTING-BUGS  sound
block  crypto fs    ipc    lib      mm      samples   tools

使用make help可以查看帮助信息;

使用make menuconfig管理编译时模块信息:

blob.png

找到文件系统,将ntfs编译为模块:

blob.png

配置内核选项:通常使用如下几种方式:

make config 基于命令行以遍历的方式去配置内核每个选项

make gconfig 基于Gnome环境窗口界面

make xconfig 基于KDE环境的窗口界面

make defconfig 基于内核为目标平台提供的默认配置进行配置

make allyesconfig 所有选项均为yes

make allnoconfig 所有选项均为no

进行编译:命令make:可以指定编译使用的cpu核心数:

blob.png

编译可以只编译一部分功能,例如编译子目录中的相关代码:make DIR/

只编译特定的模块:make DIR/FILE.ko

只编译网卡驱动:make drivers/net/ethernet/intel/e1000/e1000.ko

交叉编译:编译的目标平台与当前平台不相同make ARCH=arch_name

要获取特定目标平台的使用帮助:make ARCH=arch_name help;例如arm平台。

模块编译:

blob.png

编译安装:make install

blob.png

编译内核的过程中,如果内存太小会报杀死进程的错误。编译完成后重启生效。

编译之后清理缓存等:make clean 清理大多数编译生成的文件,但会保留config文件;

make mrproper 清理所有编译生成的文件、config及某些备份文件;

make distclean 清理mrproper、patches以及编译器备份文件。

原创文章,作者:SilencePavilion,如若转载,请注明出处:http://www.178linux.com/48068

赞 (0)
SilencePavilionSilencePavilion
上一篇 2016-09-22 10:04
下一篇 2016-09-22 10:04

相关推荐

  • sed使用详解

    vim  ,sed 1.首先,sed作为一个流编译器,它是对文本进行处理的,它和grep虽然都是对文本进行处理的,但是sed的处理机制和grep还是有很大的不同的,grep:文本过滤(模式:pattern)工具;grep, egrep, fgrep(不支持正则表达式搜索)sed:stream editor,文本编辑工具;awk:Linux上的实现g…

    Linux干货 2016-08-11
  • ​文件共享服务之FTP

    文件共享服务之FTP 文件共享服务之FTP 一、什么是文件共享服务 二、FTP 三、响应码 四、FTP存储和mysql存储有什么不同? 五、用户认证 六、FTP安装与配置 一、什么是文件共享服务 简单理解就是文件或存储块设备可以共享给大家使用。  1、实现共享服务有三种! (1)ftp:属于应用层服务,可以跨平台使用(linux<—&gt…

    Linux干货 2016-04-18
  • iptables

    练习:基于状态放行telnet, ftp, ssh, http, samba, icmp等服务 (1) 对本机的ping请求每分钟不得超出20个 (2) 每客户端对本机的ssh的并发连接数不得超过3个 (3) 本机的telnet服务仅允许工作时间内访问 [root@node1 ~]# vim iptables.sh iptabl…

    Linux干货 2016-10-22
  • Linux的安全控制访问模块之SElinux

    SElinux   1、Selinux介绍:Linux的一个强制访问控制安全模块,2000年以GNU GPL发布,Linux内核2.6版本集成在内核中。 DAC:自由访问控制,进程是无束缚的。 MAC:强制访问控制,策略的规则决定控制的严格程度(策略被用来定义被限制的进程能够使用那些资源[文件和端口]);进程的可以被限制的;默认情况下,没有允许的行…

    Linux干货 2016-09-19
  • iptables防火墙

    Linux防火墙基础 在Internet中,企业通过架设各种应用系统来为用户提供各种网络服务,例如Web网站,电子邮件系统,FTP服务器,数据库系统等等,而防火墙就是用来保护这些服务器,过滤企业不需要的访问甚至是恶意的入侵。 Linux防火墙体系主要工作在网络层,针对TCP/IP数据包实施过滤和限制,属于典型的包过滤防火墙。Linux防火墙体系基于内核编码实…

    Linux干货 2017-01-10
  • 个人思想的转变及对学习的态度

    了解linux已经一年多了,但实际上学习的次数并不多。我是在部队的时候通过网络了解到linux,刚开始接触的是乌班图系统,感觉这个系统美化比较漂亮,就安装在虚拟机里进行各种操作,但是对命令是一窍不通的,都是通过百度粘贴复制各种命令,在复制的是同时我也感觉到头大,这个系统的输入、输出怎么都是字母出现在屏幕上,顿时就感到兴趣失去了一大半,再加上自己英语也不好,就…

    Linux干货 2018-03-26