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

實驗: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
下一篇 2017-05-14

相關推薦

  • N25-第二周作業

    1、  Linux上的文件管理類命令都有那些,其常用的使用方法及其相關示例演示。 常用的管理類命令有:rm、mv、cp 1)         rm:remove rm [ OPTION ] FILE 常用選項:     &nbsp…

    Linux干貨 2016-12-13
  • man使用手冊

    Linux下man的各章節使用介紹        1 – commands     2 – system calls     3 – library calls  &nbsp…

    Linux干貨 2016-10-18
  • vim的基本使用

    前言:     Vim是一個類似于Vi的著名的功能強大、高度可定制的文本編輯器,在Vi的基礎上改進和增加了很多特性。VIM是自由軟件。    Vim普遍被推崇為類Vi編輯器中最好的一個,事實上真正的勁敵來自Emacs的不同變體。1999 年Emacs被選為Linuxworld文本…

    Linux干貨 2017-07-30
  • 細節決定成敗–空格的巨大作用以及正則表達式中元字符的轉義

    字符串的條件判定 1.字符串判定 一定要用雙[[ ]] 2.字符串判定=~默認支持擴展正則表達式,這里注意雙引號的使用 僅僅做是否包含時,有無雙引號無區別。 但是利用其他擴展表達式時 雙引號一定要去掉 錨定示例 多條件判定時-o -a使用時,不能使用雙中括號 空格有無的差別 !的使用細節 !到目前為止 有兩種意義 條件判定取反 歷史命令的調用 兩者的使用卻別…

    2017-03-19
  • 源碼編譯安裝http

    為什么需要編譯安裝軟件?   1、軟件在編譯期間需要配置:比如需要指定安裝路徑,定制模塊等功能;   2、軟件需要統一安裝路徑:在編譯安裝時可以方便指定這些路徑;   3、需要最新的版本:對于某些軟件來說可能需要最新的版本。 編譯前的準備工作:     1、安裝開發工具:make、gcc等…

    Linux干貨 2016-08-24
  • 程序包編譯安裝

    linux安裝采用命令行形式。

    2018-03-17
欧美性久久久久