热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

「Linux」制作一个Linux系统

一、前言Linux操作系统至1991年10月5日诞生以来,就其开源性和自由性得到了很多技术大牛的青睐,每个Linux爱好者都为其贡献了自己的一份力&#x

一、前言

Linux操作系统至1991年10月5日诞生以来,就其开源性和自由性得到了很多技术大牛的青睐,每个Linux爱好者都为其贡献了自己的一份力,不管是在Linux内核还是开源软件等方面,都为我们后来人提供了一个良好的学习和研究环境。

本文主要通过裁剪现有Linux系统,根据自己的需要,打造一个属于自己的Linux小系统,让其能够具备Linux的一些常用小功能。

二、原理

启动流程介绍:

制作Linux小系统之前,我们有必要再了解一下Linux的启动流程:

1、首先Linux要通过POST自检,检查硬件设备有没有故障

2、如果有多块启动盘的话,需要在BIOS中选择启动磁盘

3、启动MBR中的bootloader引导程序

4、加载内核文件

5、执行所有进程的父进程、老祖宗init

6、打印欢迎界面

在Linux的启动流程中,加载内核文件时还需要借助别外两个文件:

1)initrd,是CentOS5上用内存模拟的磁盘设备

2)initramfs,是CentOS6上用内存模拟的文件系统

在启程的流程中,init主要是用来做哪些操作的呢?

init通过调用/etc/inittab这个配置文件,然后再去执行/etc/rc.d/rc.sysinit的系统初始化脚本

好啦,原理我们已经知道了,接下来我们来看看具体的思路吧(〃'▽'〃)

三、思路

1、我们要在一个现有的Linux系统上加一块硬盘/dev/sdb,在硬盘上分两个分区,一个是/boot,一个是/,并将其格式化。当然,我们需要明确的概念是,我们现在加的这个硬盘在现有的Linux系统中是/dev/sdb,但是,当我们把东西全部设置好时,我们就需要把这个硬盘拔除,放在我们的新系统上,此时,他就是/dev/sda啦。

2、在/dev/sdb这个硬盘上,我们要将其打造成一个独立的Linux系统,里面的所有文件是需要我们一个一个拷贝进去的。而且,作为一个将来要当/dev/sda的硬盘,里面一定要有grub文件诺~所以我们要安装grub文件。

3、同时,作为一个能独立运行的Linux系统,内核是一定不能少的!所以,我们要把内核文件和initramfs文件也一起拷到我们的/dev/sdb上。

4、现在我们系统已经初具规模了,接下来就是需要程序了0.0关于程序的拷贝我们可以通过一个脚本来实现。具体的脚本在下文中会给大家说到。

以上步骤完成,我们的自制Linux就完成啦~我们的思路就是这么回事,接下来,我们就开始吧( ̄▽ ̄)~*

四、操作步骤

本次实验我们以centos6.9为例~

1、目标磁盘分区

首先,我们在宿主机上添加一块大小为20G的硬盘:

十五分钟制作一个属于自己得Linux操作系统!

 

 

十五分钟制作一个属于自己得Linux操作系统!

 

 

十五分钟制作一个属于自己得Linux操作系统!

 

 

十五分钟制作一个属于自己得Linux操作系统!

 

 

十五分钟制作一个属于自己得Linux操作系统!

 

 

十五分钟制作一个属于自己得Linux操作系统!

 

 

十五分钟制作一个属于自己得Linux操作系统!

 

 

十五分钟制作一个属于自己得Linux操作系统!

 

 

添加完成后,点击确定,然后我们打开宿主机。 通过fdisk来给我们的/dev/sdb进行分区:

十五分钟制作一个属于自己得Linux操作系统!

 

 

接下来,我们对/dev/sdb的分区进行格式化:

十五分钟制作一个属于自己得Linux操作系统!

 

 

格式化完成后,我们创建一个文件夹。进行挂载:

十五分钟制作一个属于自己得Linux操作系统!

 

 

注意:新建的文件夹必须是/mnt/boot

2、安装grub至目标磁盘

我们直接用grub-install –root-directory=/mnt命令来安装。用这个命令会安装grub引导第二阶段的文件。

十五分钟制作一个属于自己得Linux操作系统!

 

 

我们可以来看一下二进制确认我们是否安装成功:

十五分钟制作一个属于自己得Linux操作系统!

 

 

安装成功。

3、复制内核文件和initrd文件

将内核文件和initrd文件复制到/dev/sdb下的boot目录中:

十五分钟制作一个属于自己得Linux操作系统!

 

 

4、建立grub.conf文件

上面我们已经移植了内核和initrd文件,我们可以根据其版本来编写grub.conf文件:

十五分钟制作一个属于自己得Linux操作系统!

 

 

注意,我们要把selinux给关掉,同时设定一下init,告诉内核不要再去找这个程序了,不然开机的时候会出现错误的~

5、创建一级目录并复制文件

至此,我们就缺目录和文件了~

创建开机后的一级目录,同时把/dev/sdb2挂载至/mnt/sysroot,使该目录作为根目录:

十五分钟制作一个属于自己得Linux操作系统!

 

 

复制文件,复制文件我们通过脚本执行,复制我们平时常用的命令即可,小编这里复制了ls,ifconfig,bash,reboot,rm,modprobe,mount,ip,mkdir,touch,cat,vi,less,shutdown,insmod。我们可以用tree查看一下这些命令的复制情况:

十五分钟制作一个属于自己得Linux操作系统!

 

 

很明显我们都复制成功了~

附:复制命令的脚本源代码

十五分钟制作一个属于自己得Linux操作系统!

 

 

6、复制网卡驱动

我们基本工作已经完成了,如果想使这个虚拟机带有网卡功能,我们就必须把网卡驱动拷过来,具体操作如下:

1)查询网卡详细信息:

十五分钟制作一个属于自己得Linux操作系统!

 

 

2)把网卡模块的路径复制到/mnt/sysroot的库文件下:

十五分钟制作一个属于自己得Linux操作系统!

 

 

以上,我们的操作全部完成。现在我们就可以关机,然后把/dev/sdb这个硬盘拆下来,放到新的虚拟机上运行了~

五、测试开机

我们创建一个新的虚拟机,启动的时候会带一个硬盘,我们不用它的,删掉再把我们自己定义的硬盘加进去:

十五分钟制作一个属于自己得Linux操作系统!

 

 

十五分钟制作一个属于自己得Linux操作系统!

 

 

十五分钟制作一个属于自己得Linux操作系统!

 

 

十五分钟制作一个属于自己得Linux操作系统!

 

 

十五分钟制作一个属于自己得Linux操作系统!

 

 

十五分钟制作一个属于自己得Linux操作系统!

 

 

此时,我们做好的硬盘已经加进去了。我们可以试试能不能启动了,如果虚拟机可以正常开启,就说明我们的实验成功~

十五分钟制作一个属于自己得Linux操作系统!

 

 

十五分钟制作一个属于自己得Linux操作系统!

 

 

六、实现网络功能

 

十五分钟制作一个属于自己得Linux操作系统!

 

 

由于图片可能会看不清楚,现把代码标出如下:

十五分钟制作一个属于自己得Linux操作系统!

 

 

由于复制命令的时候忘记复制ping了……所以我们用另一台机器来ping一下这个ip地址:

十五分钟制作一个属于自己得Linux操作系统!

 

 

可以ping通~

至此,我们已经完成了私人订制Linux的全部操作,同时我们的自制Linux也可以联网啦~

所有实验圆满成功!撒花✿✿ヽ(°▽°)ノ✿

转:https://www.cnblogs.com/wrxblog/p/10031048.html



推荐阅读
  • 在 CentOS 6.4 上安装 QT5 并启动 Qt Creator 时,可能会遇到缺少 GLIBCXX_3.4.15 的问题。这是由于系统中的 libstdc++.so.6 版本过低。本文将详细介绍如何通过更新 GCC 版本来解决这一问题。 ... [详细]
  • 本文详细介绍了在 CentOS 7 系统中配置 fstab 文件以实现开机自动挂载 NFS 共享目录的方法,并解决了常见的配置失败问题。 ... [详细]
  • Linux CentOS 7 安装PostgreSQL 9.5.17 (源码编译)
    近日需要将PostgreSQL数据库从Windows中迁移到Linux中,LinuxCentOS7安装PostgreSQL9.5.17安装过程特此记录。安装环境&#x ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • 在Linux系统中避免安装MySQL的简易指南
    在Linux系统中避免安装MySQL的简易指南 ... [详细]
  • SecureCRT是一款功能强大的终端仿真软件,支持SSH1和SSH2协议,适用于在Windows环境下高效连接和管理Linux服务器。该工具不仅提供了稳定的连接性能,还具备丰富的配置选项,能够满足不同用户的需求。通过SecureCRT,用户可以轻松实现对远程Linux系统的安全访问和操作。 ... [详细]
  • 本文详细介绍了在CentOS 6.5 64位系统上使用阿里云ECS服务器搭建LAMP环境的具体步骤。首先,通过PuTTY工具实现远程连接至服务器。接着,检查当前系统的磁盘空间使用情况,确保有足够的空间进行后续操作,可使用 `df` 命令进行查看。此外,文章还涵盖了安装和配置Apache、MySQL和PHP的相关步骤,以及常见问题的解决方法,帮助用户顺利完成LAMP环境的搭建。 ... [详细]
  • 在Linux系统中,网络配置是至关重要的任务之一。本文详细解析了Firewalld和Netfilter机制,并探讨了iptables的应用。通过使用`ip addr show`命令来查看网卡IP地址(需要安装`iproute`包),当网卡未分配IP地址或处于关闭状态时,可以通过`ip link set`命令进行配置和激活。此外,文章还介绍了如何利用Firewalld和iptables实现网络流量控制和安全策略管理,为系统管理员提供了实用的操作指南。 ... [详细]
  • 本文详细介绍了在 Ubuntu 系统上搭建 Hadoop 集群时遇到的 SSH 密钥认证问题及其解决方案。通过本文,读者可以了解如何在多台虚拟机之间实现无密码 SSH 登录,从而顺利启动 Hadoop 集群。 ... [详细]
  • 基于Linux开源VOIP系统LinPhone[四]
    ****************************************************************************************** ... [详细]
  • CentOS 7 中 iptables 过滤表实例与 NAT 表应用详解
    在 CentOS 7 系统中,iptables 的过滤表和 NAT 表具有重要的应用价值。本文通过具体实例详细介绍了如何配置 iptables 的过滤表,包括编写脚本文件 `/usr/local/sbin/iptables.sh`,并使用 `iptables -F` 清空现有规则。此外,还深入探讨了 NAT 表的配置方法,帮助读者更好地理解和应用这些网络防火墙技术。 ... [详细]
  • 在 CentOS 6.7 系统维护中,常用的巡检命令包括:`uname -a` 用于查看内核、操作系统和 CPU 信息;`head -n 1 /etc/issue` 用于查看操作系统的版本;`cat /proc/cpuinfo` 用于获取详细的 CPU 信息;`hostname` 用于显示当前主机名;`ls` 命令则用于列出目录内容。这些命令可以帮助系统管理员快速了解系统的运行状态和配置信息,确保系统的稳定性和安全性。 ... [详细]
  • 本文介绍了如何利用Shell脚本高效地部署MHA(MySQL High Availability)高可用集群。通过详细的脚本编写和配置示例,展示了自动化部署过程中的关键步骤和注意事项。该方法不仅简化了集群的部署流程,还提高了系统的稳定性和可用性。 ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • 为了在Hadoop 2.7.2中实现对Snappy压缩和解压功能的原生支持,本文详细介绍了如何重新编译Hadoop源代码,并优化其Native编译过程。通过这一优化,可以显著提升数据处理的效率和性能。此外,还探讨了编译过程中可能遇到的问题及其解决方案,为用户提供了一套完整的操作指南。 ... [详细]
author-avatar
手机用户2502902033
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有