• 自制Linux精简系统


    本系统是基于CentOS6.8

    步骤如下:

    自制Linux系统

    (1)分区并创建文件系统

    fdisk /dev/sdb

        分两个必要的分区

        /dev/sdb1 对应 /boot  /dev/sdb2 对应根 /

        创建文件系统

    1. mkfs.ext4 /dev/sdb1  
    2. mkfs.ext4 /dev/sdb2

    (2)挂载boot分区

    1. mkdir /mnt/boot
    2. mount /dev/sdb1 /mnt/boot

    (3)安装grub

    grub-install  --root-directory=/mnt  /dev/sdb

    (4)恢复内核和initramfs文件

    1. cp /boot/vmlinuz-2.6.32-642.el6.x86_64    /mnt/boot/
    2. cp /boot/initramfs-2.6.32-642.el6.x86_64.img    /mnt/boot

    (5)建立grub.conf

    1. vim /mnt/boot/grub/grub.conf
    2.         default=0
    3.         timeout=5
    4.         title=nineven linux
    5.         root (hd0,0)
    6.         kernel /vmlinuz-2.6.32-642.el6.x86_64 root=/dev/sda2 selinux=0 init=/bin/bash
    7.         initrd /initramfs-2.6.32-642.el6.x86_64.img

    (6)挂载跟系统

    1. mkdir /mnt/sysroot
    2. mount /dev/sdb2 /mnt/sysroot
    3. 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 ,fdisk ,mount ,hostname 等待

    (7)验证bash是否可用

    chroot /mnt/sysroot

    (8)同步数据到磁盘上

        sync 命令,多执行几次

    操作流程如下:

    我用的是虚拟机模拟的

    (1) 先添加一块硬盘,然后通过

    echo "- - -" >> /sys/class/scsi_host/host2/scan

    扫描出新增的硬盘

    (2)分区

    (3)格式化文件系统

    (4)boot 分区操作

    (5)根分区操作

    复制bash和相关的库文件,我用的是提前写的脚本,脚本请往后看

    验证成功,最后检查一下 /mnt/sysroot/etc/fstab 和 /mnt/boot/grub/grub.conf 文件,最后确认一下配置是否正确

    然后新建一个虚拟机,用这块磁盘作为系统盘,检查一下是否可用开机

    开机界面

    由于是精简系统,好的功能都用不了

    复制库文件及命令的脚本

    [root@localhost Desktop]# vim /boot/cmd.sh
    1. #!/bin/bash
    2. flag=1
    3. read -p "please input a path that you want to copy : " mubiaodir
    4. panduanlujing(){
    5.     path=$(dirname $mubiaodir$ki)
    6.     if [ ! -e $path ];then
    7.         mkdir -p $path
    8.     fi
    9.    cp  $ki $mubiaodir$ki &> /dev/null || flag=0
    10. }
    11. kuwenjian(){
    12.     for ki in $(ldd $(which --skip-alias $cmdname) | sed -rn "s@.*[[:space:]]([/].*)[[:space:]].*@\1@p") $(which --skip-alias $cmdname);do
    13.         panduanlujing
    14.     done
    15. }
    16. while true ;do
    17. read -p "please input a command name , quit is exit:" cmdname
    18. if [ "$cmdname" == "quit" -o "$cmdname" == "exit" ];then
    19.     break
    20. else
    21.     if (ldd $(which --skip-alias $cmdname)) &> /dev/null ;then
    22.         kuwenjian
    23.         [  $flag -eq 1 ] && echo "复制成功" || echo "权限不足,复制失败"
    24.     else
    25.         echo "错误的命令名称"
    26.     fi
    27. fi
    28. done

  • 相关阅读:
    用最少的代码模拟gRPC四种消息交换模式
    C#后缀表达式解析计算字符串公式
    前端网络---网络安全
    西邮计科嵌入式复习
    【Hack The Box】linux练习-- Shocker
    新老用户该如何选择腾讯云服务器!
    pytorch学习神经网络的搭建
    打字通小游戏制作教程:用HTML5和JavaScript提升打字速度
    编程之路===>尽可能早播种(明确职业发展目标)、坚持学习精进,去建立自己的核心竞争力 ~
    多线程(一)——委托与多线程
  • 原文地址:https://blog.csdn.net/ly1358152944/article/details/126320971