實驗:系統啟動和內核管理

實驗: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:

      1. grub(hd0,0)
      2. setup(hd0)
  • 破壞stage1.5:

    • 破壞:dd if=/dev/zero of=/dev/sda bs=1 count=2048 skip=512 seek=512
    • 表現:跳過光盤引導,菜單不顯示,說明破壞成功;
    • 修復:使用grub

      1. grub>root (hd0,0)
      2. grub>setup (hd0)
  • 破壞stage2:

    • 破壞:把/boot/grub/下的所有文件都移除;
    • 修復:使用grub-install /dev/sda

      1. 修復完成后/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,恢復

  1. 啟動后進入grub命令行模式,手動引導啟動
  2. kernel /vmlinuz-2.6.32-642.el6.x86_64 支持tab鍵補全
  3. initrd /initramfs-2.6.32-642.el6.x86_64.img
  4. boot
  5. 重新進入系統后再進行grub.conf的修改

刪除/boot/grub/*,恢復

grub界面不能出現,只能進入救援模式修復

  1. 必須切換根,grub-install,只有在切根后才能使用;此時,grub命令行不能修復;
  2. 敲幾遍sync
  3. 編寫grub.conf

    • title
    • kernel
    • initrd
  4. 啟動

刪除/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.conf

    title 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

(0)
ss
上一篇 2017-05-14 09:03
下一篇 2017-05-14 11:20

相關推薦

  • vim文件編輯器

       vi命令是UNIX操作系統和類UNIX操作系統中最通用的全屏幕純文本編輯器。Linux中的vi編輯器叫vim,它是vi的增強版(vi Improved),與vi編輯器完全兼容,而且實現了很多增強功能。 vim功能十分強大,具有很多有優點: 所有的unix like系統都會內置vi文本編輯器,其他的文本編輯器則不一定會有 很多軟件的編…

    Linux干貨 2016-08-11
  • 安裝命令及源碼安裝

    rpm命令  –q:查詢 -qa:查詢系統內所有已安裝的包 -qf:查詢文件來自于那個安裝包 -ql:安裝包內的文件 -qp:與其他命令配合可以查詢未安裝包的信息,但要跟完整的安裝包名 -qi:查看報的詳細信息 -qc:查詢程序的配置文件 -qd:查詢程序的文檔 -qR:查詢安裝包依賴的程序 –scripts:查看安裝包內的腳本 -q …

    Linux干貨 2016-08-26
  • 通過Nginx來安裝一個discuz,軟件并不是編譯安裝的

    這次由于時間有限,所以我就沒有用編譯安裝來啟動LMP,只有Nginx 是編譯安裝的 因為是在centos7上面安裝的Nginx所以我們這里由于能力有限,暫時不能將其加入開機啟動,日后我會進行改進,將其加入開機啟動。這里我們給出Nginxd的編譯選項及環境   yum groupinstall "Development&…

    Linux干貨 2016-10-25
  • 基于LNMP網站平臺,測試增加memcached緩存系統后網站訪問效果

    LNMP安裝教程鏈接:22-love cat 17周博客作業第2部分-構建一個LVS-DR模型的高性能集群 memcached 安裝及測試效果 一、概念     memcached 是一個高性能的分布式內存對象緩存系統,用于動態Web應用以減輕數據庫負載。它通過在內存中緩存數據和對象來減少讀取數據庫的次數,從而提高動態…

    Linux干貨 2016-08-22
  • N22-妙手-第一周博客作業

           描述計算機的組成及其功能 1946年馮諾依曼提出馮 諾依曼結構,也稱普林斯頓結構,即一種將程序指令存儲器和數據存儲器合并在一起的存儲器結構。根據他的結構,計算機組成是: (1)運算器:負責數據的算術運算和邏輯運算 (2)控制器:  負責對程序信息和數據進行分析,控制并協調其輸…

    Linux干貨 2016-08-15
  • 馬哥教育網絡班20期+第5周課程練習

    1、顯示/boot/grub/grub.conf中至少一個空白字符開頭的行 [root@localhost ~]# grep "^[[:space:]]\+.*" /boot/grub2/grub.cfg 2、顯示/etc/rc.d/rc.sysinit文件中以#開頭,后面跟至少一個空白字符,而后又有至少一個非空白字符的行; [root@…

    Linux干貨 2016-08-15
欧美性久久久久