制作一个简单的linux
我这里是借助宿主机做的一个简单的Linux,我们只要知道一个Linux启动过程需要什么,这里制作就简单的多了。不过没有基础的也没关系,我写的很详细,没有基础的看了我写的步骤只要细心也是会做出来的,我这里的小Linux是很简单的,很多功能还不够全,但是能启动起来,一些简单的功能还是会完成的,回头我会把功能补全的,更新这个简单的Linux的。
一、基本过程
grub --> kernel --> initrd --> ROOTFS(/sbin/init,/bin/bash)
我们找一个硬盘装上grub而后给它提供内核内核借助于initrd能够去读取真正的文件系统,在根文件系统我们只需要提供一个/sbin/init,在提供一个/bin/bash,这个系统就能跑起来,但是只能执行内部的自带的命令,我们把其它的命令给它放进去,他就成了一个小的基本完整的linux了。
二、制作一个Linux详细过程
我们这里以当前系统为宿主机,再加一个IDE硬盘,我们先安装grub,然后分两个区,一个用来做boot,一个用来做跟。
我们开机后用fdisk /dev/hda进行分区,下图是第一个分区,第二个分区相同只不过第三个框中是2第四个框中我们给它+512M,w为保存。
下来我们就开始格式化,这里的-j是让它的文件系统为ext3的。
我们开始挂载这两个分区,分别挂载在/mnt/boot和/mnt/sysroot,没有这两个文件我们要在/mnt下创建文件boot和sysroot了,然后开始挂载,但是挂载的分区要及时生效也要开机后也必须生效,要让它开机后生效我们要在/etc/fstab里面配置了,图片下面的两行就是在/etc/fstab文件中配置的,开机后也是有效的。
在/etc/fstab文件中配置
/dev/hda1 /mnt/boot ext3 defaults 0 0
/dev/hda2 /mnt/sysroot ext3 defaults 0 0
下来我们就开始安装grub了,我们用grub-install --root-directory=/mnt /dev/had来安装。
然后我们开始用cp /boot/vmlinuz-2.6.18-308.el5 /mnt/boot/vmlinuz复制内核并重命名为vmlinuz。然后我们复制版本信息,但是前提我们发现initrd-2.6.18-308.el5文件是压缩格式,并且我们还要将里面的init文件里/dev/后面改为hda2。我们这里先创建一个文件夹,先把initrd-2.6.18-308.el5归档展开到这个文件夹中。
我们找到当前文件下的所有文件通过管道送给cpio命令进行归档,再通过管道送给gzip -9强压缩一下,然后保存至/mnt/boot/initrd.gz
这里我们用vim /mnt/boot/grub/grub.conf还要配置grub中的grub.conf,内容为:
default=0
timeout=3
title shuaige linux(2.6.18)
root (hd0,0)
kernel /vmlinuz
initrd /initrd.gz
下来我们就要配置/mnt/sysroot目录下的目录,我们发现这个目录下面什么都没有我们就要创建一些目录。
这时候我们就要把/sbin/init 复制到/mnt/sysroot/sbin下面,把/bin/bash 复制到/mnt/sysroot/bin下面,不仅仅复制这些我们还要把它们所依赖的库也要复制过来。
cp /sbin/init /mnt/sysroot/sbin
cp /bin/bash /mnt/sysroot/bin
这个时候我们的linux基本上就可以跑了,我们用chroot /mnt/sysroot 来测一下。虽然这里的ls 还不能用。下来我们就要复制这些命令了。
我们知道要想执行init文件我们就要执行/etc/inittab这个文件,所有我们先来配置/etc/inittab文件。【提示:这里都是相对路径,记好每个/etc前面还有/mnt/sysroot呢】
id:3:initdefault:
si::sysinit:/etc/rc.d/rc.sysinit
我们还要执行相关的/etc/rc.d/rc.sysinit中的脚本。
#!/bin/bash
#
echo -e "\tWelcome to \033[31mShuaiGe033[0m Linux"
/bin/bash
这里我们保存退出给它一个权限:chmod +x /mnt/sysroot/etc/rc.d/rc.sysinit
这是我们来运行一下【提示:因为我们用的是虚拟机进行演示,所以我们每次要运行的时候都要多sync几下,这样可以同步到磁盘上,这样制作的linux出错概率变小】我们再打开一个虚拟机把加的那个硬盘导入进去,这样我们就启动这个小虚拟机了。
这个系统虽然能跑起来了,但是里面的功能就太弱了,这里我们来把它加强一些,能让它执行一些一般的小命令。但是我们发现要是一个一个复制当前系统上的那就太痛苦了,因为他们所依赖的库太多了,有的还有别名。所以我们这里写一个脚本,来运行脚本,那就比较快了(这里脚本的内容就不多做解释了)。
- #!/bin/bash
- #
- DEST=/mnt/sysroot
- libcp() {
- LIBPATH=${1%/*}
- [ ! -d $DEST$LIBPATH ] && mkdir -p $DEST$LIBPATH
- [ ! -e $DEST${1} ] && cp $1 $DEST$LIBPATH && echo "copy lib $1 finished."
- }
- bincp() {
- CMDPATH=${1%/*}
- [ ! -d $DEST$CMDPATH ] && mkdir -p $DEST$CMDPATH
- [ ! -e $DEST${1} ] && cp $1 $DEST$CMDPATH
- for LIB in `ldd $1 | grep -o "/.*lib\(64\)\{0,1\}/[^[:space:]]\{1,\}"`; do
- libcp $LIB
- done
- }
- read -p "Your command: " CMD
- until [ $CMD == 'q' ]; do
- ! which $CMD &> /dev/null && echo "Wrong command" && read -p "Input again:" CMD && continue
- COMMAND=` which $CMD | grep -v "^alias" | grep -o "[^[:space:]]\{1,\}"`
- bincp $COMMAND
- echo "copy $COMMAND finished."
- read -p "Continue: " CMD
- done
这时候我们来测试一下,成功了。
在切换之前我们先复制一个库文件过去,而且我们希望系统启动后自动装载这两个模块,而且装完以后还要给你的系统输入IP地址,开机后直接就有IP地址。
拷贝模块:
cp /lib/modules/2.6.18-308.el5/kernel/drivers/net/mii.ko /mnt/sysroot/lib/modules
cp /lib/modules/2.6.18-308.el5/kernel/drivers/net/pcnet32.ko /mnt/sysroot/lib/modules
要想开机后自动执行上面功能我们先要把lsmod复制过去,再设置vim /mnt/sysroot/etc/rc.d/rc.sysinit文件【提示:红色字体则为我们这次加入的内容】。
#!/bin/bash
#
echo -e "\tWelcome to \033[31mShuaiGe\033[0m Linux"
insmod /lib/modules/mii.ko
insmod /lib/modules/pcnet32.ko
ifconfig eth0 172.16.58.21/16
ifconfig lo 127.0.0.1/8
/bin/bash
这时候我们开始切换【提示:切换之前必须sync】
这时候我们ifconfig一下,我们设置的IP地址已经设置成功,环回接口IP也设置成功了,这时候我们的小linux已经相对完善了。
转载于:https://blog.51cto.com/lzysg172/1167476
相关文章:

nginx是什么,如何使用
一:nginx是什么? 二:nginx作为网关,需要具备什么?(nginx可以作为web服务器,但更多的时候,我们把它作为网关,因为它具备网关必备的功能:) 反向代理…

OpenCV中Mat数据结构使用举例
#include "stdafx.h"#include <string>#include <iostream>#include <opencv2/opencv.hpp>using namespace std;using namespace cv;int _tmain(int argc, _TCHAR* argv[]){//创建一个用13j填充的 7 x 7 复矩阵-----1Mat M(7, 7, CV_32FC2, Scalar…

贾扬清加盟AI开发者大会!早鸟票抢购正式开启
整理 | 夕颜硬核 AI 技术大会,一年参加一次就够了。9 月 6日-7 日,2019 AI 开发者大会(AI ProCon)将在北京富力万丽酒店举行,人工领域技术领袖将再次齐聚一堂,探讨过去一年最新的 AI 技术趋势与变化&#x…

基本控件HyperlinkButton控件
HyperlinkButton控件可用来作为超链接按钮,支持页面导航。 若导航到MainPage.xaml,NavigateUri属性指定单击后导航页面的Uri 若导航到网页,必须同时指定TargetName,否则要报错。 <HyperlinkButton Width"200" Heigh…

江湖又现中科大少年班的传说
作者 | ——,夕颜出品 | AI科技大本营(ID:rgznai100)导读:近日,《日本经济新闻》的一则报道指出:在左右着企业、国家和地区发展的人工智能领域,中科大少年班的人才支撑着中国的发展。中国自动驾…

[JOISC2014]バス通学
[JOISC2014]バス通学 题目大意: 有\(n(n\le10^5)\)个点和\(m(m\le3\times10^5)\)条交通线路。第\(i\)条交通线路可以让你在时间\(x_i\)从\(a_i\)出发,并在\(y_i\)时到达\(b_i\)。\(q(q\le10^5)\)次询问,每次询问若要在时间\(l_i\)到达\(n\)点…

Windows7在Notepad++中配置Python+OpenCV
1、 从http://notepad-plus-plus.org/下载最新的Notepad6.2.1安装; 2、 从http://www.python.org/下载python-2.7.3.msi安装到D:\Python27目录下,并将D:\Python27添加到环境变量Path中; 3、 打开Notepad,按下F5或者运行(R…

virtualenv 在windows下的绿化方法
virtualenv 在windows下的绿化方法测试环境:windows 7 32 en Python 2.7.3setuptools-0.6c11.win32-py2.7virtualenv-1.9.1-with-pip-1.3.11. f:\> virtualenv my2. 编辑 my/Scripts/activate.bat 前几行中设置VIRTUAL_ENV的那条语句,改为set VIRTUA…

当谈论迭代器时,我谈些什么?
作者 | 樱雨楼编辑 | 豌豆花下猫转载自python猫(ID:python_cat)导语:之前说过,我对于编程语言跟其它学科的融合非常感兴趣,但我还说漏了一点,就是我对于 Python 跟其它编程语言的对比学习,也很感…

Windows7在Eclipse中配置Python+OpenCV
1. 从http://www.oracle.com/technetwork/java/javase/downloads/jdk-7u2-download-1377129.html下载jdk-7u2-windows-i586.exe,安装到D:\ProgramFiles\Java,并将D:\ProgramFiles\Java\jdk1.7.0_02\bin添加到环境变量中; 2. 从…

Pinterest基于AWS规模化使用Apache Kafka的实践经验
在Pinterest,Apache Kafka被用于为实时流应用程序传输数据、记录日志和可视化监控指标。Pinterest的Kafka托管在AWS上,为了实现复制和高可用性,其安装使用了MirrorMaker和DoctorKafka工具。 Pinterest的技术主管Yu Yang写道,Pinte…

Open×××以及其它IP层×××的完全链路层处理的实现
如果Open也能实现传输模式该有多好,如果基于Open实现的产品能仅仅作为一根昂贵的网线串接在用户网络环境,自动捕获感兴趣流量该有多好;如果它能做到只需要配置一个IP即可工作而无需配置任何路由该有多好。我们知道Open是一个用户态的程序&…

Windows 7 64位机上OpenCV2.4.3的编译、安装与配置
1. 从http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.4.3/下载OpenCV2.4.3; 2. 将OpenCV-2.4.3.exe放到D:\soft\OpenCV2.4.3文件夹下,解压到当前文件夹下,生成一个opencv文件夹; 3. 下载并安…

有望替代卷积神经网络?微软最新研究提基于关系网络的视觉建模
导语:最近两年,自注意力机制、图和关系网络等模型在NLP领域刮起了一阵旋风,基于这些模型的Transformer、BERT、MASS等框架已逐渐成为NLP的主流方法。这些模型在计算机视觉领域是否能同样有用呢?近日,微软亚洲研究院视觉…

Word 2013无法发布文章到博客园
2018年12月12日突然发现word2013无法发布文章到博客园了, 虽然不常发布博客, 但作为一个强迫症患者, 不折腾好了, 吃肉都不香呀! 删除之前的账户, 想重新注册, 居然遇到了灰色对话框!…

1 sec on Large Judge (java): https://github.com/l...
1 sec on Large Judge (java): https://github.com/leoyonn/leetcode/blob/master/src/q029_substring_of_all_words/Solution.java转载于:https://www.cnblogs.com/codingtmd/archive/2013/03/31/5079017.html

性能提升3倍的树莓派4,被爆设计缺陷!
整理 | 屠敏转载自CSDN(ID:CSDNnews)一直以来,素有世界最小电脑之称的 Raspberry Pi(树莓派)是一种独特的存在。它不仅只有一块信用卡般的体积,还具备主机电脑所具备的功能,如运行 L…

Windows7 64位机上Emgu CV2.4.2安装与配置
1. 从http://sourceforge.net/projects/emgucv/?sourcedirectory下载最新的Emgu CV2.4.2; 2. 将libemgucv-windows-x86-gpu-2.4.2.1777拷贝到D:\soft\Emgu2.4.2文件夹下,运行此.exe文件,将其安装到D:\soft\Emgu2.4.2\emgucv-wind…

2018年12月,华为HCNP大面积更新题目,军哥独家解题咯
2018年12月,华为HCNP大面积更新题目,乾颐堂军哥独家解题咯2018年是华为认证变动比较大的一年,华为认证走过这几年不得不说是有一定进步的,而且最近华为孟女侠确实让我也小小的骄傲了一把,所以当然希望华为认证能做的更…

关于ProGuard的学习了解(从别处转来)
from:http://www.cnitblog.com/zouzheng/archive/2011/01/12/72639.html在Android项目中用到JNI,当用了proguard后,发现native方法找不到很多变量,原来是被produard优化掉了。所以,在JNI应用中该慎用progurad啊。解决办…

tesseract-ocr3.02字符识别过程操作步骤
1、 从http://code.google.com/p/tesseract-ocr/downloads/list下载tesseract-ocr-3.02-vs2008、tesseract-ocr-3.02.chi_sim.tar、tesseract-ocr-3.02.02.tar、tesseract-ocr-3.02.02-doc-html.tar、leptonica-1.68-win32-lib-include-dirs相关文件; 2、 将所有…

中文repo“霸榜”GitHub Trending,国外开发者不开心了
编译整理 | 一一出品 | AI科技大本营(ID:rgznai100)近日,一位叫Balazs Saros 的国外开发者在Medium上发表了一篇名为"Chinese repos are ruining the Github trending page"的博文,翻译一下他的意思就是“中文 repo 正在…

使用 electron-updater 自动更新应用
前端工程师可以使用 Electron 非常方便的编写出 PC 端应用,而应用更新的方式也有很多,详细可见更新应用程序。 我的项目是基于 electron-vue 搭建的,构建打包生成安装包,则用的是 electron-builder,所以更新自然选择 e…

struts2请求处理过程源代码分析(1)
2019独角兽企业重金招聘Python工程师标准>>> 转载自:http://www.see-source.com/ 源码解析网 网上对于struts2请求处理流程的讲解还是比较多的,有的还是非常详细的,所以这里我就简单地将大概流程总结下,有了个大概印象…

Ubuntu中C代码静态检查工具Splint的安装配置和使用
1、 从http://www.splint.org/download.html下载splint-3.1.2.src.tgz,存放到/home/spring/Splint文件夹下; 2、 打开终端; 3、 解压缩:tar zxvfsplint-3.1.2.src.tgz 4、 安装到/usr/local/splint目录下: …

Fetch 入门
一、什么是Fetch ? Fetch的定义 Fetch本质上是一种标准,该标准定义了请求、响应和绑定的流程。 Fetch标准还定义了Fetch () JavaScript API,它在相当低的抽象级别上公开了大部分网络功能,我们今天讲的主要是Fetch API。Fetch API …

保障数据安全,强调科技向善,旷视发布《人工智能应用准则》
目录 AI应用落地加速 善用科技是关键 《人工智能应用准则》全文 2019年7月17日,旷视正式全文公布基于企业自身管理标准的《人工智能应用准则》(以下简称《准则》)。《准则》从正当性、人的监督、技术可靠性和安全性、公平和多样性、问责和及…

胜者树和败者树 - qianye0905 - 博客园
胜者树和败者树 - qianye0905 - 博客园胜者树和败者树胜者树和败者树都是完全二叉树,是树形选择排序的一种变型。每个叶子结点相当于一个选手,每个中间结点相当于一场比赛,每一层相当于一轮比赛。不同的是,胜者树的中间结点记录的…

C/C++代码静态检查工具PC-lint在VS2008开发环境中的安装配置和使用
PC-Lint偏重于代码的逻辑分析,它能够发现代码中潜在的错误,比如数组访问越界、内存泄漏、使用未初始化变量等。 1、 从http://download.csdn.net/detail/liuchang5/3005191 下载破解版PC-lint9.0; 2、 解压缩到D:\soft\PC-lint,…
k8s使用kube-router网络插件并监控流量状态
简介 kube-router是一个新的k8s的网络插件,使用lvs做服务的代理及负 载均衡,使用iptables来做网络的隔离策略。部署简单,只需要在每个节点部署一个daemonset即可,高性能,易维护。支持pod间通信,以及服务的代…