系統啟動及恢復

一、知識整理

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,01

常用的幾個參數: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文件的制作:mkinitrddracut

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-cryptopenssl passwd -salt “” -1

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

1、破壞本機grub stage1,而后在救援模式下修復

blob.png

1、刪除vmlinuzinitramfs文件后無法啟動,兩種方法恢復

首先重裝內核:

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.www58058.com/48068

(0)
SilencePavilionSilencePavilion
上一篇 2016-09-22
下一篇 2016-09-22

相關推薦

  • psql: undefined symbol: PQconnectdbParams 已解決

    操作PostgreSQL的過程中,在執行psql的時候,遇到了如下錯誤:  /path/to/postgresql/bin/psql: symbol lookup error: /usr/pgsql-9.2/bin/psql: undefined symbol: PQconnectdbParams 整理后發現是,PostgreSQL的動態鏈接庫沒有…

    Linux干貨 2015-03-08
  • FTP基于PAM和MySQL/MariaDB實現虛擬用戶訪問控制

    前言 vsftpd是一款在Linux發行版中最受推崇的FTP服務器程序,特點是小巧輕快,安全易用,目前在開源操作系統中常用的FTP套件主要有proftpd、pureftp、ServU和wu-ftpd等。本文將講解vsftpd的基本功能和如何基于PAM和MySQL/MariaDB實現虛擬用戶訪問控制。 基礎配置介紹 工作原理 狀態響應碼 1xx:信息碼 2xx…

    2015-04-20
  • 磁盤配額的操作步驟

    磁盤配額 操作步驟: 1、創建一個10G的分區 /dev/sdd1并將其格式化,掛載 2、如果是新硬盤便不存在同步問題。舊硬盤得使用命令partx  -a /dev/sdd1 3、臨時創建掛載文件夾 /mnt/home    4、將/home/*  mv  到 /mnt/home 中,再將/dev/…

    Linux干貨 2016-09-01
  • N21 第二周練習

    ####1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。復制:cp   移動:mv    刪除:rm   cp:copy,復制文件或目錄</br>  cp [OPTION]… SOURCE… DIRECTORY…

    Linux干貨 2016-07-22
  • 筆記整理:權限管理2-特殊權限(sst)和隱藏屬性

    特殊權限 進程訪問文件時的權限,取決于進程的發起者和其所在的屬組。還有其他權限,包括SST(Suid【可以更改進程發起者】,Sgid【可以更改進程發起者屬組】,Sticky) 查詢SUID/SGID文件   find / -perm +6000 SUID 使用特點 SUID只能作用在二進制文件上。 執行者需要對該文件具有可執行權限 只在程序運行過程…

    Linux干貨 2016-08-05
  • 自制 mini linux

    思路 先裝載一塊硬盤,按照上面兩個實驗的部分結果,創建各個目錄 在/boot 里面添加內核 ,添加initramfs.img文件添加grub組件  ,創建grub.conf   然后復制bash  ,ls  ,cp  等,命令和響應的庫文件,并在啟動的時候指定第一個進程為/bin/bash 順便加載一個網卡驅…

    2017-05-14
欧美性久久久久