实验:系统启动和内核管理

实验: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.178linux.com/75512

(0)
ss
上一篇 2017-05-14
下一篇 2017-05-14

相关推荐

  • 第六周

    请详细总结vim编辑器的使用并完成以下练习题 基本模式: 编辑模式,命令模式 输入模式 末行模式 内置的命令行接口 打开文件: # vim [options] [file ..] +#:打开文档后,直接让光标处于第#行的行首 +/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首   模式转换: 编辑模式:默认模式 编…

    Linux干货 2017-05-13
  • 习题

    1.当用户xiaoming对/testdir 目录无执行权限时,意味着无法做哪些操作? 2.当用户xiaoqiang对/testdir 目录无读权限时,意味着无法做哪些操作? 3.当用户wangcai 对/testdir 目录无写权限时,该目录下的只读文件file1是否可修改和删除? 4.复制/etc/fstab文件到/var/tmp下,设置文件所有者为wa…

    Linux干货 2016-08-04
  • N22-第八周作业

    第八周 1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。      集线器的主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上。它工作于OSI(开放系统互联参考模型)参考模型第一层,即“物理层”。    &n…

    Linux干货 2016-10-09
  • 在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件

    在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。 ~]# touch /tmp/tfile-$(date +%Y-%m-%d-%H-%M-%S) ~]# tree /tmp 查看输出结果 复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。 …

    Linux干货 2016-11-06
  • linux上的文本三剑客之grep和文本查看工具

    linux上文本处理三剑客 grep,egrep,fgrep:文本过滤工具(模式:pattern)工具:     grep:基本正则表达式,-E:支持扩展正则表达式,-F:不支持正则表达式     egrep:扩展正则表达式,-G:支持基本正则表达式 ,-F:不支持正则表达式 &…

    Linux干货 2016-08-07
  • rsync+inotify实现数据的实时同步更新

      rsync可以实现触发式的文件同步,但是通过crontab守护进程方式进行触发,同步的数据和实际数据会有差异,而inotify可以监控文件系统的各种变化,当文件有任何变动时,就触发rsync同步,这样就可以解决同步数据的实时性问题。 一、rsync的优点与不足 rsync具有安全性高、备份迅速、支持增量备份等优点,通过rsync可以解决对实时性要求不高的…

    2018-01-06