定制简单的Linux系统

Posted 绮梦小煊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了定制简单的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系统就制做完成了!

以上是关于定制简单的Linux系统的主要内容,如果未能解决你的问题,请参考以下文章

Sublime Text自定制代码片段(Code Snippets)

VsCode 代码片段-提升研发效率

36.Linux软件管理--YUM工具

linux基础20定制linux系统

linux基础21定制linux系统

如何定制小型的linux系统,具体的步骤,谢谢了