关于 开机启动加密破坏修复 自制linux系统

开机破坏并且修复之  
   自制linux系统
 
 
 
        CentOS 6启动流程:
POST --> Boot Sequence(BIOS) --> Boot Loader -->
Kernel(ramdisk) --> rootfs --> switchroot --> /sbin/init --
>(/etc/inittab, /etc/init/*.conf) --> 设定默认运行级别--> 系统
初始化脚本rc.sysinit --> 关闭或启动对应级别的服务--> 启动终端
grub: GRand Unified Bootloader
grub 0.x: grub legacy
grub 1.x: grub2
grub legacy:
            stage1: mbr
            stage1_5: mbr之后的扇区,让stage1中的bootloader
能识别stage2所在的分区上的文件系统
stage2:磁盘分区(/boot/grub/)
=================================================================
开机加密口令 防止单用户恶意破解口令

生成加密口令
第一步:
[[email protected] ~]# grub-md5-crypt
Password: 输入口令时不显示
Retype password: 输入口令时不显示
$1$6lDgy$WpWXTfAKA/mcC6goW90If.    这个就是加密过后的口令
下面命令也是可以生成加密口令的
openssl passwd -1
xxxxxx
xxxxxx
第二步:
在配置文件中 :vim /boot/grub/grub.conf
添加 :第一个title开的的字符上方 添加加上 password --md5 加密过的口令
例如:
password --md5 $1$6lDgy$WpWXTfAKA/mcC6goW90If
title CentOS 6 (2.6.32-642.el6.x86_64)
        root (hd0,0)
然后保存重启
第三步:
开机开始的时候任意键进入菜单界面:这是单用户的ace等口令是无效的,提示输入p 会让输入passwd:也就是刚才上面保存过的加密口令;输入成功则显示出来ace等口令,输入就可以进入单用户修改口令,当然如果在不知道加密口令的用户直接敲回车会正常启动,防止了恶意破解口令

也可以将加密的口令放在配置文件的前后,放在前面是防止进入单用户界
password --md5 $1$6lDgy$WpWXTfAKA/mcC6goW90If
title CentOS 6 (2.6.32-642.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-642.el6.x86_64 ro root=/dev/mapper/vg_compro-lv_root rd_NO_LUKS rd_NO_MD rd_LVM_LV=vg_compro/lv_swap crashkernel=auto LANG=zh_CN.UTF-8  KEYBOARDTYPE=pc KEYTABLE=us rd_LVM_LV=vg_compro/lv_root rd_NO_DM rhgb quiet
        initrd /initramfs-2.6.32-642.el6.x86_64.img
        password 口令
在末尾添加加密口令是 启动开始的大概几秒钟,直接弹出来passwd:输入加密的口令登录启动系统
================================================================

开机任意键进入菜单界面的一个背景图片
在配置文件中找到以下字符
splashimage=(hd0,0)/grub/splash.xpm.gz
修改背景
1 先做一张分辨率640*480的图 命名为bjtp 上传系统家目录中
2 安装一个linux的修图工具
[[email protected] ~]# yum -y install ImageMagick
3 转换图片格式
[[email protected] ~]# convert -resize 640x480 -colors 14 bjtp.png bjtp.xpm
查看格式
[[email protected] ~]# more bjtp.xpm
压缩
[[email protected] ~]# gzip bjtp.xpm
拷贝到grub
[[email protected] ~]# cp  bjtp.xpm.gz /boot/grub/
修改配置文件
[[email protected] ~]# vim /boot/grub/grub.conf
splashimage=(hd0,0)/grub/bjtp.xpm.gz    将文件名称修改一下就可以了
重启reboot开机过程中按下任意键进入菜单的界面,这是还就可以看到刚刚修改的图片了
==================================================================
破坏第1阶段并且修复
[[email protected] ~]#  dd if=/dev/zero of=/dev/sda bs=1 count=446
然后查看一下
[[email protected] ~]#  hexdump -C -v /dev/sda -n 512
重启reboot 这时候会无法启动 启动的时候自动进入光盘引导界面,这时候选择第三项救援模式
修复:
进入救援模式下的shell界面切根
bash-4.1# chroot /mnt/sysimage/
bash-4.1# grub-install /dev/sda
bash-4.1# exit
bash-4.1# exit
reboot重启就好了
================================================================
破坏第1.5阶段并且修复
[[email protected] ~]# dd if=/dev/zero of=/dev/sda bs=512 count=2 seek=1
[[email protected] ~]# hexdump -C -v /dev/sda -n 1024
重启后手动光盘引导进入救援模式shell界面
输入命令grub
bash-4.1# grub> root (hd0,0)
grup> setup (hd0)
grup> quit
bash-4.1# exit
reboot重启就好了
=================================================================

删除/grub目录所有内容
[[email protected] ~]# rm -rf /boot/grub/
[[email protected] ~]# reboot 重启
开机手动光盘引导进入救援模式
bash-4.1# chroot /mnt/sysimage
bash-4.1# cd /boot
bash-4.1# grub-install /dev/sda
bash-4.1# cd /boot/grub/       这时候没有grub.conf配置文件需要手写一份
bash-4.1# exit
bash-4.1# exit
reboot 重启
启动界面会提示grub> 输入内容
grub> kernel (hd0,0)/vmlinuz..... root=/dev/sda2
grub> initrd (hd0,0)/initramfs....
grub> boot
修过过程中再次提示输入上面的命令不过在之前开头加上grub> root (hd0,0)就ok了
创建vim /boot/grub/grub.conf
default=0
timeout=5
title Compro
root(hd0,0)
kernel /vmlinuz-2.6... root=/dev/sda2
initrd /inirtamfs....
==========================================================
删除boot目录并且恢复之 (大招,一招致命,解决 以上所有破坏)
[[email protected] ~]# umount /boot
[[email protected] ~]# rm -rf /boot
[[email protected] ~]# reboot
直接进入救援模式
bash-4.1# mkdir /mnt/cdrom
bash-4.1# mount /dev/cdrom /mnt/cdrom
bash-4.1# rpm -ivh /mnt/cdrom/Pachages/kernel-2* --root=/mnt/sysimage --replacepkgs 或者 force
bash-4.1# chroot /mnt/sysimage/
bash-4.1# grub-install /dev/ada
bash-4.1# vim /boot/grub/grub.conf
default=0
timeout=3
title Compro
root (hd0,0)
kernel /vmlinuz... root=/dev/sda2
initrd /initagfs  ....
==================================================================

自制Linux系统:
添加新的硬盘,用 [[email protected] ~]# echo ‘- - -‘ > /sys/class/scsi_host/host2/scan   加载
1分区并创建文件系统
[[email protected] ~]# fdisk /dev/sdb
分两个必要的分区
/dev/sdb1对应/boot /dev/sdb2对应根/
[[email protected] ~]# mkfs.ext4 /dev/sdb2
[[email protected] ~]# mkfs.ext4 /dev/sdb2
2挂载boot
[[email protected] ~]# mkdir /mnt/boot
[[email protected] ~]# mount /dev/sdb1 /mnt/boot/
[[email protected] ~]# cd /mnt/boot/
[[email protected] boot]# cp /boot/vmlinuz-2.6.32-642.el6.x86_64 /boot/initramfs-2.6.32-642.el6.x86_64.img .
3安装grub
[[email protected] boot]# grub-install /dev/sdb --root-directory=/mnt
4、建立grub.conf:
[[email protected] boot]# cd grub/
[[email protected] grub]# vim grub.conf
default=0
default=0
timeout=3
title Compro
root (hd0,0)
kernel /vmlinuz-2.6.32-642.el6.x86_64 root=/dev/sda2 selinux=0 init=/bin/bash
initrd /initramfs-2.6.32-642.el6.x86_64.img
5、创建一级目录
[[email protected] ~]# mkdir /mnt/sysroot
[[email protected] ~]# mount /dev/sdb2 /mnt/sysroot/
[[email protected] ~]# cd /mnt/sysroot/
[[email protected] sysroot]# mkdir -pv {etc,lib,lib64,bin,sbin,tmp,var,usr,sys,proc,opt,home,root,boot,dev,mnt,media}
6、[[email protected] sysroot]# vim etc/fstab

/dev/sda1 /boot ext4 defaults 1 1
/dev/sda2  /    ext4 defaults 1 2

8、复制bash和相关库文件 复制相关命令及相关库文件
如:ls,cat,vim,reboot,hostname等 
这里使用的是脚本
[[email protected] sysroot]# /root/copycmd.sh
Please input a command: bash
Please input a command or quit: vim
Please input a command or quit: cat
Please input a command or quit: ls
Please input a command or quit: ifconfig
Please input a command or quit: df
Please input a command or quit: mount
Please input a command or quit: umount
Please input a command or quit: rpm
Please input a command or quit: reboot
Please input a command or quit: hostname
Please input a command or quit: halt
Please input a command or quit: quit

这里已经完成了,下面看脚本内容
#!/bin/bash
ch_root="/mnt/sysroot"
[ ! -d $ch_root ] && mkdir $ch_root
bincopy() {
    if which $1 &>/dev/null; then

local cmd_path=`which --skip-alias $1`
        local bin_dir=`dirname $cmd_path`
        [ -d ${ch_root}${bin_dir} ] || mkdir -p ${ch_root}${bin_dir}
        [ -f ${ch_root}${cmd_path} ] || cp $cmd_path ${ch_root}${bin_dir}
        return 0
    else
        echo "Command not found."
        return 1
    fi
}
libcopy() {
    local lib_list=$(ldd `which --skip-alias $1` | grep -Eo ‘/[^[:space:]]+‘)
    for loop in $lib_list;do
        local lib_dir=`dirname $loop`
        [ -d ${ch_root}${lib_dir} ] || mkdir -p  ${ch_root}${lib_dir}
        [ -f ${ch_root}${loop} ] || cp $loop ${ch_root}${lib_dir}
    done

read -p "Please input a command: " command
while [ "$command" != "quit" ];do
    if bincopy $command ;then
        libcopy $command
    fi
    read -p "Please input a command or quit: " command
done
=====================================================================

时间: 2024-10-11 04:52:21

关于 开机启动加密破坏修复 自制linux系统的相关文章

启动流程排错,自制linux内核,编译内核

CentOS 6启动流程: POST --> Boot Sequence(BIOS) --> Boot Loader --> Kernel(ramdisk) --> rootfs--> switchroot--> /sbin/init-->(/etc/inittab, /etc/init/*.conf) --> 设定默认运行级别--> 系统初始化脚本rc.sysinit--> 关闭或启动对应级别的服务--> 启动终端 grub legacy

自制linux系统——打造属于自己的linux系统

很多时候我们直接使用别人帮我们打包好的一个linux系统,总感觉某些工具或者命令多余或者效果不好,那我们是否可以自制一个比较符合自己需求的linux系统出来了,答案是肯定的,而且实现这个目标也并困难,需要的时间也不会太长.接下来就给大家分享如何自制的过程. 环境需求: 1.Vmware虚拟机 2.Centos6.8光盘镜像IS0文件 3.Vmware上安装一份Centos6.8的操作系统 第一步:装载一块新硬盘到虚拟机的Centos6.8系统上,并保证系统正常读取 [[email protect

手把手带你自制Linux系统之二 简易Linux制作

手把手带你自制Linux系统之二 简易Linux制作 本文利用CentOS5.5自带内核制作一个Mini Linux. 打开准备工作中创建的CentOS,为另一个虚拟机MiniLinux添加一个最小Linux所需要的文件. 1. 创建分区 为准备好的磁盘创建两个主分区,大小分别为20M和512M. 使用fdisk命令创建分区详细过程: fdisk /dev/hda 创建第一个20M分区依次输入: n --> p --> 1 --> <Enter> --> +20M 这几

自制linux系统

本实验以centos6为例 系统启动流程说明 -->加载BIOS,通过BIOS程序加载CMOS的信息,并通过CMOS获得硬件信息 -->开机自检POST -->读取MBR的信息 -->grub引导系统启动 -->开启系统第一个进程init -->用户登陆 有几点我们需要理解: 1.MBR是磁盘的第一个扇区,512字节,其中前446字节是boot loader引导加载程序,后64字节是分区表,最后2字节是MBR的结束位55aa 系统要启动,就要加载内核.各种驱动,那lin

模拟自制linux系统

(1) 新建硬盘对其分区 硬盘文件名CentOS 6.9-0.vmk (2)识别新加硬盘,记录设备名sdb (3)对其新建硬盘sdb分区(fdisk /dev/sdb),至少有根以及boot分区 (4)对分区创建文件系统 设备sdb分区如下sdb1作为boot分区 sdb2作为根所在分区 [[email protected] ~]# mkfs.ext4 /dev/sdb1 [[email protected] ~]# mkfs.ext4 /dev/sdb2 (5)创建一级目录,并挂载 注:新建s

在android系统上写C语言程序--开机启动该程序不进入安卓系统

今天要写的这篇博文意义重大,也是网上很少有的,这是在我工作中学会的一项技术,当然,它也是由简单的问题组合而来的.如何在安卓中写C语言程序,调试安卓驱动,测试程序的的一项重要技能,下面我就不说废话了,直接说实用的,怎么用这个东西. 关于这个问题,相信很多学Android的都会去关注这个问题,大家普遍会有个这样的疑问:安卓是怎么跑起来的? 最简单的说法,安卓系统是这样加载的: Bootloader------Kernel(对应平台版本的Linux内核)------filesystem文件系统(这个就

制作busybox完成自制Linux系统及远程登录和nginx安装测试

前言系统定制在前面的博文中我们就有谈到过了,不过那个裁减制作有简单了点,只是能让系统跑起来而,没有太多的功能,也没的用户登录入口,而这里我们将详细和深入的来谈谈Linux系统的详细定制过程和实现用户例如.远程登录和Nginx安装过程.一步一步从头开始定制属于我们自己的系统. 正文首先我们先来简单的介绍一下我们这里定制属于自己的Linux系统的基本元素,其中一些相关的信息也可以参考我前面写过的博文 一个定制的linux内核+一个定制的busybox就可以定制一个小型的Linux操作系统了,安装Dr

CentOS开机启动不了修复

1,如果启动时进度条,先修改为日志启动 启动后快速按任何键(Enter除外)进入如下界面 在按e进入 选择第二个选项卡 在按e进入将红色部分 rhgb quiet 删除,然后按Enter,在按b重启 这时候就进入日志启动界面,看停留在哪一步出错,然后找答案 一般情况是你改参数错误导致 这时候你重启,按照上面的步骤进入下面页面,在末尾住家 selinux=0, 这是举例子,如果不是selinux配错则不需要加,就是你什么参数配错了,在这配置对了, 在按Enter,在按b重启,正常启动后就可以进入系

Linux内核+Busybox自制linux系统

实验环境 1.centos7图形化界面安装 2.busybox:busybox-1.30.0.tar.bz2 官网 https://busybox.net 下载地址:https://busybox.net/downloads/busybox-1.30.0.tar.bz2 3.一块新添加的硬盘 Busybox 是一个开源项目,遵循GPL v2协议.Busybox将众多的UNIX命令集合进一个 很小的可执行程序中,其中包括了三百多个最常用Linux命令和工具 一.编译安装busybox [[emai