啟動流程排錯,自制linux內核,編譯內核

CentOS 6啟動流程:

POST –> Boot Sequence(BIOS) –> Boot Loader –> Kernel(ramdisk) –> rootfs–> switchroot–> /sbin/init–>(/etc/inittab, /etc/init/*.conf) –> 設定默認運行級別–> 系統初始化腳本rc.sysinit–> 關閉或啟動對應級別的服務–> 啟動終端

grub legacy

配置文件:/boot/grub/grub.conf<–/etc/grub.conf

ls /dev/loop* loop設備可以通過內核參數可以修改

blob.png

rhgb  quiet 刪除了可以跳過圖形界面直接看到啟動信息

blob.pngloop設備數目可以增加

grub-md5-crypt

centos 需要輸入兩遍

blob.png可以為grub生成一個md5的加密密碼

password –md5

blob.png可以生成一個啟動口令

openssl passwd -1 1表示md5加密

blob.png也一樣可以生成一個MD5加密密碼

openssl passwd -salt "鹽" -1  指定鹽加密

blob.png可以發現只要指定一樣的鹽加密,一樣的密碼會顯示一樣。

cat /proc/cmdline 查看生效的內核參數

blob.png

/boot/grub/grub.conf 如果開機配置文件損壞了,或者沒有,可以通過自己配置路徑開機

kernel (hd0,0)/vmlinuz-2.6.32-642.216.x86_64 root=/dev/sda2   內核

initrd (hd0,0)/initramfs-2.6.32.e16.x86_64.img  配置文件

boot

blob.png跟/etc/grub.conf的文檔一樣

更改開機菜單背景

yum -y insyall ImageMagick

convert -resize 640×480 -colors 14 win.jpg win.xpm

gzip win.xpm

cp win.xpm /boot/grub

cim /boot/grub/grub.conf

破壞了系統啟動文件 1到1.5階段

方法一:

grub-install

chroot /mnt/sysimage/

grub-install /dev/sda 可以修復1與1.5階段

分區表信息grub修復不了

dd if=/dev/zero of=/dev/sda bs=1 count=446 破壞1階段

blob.png

hexdump -C -n 512 /dev/sda

blob.png可以發現數據已經被破壞

QQ圖片20160913193500.png重啟之后發現已經進入不了系統,選擇救援模式

啟動流程排錯,自制linux內核,編譯內核chroot /mnt/sysimage/

blob.png切換回主目錄操作

grub-install /dev/sda 可以修復1與1.5階段

注意:分區表信息grub修復不能

blob.png

方法二:

dd if=/dev/zero of=/dev/sda bs=512 count=2 seek=1 破壞1.5階段

hexdump -C -n 1024 /dev/sda

只能手動光盤引導,救援模式

grub

grub> root (hd0,0)

grup> steup (hd0) 使用交互模式救援

如果備份文件被破壞了就只能用方法一 grub-install 。因為方法二是依賴與備份文件修復。

blob.png因為我上面就已經將錯誤修復了,所以第二部檢查出沒問題

在進單用戶模式 : 在讀條頁面按Esc 跟住a 進入后輸入1

單一服務出錯,可以跳過該服務啟動  

ll -Z /sbin/init

blob.png

seliux=0

chkconfig –list certmonger

blob.png

chkconfig certmonger off 啟動就不會再加載這個服務

blob.png

如果內核和配置文件損壞了

光盤掛載修復

blob.png

mount /dev/cdrom /mnt/cdrom

blob.png

cd /mnt/cdrom/isolinxu/

blob.png

cp vmlinuz /mnt/sysimage/boot

blob.png

chroot /mnt/sysimage

mkinitrd /boot/initromfs-`uname`.img `uname -r`

blob.png

網絡救援

chroot /mnt/sysimage/  

scp 10.1.0.1:/boot/vmlinuz* /boot/  利用scp去其它源拷貝回來一份相同的文件

scp 10.1.0.1:/boot/initramfs* /boot/

前提時候版本號一樣,將目標的文件拷貝到目錄下

reboot

刪除/boot

rm -rf /boot/

dd if=/dev/zero of=/dev/sda bs=1 count=446 破壞1階段

rescue 進入救援模式

mount /dev/cdrom /mnt/cdrom

QQ圖片20160912200857.png

rpm -ivh /mnt/cdrom/Packages/kernel-2.6..rpm –root=/mnt/sysimage –replacepkgs 安裝回內核

QQ圖片20160912201057.png

chroot /mnt/sysyimage

grub-insyall /dev/sda

QQ圖片20160912201212.png

刪除了/ect/fstab,/boot/,

blkid;fdisk -l

mkdir /mnt/sda2

mount /dev/sda2 /mnt/sda2

vi /mnt/sda2/ect/fstab  重寫一個分區表信息,可以暫時先寫主分區信息,等進入系統再進行保全。

/dev/sad1 /boot ext4 defaults 1 1

/dev/sda2 /     ext4 defaults 1 2

reboot 等系統自己掛載

mkdir /mnt/cdrom

mount /dev/cdrom /mnt/cdrom

QQ圖片20160912200857.png

chroot /mnt/sysyimage

rpm -ivh /mnt/cdrom/Packages/kernel-2*.rpm –replacepkgs | force   重新安裝回內核

QQ圖片20160912201057.png

grub-install /dev/sda

QQ圖片20160912201212.png修復回1到1.5段的引導信息

vim /boot/grub/grub.conf

default=0

timeout=3

title zczxlinux

root (hd0,0)

kernel /vmlinuz-2.6.32-642.e16.x86_64  root=/dev/sda2

initrd /initramfs-2.6.32-642.e16.x86_64

blob.png重寫引導信息

邏輯卷需要

lvscan 掃描磁盤

vgs

vgchange -ay 激活所有邏輯卷

mount /dev/vg0/root /mnt/sysimage

vi /mnt/sysimage/etc/fstab

/dev/sad1 /boot ext4 defaults 1 1

/dev/vg0/root / ext4 defaults 1 2

/dev/vg0/usr /usr ext4 defaults 0 0

/dev/vg0/var /var ext4 defaults 0 0      重寫引導信息,因為邏輯分區所以需要寫上/usr,/var,/root等

QQ圖片20160912200556.png

reboot 還是等系統自己掛載

下面過程差不多

rpm -ivh     安裝回內核

grub-install /dev/sda    修復1到1.5段引導信息

vim /boot/grub/grub.conf   添加回引導信息,root=路徑要加上邏輯卷

root=/dev/vg0/root

自制Linux系統

lsblk

blob.png新添加一個硬盤來做實驗,發現系統還沒有檢出

echo "- – -"> /sys/class/scsi_host/host0/scan 

echo "- – -"> /sys/class/scsi_host/host2/scan  生產環境注意使用

blob.png

fidsk /dev/sdb 分兩區 boot /

blob.png

mkfs.ext4 /dev/sdb* 

blob.png

mount /dev/sdb1 /mnt/boot

blob.png

cp /boot/vmliuz-2… /boot/initramfs-2.6…img /mnt/boot

blob.png

grub-install /dev/sdb –root-directory=/mnt  

blob.png將引導信息寫入/dev/sdb中

hexdump -C -n 512 -v /dev/sdb

blob.png可以查看到已經有數據寫入了

cd grub

vim grub.conf

default=0

timeout=3

title zczxlinux

root (hd0,0)

kernel /vmlinuz….  root=/dev/sda2 selinux=0 init=/bin/bash

initrd /initramfs..

blob.png

mkdir /mnt/sysroot

mount /dev/sdb2 /mnt/sysroot

blob.png

cd /mnt/sysroot/

mkdir -pv {bin,etc,sbin,dev,lib,lib64,proc,sys,tmp,root,home,usr,var,mnt,media}

blob.png

vim /mnt/sysroot/etc/fstab

/dev/sda1  /boot  ext4 defaults 1 1

/dev/sda2   /     ext4 defaults 1 2

blob.png

/root/copycmd.sh

bash,vim,cat,ls,ifconfig,poweroff,df,rpm,mount,umount,hostanme,reboot.

blob.png

chroot /mnt/sysroot

blob.png切換進去,

blob.png要使用的時候只需將文件拷貝過去讀取就可以使用

編譯內核

編譯內核 (可以添加未開啟的功能板塊)

rpm -qi kernel

ntsysv  可以打開關閉指定功能模塊

/boot/kernel  

/lib/modules

實現完全定制的內核功能

cd /boot

config-3.1…. 里面有服務配置

www.kernel.org  下載內核

yum grouplist

yum -y groupinstall "Development Tools"

uname -r  查看內核版本

lscpu 查看CPU

tar xvf linux-3.18..tar.xz -C /usr/src  將內核解壓到/usr/src

ls /sur/src

ln -s linux-3.18.41/ linux 創建軟連接,方便下次進入

cd linux

du -sh

cp /boor/config-3.10.0.. /usr/src/linux/.config  將原本的模板拷貝到指定的目錄,而且需要命名為.config  因為編譯的時候會默認讀取這個文件

ll /usr/src/linux/.config

cd /usr/src/linux  菜單打開需要進入這個路徑

yum -y install "*curses*"

make menuconfig  打開菜單等于修改.config 

默認64內核

通用設置

Local version  版本號

回車

-1.0-zczxlinux  加入版本號

名字帶箭頭的表示有子項目

make -j 4 (4核心)開始編譯

du -sh /usr/src/linux-3.18

cd /lib/modules

cd /usr/src/linux

make modules_install  拷貝內核模塊文件

make install

lsmod 查看已經安裝的模塊

blob.png

lsmod |grep ext4

blob.png

locate ext4.ko 查找模塊路徑

blob.png

rmmod e1000 卸載模塊

modprobe usb-strage 啟動模塊

modinfo -n usb-storage.ko 顯示模塊路徑

lsmod |grep -i ext4 可以看到ext4依賴的文件

blob.png

depmod命令:

內核模塊依賴關系文件及系統信息映射文件的生成工具(容易破壞其他文件的依賴性,使用時候要注意使用)

做路由器時候開啟

cat /proc/sys/net/ipv4/ip_forward

blob.png0表示未啟用

vim /etc/sysctl.conf 

格式用.代替/

可以直接修改上述文件: echo 1 > /proc/sys/net/ipv4/ip_forward

把文件的內容由0修改為1。禁用IP轉發則把1改為0。

上面的命令并沒有保存對IP轉發配置的更改,下次系統啟動時仍會使用原來的值,要想永久修改IP轉發,需要修改/etc/sysctl.conf文件,修 改下面一行的值: net.ipv4.ip_forward = 1 

sysctl -p 重讀配置文件

sysctl -w net.ipv4.ip_forward=0 相當于改內存

sysctl -a 可以看所有啟用的

blob.png

原創文章,作者:swzczx,如若轉載,請注明出處:http://www.www58058.com/46112

(0)
swzczxswzczx
上一篇 2016-09-20 19:03
下一篇 2016-09-20 21:14

相關推薦

  • 8-10 bash變量淺談

    8-10 作業 一、腳本 1、編寫腳本/root/bin/systeminfo.sh,顯示當前主機系統信息,包括主機名,IPv4地址,操作系統版本,內核版本,CPU型號,內存大小,硬盤大小。 2、編寫腳本/root/bin/backup.sh,可實現每日將/etc/目錄備份到/root/etcYYYY-mm-dd中 3、編寫腳本/root/bin/disk.…

    Linux干貨 2016-08-15
  • 磁盤管理與文件系統

      關于磁盤與文件系統大致思路:要想對磁盤進行充分利用,必須要對磁盤進行分區,第二步就是要對分區進行高級格式化,也就是在分區上創建文件系統,在此過程中可以對磁盤的各種屬性進行自定義。打個比方來說,創建磁盤分區好比剛買來一個毛坯房,還未裝修,還不適宜人居住,那么創建文件系統就好比在光禿禿的毛坯房上進行了裝修,這樣才更適于人居住使用。 要想搞懂磁盤,首…

    Linux干貨 2016-08-30
  • vim文本編輯器詳解

    啟動vim                             &…

    Linux干貨 2016-08-15
  • 初識linux:計算機的組成及功能

    一、描述計算機的組成及功能。 由馮諾伊曼提出計算機體系結構(5大部件)控制器(Controller):是整個計算機的中樞神經,其功能是對程序規定的控制信息進行解釋,根據其要求進行控制,調度程序、數據、地址,協調計算機各部分工作及內存與外設的訪問等。運算器(Datapath):運算器的功能是對數據進行各種算術運算和邏輯運算,即對數據進行加工處理。 (cpu由控…

    2017-12-03
  • Linux權限基本介紹,管理

     Linux權限機制采用UGO模式。其中 u(user)表示所屬用戶、g(group)表示所屬組、o(other)表示除了所屬用戶、所屬組之外的情況。 u、g、o 都有讀(read)、寫(write)、執行(excute) 三個權限,所以UGO模式是三類九種基本權限。         用命令 ls …

    Linux干貨 2017-07-22
  • Linux部分命令及使用

    Linux部分命令解釋及使用 ASCII 信息交換碼  GB2312 big5 UTF-8 字符集 亂碼問題 生產環境中最常見故障  字符集格式設置不一致 查看系統版本  cat /etc/redhat-release  $() “&nb…

    2017-04-09

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-09-23 12:04

    寫的很細哦,每張圖片都有說明,很用心,贊一個。

欧美性久久久久