實驗:bootloader
-
破壞stage1:
- 備份:dd if=/dev/sda of=/app/mbr bs=1 count=512
- 破壞:dd if=/dev/zero of=/dev/sda bs=1 count=446;此時/boot/grub/下的文件沒有任何改動;
- 表現:stage1破壞后系統會直接進行光盤引導
- 修復1:救援模式–>使用自己備份的前446個字節或使用/boot/grub/stage1恢復;如果恢復不了,使用grub-install –root-directory=/ /dev/DISK
-
修復2:
- grub(hd0,0)
- setup(hd0)
-
破壞stage1.5:
- 破壞:dd if=/dev/zero of=/dev/sda bs=1 count=2048 skip=512 seek=512
- 表現:跳過光盤引導,菜單不顯示,說明破壞成功;
-
修復:使用grub
- grub>root (hd0,0)
- grub>setup (hd0)
-
破壞stage2:
- 破壞:把/boot/grub/下的所有文件都移除;
-
修復:使用grub-install /dev/sda
- 修復完成后/boot/grub/中的文件會恢復,grub.conf不會恢復;要么copy、要么手寫一份;
grub加口令
grub-md5-crypt 生成MD5口令 使用格式:password --md5 $1XXXXX grub-crypt 生成sha512口令 使用格式:password --encrypted xxxxx
編輯:/boot/grub/grub.conf
default=0 (默認title,從0開始) timeout=5 (啟動時的倒計時) splashimage=(hd0,0)/grub/splash.xpm.gz (轉化png :yum searrch ImageMagick) hiddenmenu (隱藏菜單) password --md5 生成的口令 or password --encrypted 生成的口令 title CentOS 6 (2.6.32-642.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-642.el6.x86_64 ro root=UUID=472a74aa-d91e-4b79-844b-90415bdfb7c8 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet (rhgb:沒有啟動圖形界面) (quiet:不顯示啟動過程) initrd /initramfs-2.6.32-642.el6.x86_64.img password magedu
刪除/boot/grub/grub.conf,恢復
- 啟動后進入grub命令行模式,手動引導啟動
- kernel /vmlinuz-2.6.32-642.el6.x86_64 支持tab鍵補全
- initrd /initramfs-2.6.32-642.el6.x86_64.img
- boot
- 重新進入系統后再進行grub.conf的修改
刪除/boot/grub/*,恢復
grub界面不能出現,只能進入救援模式修復
- 必須切換根,grub-install,只有在切根后才能使用;此時,grub命令行不能修復;
- 敲幾遍sync
-
編寫grub.conf
- title
- kernel
- initrd
- 啟動
刪除/boot/ 所有內容,恢復
1)/boot/vmlinuz cp /mnt/cdrom/isolinux/vmlinuz /boot/vmlinuz-`uname -r` 2)/boot/initramfs.img mkinitrd /boot/initramfs-`uname -r`.img `uname -r` 或: rpm -ivh /mnt/cdrom/Packages/kernel.XXX.rpm 3)grub/* grub-install /dev/sda 4)grub/grub.conf default=0 timeout=3 title 23M kernel /vmlinuz-XXXX root=/dev/sda2 initrd /initramfs-XXXX.img
在普通分區,刪除/boot/ 所有內容及/etc/fstab,恢復
1)救援模式,先恢復/etc/fastab df blkid mount /dev/sda1 /mnt/sda1 mount /dev/sda2 /mnt/sda2 mount /dev/sda3 /mnt/sda3 vim /etc/fstab UUID=41ccbfcf-fa37-48dd-b841-2f3dd6b2d47a /boot ext4 defaults 0 0 UUID=472a74aa-d91e-4b79-844b-90415bdfb7c8 / ext4 defaults 0 0 UUID=4db8e7e8-0652-4162-95cc-aa223cb2e393 /apps ext4 defaults 0 0 UUID=5beb6ff8-3e37-42a0-9413-013aeacbfa8b swap swap deafaults 0 0 在創建/etc/fstab時,出現了fstab文件是個只讀模式;此時,在切根前進行重新掛載,mount -o remount,rw / 2)reboot,重新進入救援模式 df 確保掛載成功 3)修復grub grub-install /dev/sda 4)修復kernel initramfs.img mount /dev/sr0 /mnt/ rpm -ivh /mnt/Packages/kernel-XXX.rpm --force 5)vim /boot/grub/grub.conf default=0 timeout=3 title centos 6 kernel /vmlinuz-2.6.32-642.el6.x86_64 root=/dev/sda2 initrd /initramfs-2.6.32-642.el6.x86_64.img
使用邏輯卷,刪除/boot/ 所有內容及/etc/fstab,恢復
1)救援模式,先/etc/fastab恢復 df blkid mount /dev/sda1 /mnt/sda1 lvdisplay vgchange -ay 激活卷組 lvdisplay 查看邏輯卷 ls /dev/mapper :可查看設備可用 先掛載root創建/root/etc/fstab vim /etc/fstab UUID=ccbd4c46-b1a2-41da-aac7-d3a45a688b38 /boot ext4 defaults 0 0 /dev/mapper/vg0-root / ext4 defaults 0 0 /dev/mapper/vg0-swap swap swap defaults 0 0 /dev/mapper/vg0-usr /usr ext4 defaults 0 0 /dev/mapper/vg0-var /var ext4 defaults 0 0 在創建/etc/fstab時,出現了fstab文件是個只讀模式;此時,在切根前進行重新掛載,mount -o remount,rw / 2)reboot,重新進入救援模式 df 確保掛載成功 3)修復grub grub-install /dev/sda sync 4)修復kernel initramfs.img mount /dev/sr0 /mnt/ rpm -ivh /mnt/Packages/kernel-XXX.rpm --force 5)vim /boot/grub/grub.conf default=0 timeout=3 title centos 6.8 test kernel /vmlinuz-2.6.32-642.el6.x86_64 root=/dev/mapper/vg0-root initrd /initramfs-2.6.32-642.el6.x86_64.img
自制Linux
-
安裝一塊干凈的硬盤
echo ‘- – -‘ > /sys/class/scsi_host/host2/scan -
分區并創建文件系統
fdisk /dev/sdb
分兩個必要的分區
/dev/sdb1對應/boot /dev/sdb2對應根 /
mkfs.ext4 /dev/sdb1
mkfs.ext4 /dev/sdb2 -
掛載boot
mkdir /mnt/boot 子目錄必須為boot
mount /dev/sdb1 /mnt/boot -
掛載root
mkdir /mnt/root
mount /dev/sdb2 /mnt/root -
安裝grub
grub-install –root-directory=/mnt /dev/sdb -
恢復內核和initramfs文件
cp /boot/vmlinuz-2.6.32-642.el6.x86_64 /mnt/boot/
cp /boot/initramfs-2.6.32-642.el6.x86_64.img /mnt/boot -
建立grub.conf:
vim /mnt/boot/grub.conftitle newlinux root (hd0,0) kernel /vmlinuz-2.6.32-642.el6.x86_64 root=/dev/sda2 (如要精確表示使用根分區的UUID)selinux=0 init=/bin/bash initrd /initramfs-2.6.32-642.el6.x86_64.img
-
chroot /mnt/sysroot
-
創建一級目錄
mkdir –pv /mnt/sysroot/{etc,lib,lib64,bin,sbin,tmp,var,usr,sys,proc,opt,home,root,boot,dev,mnt,media} -
復制bash和相關庫文件
-
復制相關命令及相關庫文件
如:ls,cat,vim,reboot,hostname等
原創文章,作者:s,如若轉載,請注明出處:http://www.www58058.com/75512