定制简单的Linux系统

制作思路:

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

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

准备工作:

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

#!/bin/bash

#-----------------------------

#Filename: copycmd.sh

#Revision: 1.0

#Date: 2017-09-21

#Author: zyx

#Emali: [email protected]

#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 "[email protected]*[[:space:]]+(/.*)[[:space:]].*@\[email protected]" -e ‘1d‘ > /testdir/copycmd

          else

           mkdir /testdir

          touch /testdir/copycmd

          ldd $aa | sed -r -e "[email protected]*[[:space:]]+(/.*)[[:space:]].*@\[email protected]" -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系统就制做完成了!

时间: 2024-11-14 21:20:59

定制简单的Linux系统的相关文章

linux内核分析 第三周 构造一个简单的Linux系统MenuOS

一.计算机的三个法宝 存储程序计算机,函数调用堆栈,中断二.操作系统的两把剑:1.中断上下文的切换,保存现场和恢复现场2.进程上下文的切换. 三.linux内核源代码的分析: ·arch/目录保存支持多种CPU类型的源代码,重点是x86·init目录:含有main.c,内核启动相关的代码基本都在init目录下·ipc目录:进程间的通信·kernel目录:有Linux内核的核心代码.四.构造一个简单的Linux系统 使用实验楼的虚拟机打开shell 1.cd LinuxKernel/2.qemu

作业3:构造一个简单的Linux系统MenuOS 20135115臧文君

构造一个简单的Linux系统MenuOS 注:作者:臧文君,原创作品转载请注明出处,<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.Linux内核源代码介绍 1.根目录 arch/x86目录下的代码是我们重点关注的,arch中包括支持不同CPU的源代码. init目录下包含内核启动相关的代码,如main.c(start_kernel函数相当于普通C程序的main函数,是Linux内核初始化的起点). ipc

Linux内核设计第三周——构造一个简单的Linux系统

Linux内核设计第三周 ——构造一个简单的Linux系统 一.知识点总结 计算机三个法宝: 存储程序计算机 函数调用堆栈 中断 操作系统两把宝剑: 中断上下文的切换 进程上下文的切换 linux内核源代码分析 arch/目录保存支持多种CPU类型的源代码 其中的关键目录包括:Documentation.drivers.firewall.fs(文件系统).include init目录:含有main.c,内核启动相关的代码基本都在init目录下 start_kernal()函数为启动函数,初始化内

20135327郭皓--Linux内核分析第三周 构造一个简单的Linux系统MenuOS

Linux内核分析第三周  构造一个简单的Linux系统MenuOS 前提回顾 1.计算机是如何工作的三个法宝 1.存储程序计算机 2.函数调用堆栈 3.中断 2.操作系统的两把宝剑 中断上下文的切换 进程上下文的切换 第一讲  Linux内核源代码介绍 arch目录包括了所有和体系结构相关的核心代码.它下面的每一个子目录都代表一种Linux支持的体系结构,例如i386就是Intel CPU及与之相兼容体系结构的子目录.PC机一般都基于此目录. init目录包含核心的初始化代码(不是系统的引导代

《Linux内核分析》第三周笔记 构造一个简单的Linux系统MenuOS

构造一个简单的Linux系统MenuOS 一.linux内核源代码简介 三大法宝(存储程序计算机.函数调用堆栈.中断)和两把宝剑(中断上下文的切换:保存现场和恢复现场.进程上下文的切换) 1.在linux内核源码里面arch占有的代码量相当庞大.arch/x86目录下的代码是我们重点关注的. 2.内核启动相关的代码基本都在init目录下(main.c). start_kernel是初始化linux内核的起点. start_kernel相当于c程序中的main函数 3.linux内核的核心代码在k

《Linux内核分析》第三周 构建一个简单的Linux系统MenuOS

[刘蔚然 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000] WEEK THREE(2.29——3.6)构造一个简单的Linux系统MenuOS SECTION 1 Linux内核源代码简介 1.操作系统的两把宝剑(回顾上一讲) 中断上下文的切换——保存现场&恢复现场 进程上下文的切换 2.Linux内核源代码简介 打开内核源代码页面 arch/目录:支持不同CPU的源代码:其中的

第三周——构建一个简单的Linux系统MenuOS

[洪韶武 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ] 第三周  构建一个简单的Linux系统MenuOS

定制自己的linux系统

算是总结式文档,以备后忘 先说一下背景,一开始我就知道有这个任务,同时我自己也非常感兴趣,打算去研究研究 于是才同意接这个任务,但是我的原意是从头开始搭建系统,也就是lfs 但接到任务后,由于种种原因,lfs没有进行到底,中途变为在流行版本基础上进行定制 本篇文章基于ubuntu 14.04 LTS进行定制 接到公司新任务--定制一版linux系统 其实一开始接到的任务是裁剪linux内核 于是马不停蹄的查找相关资料,由于之前做过一些linux内核编译的事,所以也不是特别犯难,查找一下资料就开始

构建一个简单的Linux系统 MenuOs —— start_kernel到init进程(20135304刘世鹏)

构建一个简单的Linux系统 MenuOs —— start_kernel到init进程 作者:刘世鹏20135304 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 Linux内核代码简介 内核源码三个个重要目录 arch占有代码量最大,支持不同cpu的源代码,arch/x86目录下的代码是我们关注的重点 init,内核启动相关的代码基本都在init目录下,init/main.c中start_kernel是整