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設備可以通過內核參數可以修改
rhgb quiet 刪除了可以跳過圖形界面直接看到啟動信息
loop設備數目可以增加
grub-md5-crypt
centos 需要輸入兩遍
可以為grub生成一個md5的加密密碼
password –md5
可以生成一個啟動口令
openssl passwd -1 1表示md5加密
也一樣可以生成一個MD5加密密碼
openssl passwd -salt "鹽" -1 指定鹽加密
可以發現只要指定一樣的鹽加密,一樣的密碼會顯示一樣。
cat /proc/cmdline 查看生效的內核參數
/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
跟/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階段
hexdump -C -n 512 /dev/sda
可以發現數據已經被破壞
重啟之后發現已經進入不了系統,選擇救援模式
chroot /mnt/sysimage/
切換回主目錄操作
grub-install /dev/sda 可以修復1與1.5階段
注意:分區表信息grub修復不能
方法二:
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 。因為方法二是依賴與備份文件修復。
因為我上面就已經將錯誤修復了,所以第二部檢查出沒問題
在進單用戶模式 : 在讀條頁面按Esc 跟住a 進入后輸入1
單一服務出錯,可以跳過該服務啟動
ll -Z /sbin/init
seliux=0
chkconfig –list certmonger
chkconfig certmonger off 啟動就不會再加載這個服務
如果內核和配置文件損壞了
光盤掛載修復
mount /dev/cdrom /mnt/cdrom
cd /mnt/cdrom/isolinxu/
cp vmlinuz /mnt/sysimage/boot
chroot /mnt/sysimage
mkinitrd /boot/initromfs-`uname`.img `uname -r`
網絡救援
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
rpm -ivh /mnt/cdrom/Packages/kernel-2.6..rpm –root=/mnt/sysimage –replacepkgs 安裝回內核
chroot /mnt/sysyimage
grub-insyall /dev/sda
刪除了/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
chroot /mnt/sysyimage
rpm -ivh /mnt/cdrom/Packages/kernel-2*.rpm –replacepkgs | force 重新安裝回內核
grub-install /dev/sda
修復回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
重寫引導信息
邏輯卷需要
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等
reboot 還是等系統自己掛載
下面過程差不多
rpm -ivh 安裝回內核
grub-install /dev/sda 修復1到1.5段引導信息
vim /boot/grub/grub.conf 添加回引導信息,root=路徑要加上邏輯卷
root=/dev/vg0/root
自制Linux系統
lsblk
新添加一個硬盤來做實驗,發現系統還沒有檢出
echo "- – -"> /sys/class/scsi_host/host0/scan
echo "- – -"> /sys/class/scsi_host/host2/scan 生產環境注意使用
fidsk /dev/sdb 分兩區 boot /
mkfs.ext4 /dev/sdb*
mount /dev/sdb1 /mnt/boot
cp /boot/vmliuz-2… /boot/initramfs-2.6…img /mnt/boot
grub-install /dev/sdb –root-directory=/mnt
將引導信息寫入/dev/sdb中
hexdump -C -n 512 -v /dev/sdb
可以查看到已經有數據寫入了
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..
mkdir /mnt/sysroot
mount /dev/sdb2 /mnt/sysroot
cd /mnt/sysroot/
mkdir -pv {bin,etc,sbin,dev,lib,lib64,proc,sys,tmp,root,home,usr,var,mnt,media}
vim /mnt/sysroot/etc/fstab
/dev/sda1 /boot ext4 defaults 1 1
/dev/sda2 / ext4 defaults 1 2
/root/copycmd.sh
bash,vim,cat,ls,ifconfig,poweroff,df,rpm,mount,umount,hostanme,reboot.
chroot /mnt/sysroot
切換進去,
要使用的時候只需將文件拷貝過去讀取就可以使用
編譯內核
編譯內核 (可以添加未開啟的功能板塊)
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 查看已經安裝的模塊
lsmod |grep ext4
locate ext4.ko 查找模塊路徑
rmmod e1000 卸載模塊
modprobe usb-strage 啟動模塊
modinfo -n usb-storage.ko 顯示模塊路徑
lsmod |grep -i ext4 可以看到ext4依賴的文件
depmod命令:
內核模塊依賴關系文件及系統信息映射文件的生成工具(容易破壞其他文件的依賴性,使用時候要注意使用)
做路由器時候開啟
cat /proc/sys/net/ipv4/ip_forward
0表示未啟用
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 可以看所有啟用的
原創文章,作者:swzczx,如若轉載,請注明出處:http://www.www58058.com/46112
寫的很細哦,每張圖片都有說明,很用心,贊一個。