zoukankan      html  css  js  c++  java
  • 定制简单的Linux系统

    定制简单的Linux系统

    制作思路:

    新加一块硬盘,设置两个分区,一个存/boot,一个存/,创建文件系统并格式化。要注意,现在我们家的硬盘是要可以拔下来安装到其他机器上使用的,否则就没有意义了。试验中的硬盘sdb当换到其他机器上就是我们熟悉的sda了。

    简单的Linux系统应该包括:内核文件,grub,bash,再加些常用工具就可以了。

    准备工作:

    添加工具和命令可以通过脚本来实现,所以我们先准备一个可以复制命令并安装的脚本。

    #!/bin/bash
    
    #-----------------------------
    
    #Filename: copycmd.sh
    
    #Revision: 1.0
    
    #Date: 2017-09-21
    
    #Author: zyx
    
    #Emali: zyx@gmail.com
    
    #Description:
    
    #------------------------------
    
    fcopy () {
    
           aa=`which $1 | tail -1`
    
           ldd $aa
    
           if [ $? -eq 0 ] ;then
    
               if [ -a /system ];then
    
                  cp --parents $aa /system && echo "Command has been copied ! "
    
               else
    
                 mkdir /system
    
                 cp --parents $aa /mnt/sysroot/ && echo "Command has been copied ! "
    
              fi
    
              if [ -a /testdir/copycmd ];then
    
                ldd $aa | sed -r -e "s@.*[[:space:]]+(/.*)[[:space:]].*@1@g" -e '1d' > /testdir/copycmd
    
              else
    
               mkdir /testdir
    
              touch /testdir/copycmd
    
              ldd $aa | sed -r -e "s@.*[[:space:]]+(/.*)[[:space:]].*@1@g" -e '1d' > /testdir/copycmd
    
             fi
    
             while read line ;do
    
              cp --parents $line /mnt/sysroot/
    
              done < /testdir/copycmd
    
              echo "Libary file has been copied !"
    
          fi
    
    }
    
     
    
    select choice in run quit ;do
    
    case $choice in
    
    run)
    
    read -p "Please enter a command:" cmd
    
    fcopy $cmd
    
    ;;
    
    quit)
    
    echo "bye"
    
    exit 0
    
    ;;
    
    *)
    
    echo "error"
    
    exit 2
    
    esac
    
    done

    开始制作

    新建硬盘

    在虚拟机上新建一块大小为20G(根据个人喜好修改)的硬盘。

    如果在线添加硬盘的话,添加完成后系统并不能立即识别,使用命令

    echo '- - -'> /sys/class/scsi_host/host0/scan 就可以在线添加硬盘了。

    系统启动,查看磁盘 lsblk

    磁盘分区 fdisk /dev/sdb

    保存退出:w

    格式化分区 :

    mkfs.ext4 /dev/sdb1

    mkfs.ext4 /dev/sdb2

    创建/boot文件,在那个目录下不重要,必须是/boot,因为数据是放在硬盘grub下,目录必须是/boot。

    挂载 mount /dev/sdb1 /mnt/boot/

    安装grub包 grub-install -–root-directory=/mnt /dev/sdb

    可以看出grub已经安装成功了,距离成功已经不远了。

    可以查看二进制,看看是否安装成功

    Hexdump –C /dev/sdb –n 512

    接下来将原系统本身的文件拷贝给新系统就行了

    cp /boot/vmlinuz-2.6.32-696.el6.x86_64 /mnt/boot/

    cp /boot/initramfs-2.6.32-696.el6.x86_64.img /mnt/boot/

    具体版本可以Tab键补齐

    创建grub文件

    vim /mnt/boot/grub/grub.conf

    default=0

    timeout=5

    title linux

    kernel /vmlinuz-2.6.32-696.el6.x86_64 root=UUID=2ca667c0-a6d5-4267-8b19-598430499167 selinux=0

    initrd /initramfs-2.6.32-696.el6.x86_64.img

    这样一个简单的系统基本上完成了,接下来就需要用脚本将一些常用命令复制过来就可以了。

    创建开机后的一级目录,并将sdb2挂载在目录下

    给脚本加上执行权限,运行脚本

    把自己想要的命令都可以复制过来

    等等命令都可以复制, 不过不要忘了 网卡驱动模块,这样系统就可以使用网络功能了。

    locate e1000

    复制e1000.ko就可以了

    作为一个操作系统,根下的一些文件夹因为是要有的

    mkdir {etc,dev,sys.proc,tmp,root,lib,user,home,var,boot}

    当然不要忘了 sync 让缓存数据写进磁盘。

    然后就可以关机转移磁盘了。这里我们在新建一个虚拟机,将系统自带的银盘移除,装上我们自己制作的硬盘。

    启动虚拟机。

    激动人心的时刻就要到来啦!

    终于 ,系统成功启动!

    接下来实现网络功能:

    手动添加网卡驱动

    insmod /lib64/e1000.ko

    查看ip ip a

    添加IP地址

    ifconfig eth0 192.168.252.62/24 up

    这样这个系统也可以使用网络功能了。

    一个简单的Linux系统就制做完成了!

  • 相关阅读:
    5道趣味Python热身题【新手必学】
    操作系统特征
    二叉树的中序遍历
    英语一图画作文模板
    函数
    双阶乘与华里士公式
    因式分解
    【】连通图——详细解释
    【】this指针——c++中的特殊指针
    咱们程序员好用的云笔记
  • 原文地址:https://www.cnblogs.com/zyx-linux/p/7581778.html
Copyright © 2011-2022 走看看