创建一个自己的 Linux系统
简单来说就是一个文件传递的机制,首先创建/安装一个硬盘,然后把前硬盘中的一部分文件先转移到Linux系统上,再通过Linux系统转移到创建的新硬盘,之后用虚拟机,把新硬盘装在其中,就可以在新硬盘上做到一些功能了
前知识准备:
当计算机启动时,GRUB 提供一个菜单,显示可用的操作系统和内核。用户可以选择要启动的操作系统或内核。
多操作系统支持:GRUB 可以引导加载多个操作系统,使用户能够在同一台计算机上安装和使用多个操作系统。

(说白了就是这个)
1.添加磁盘

注意,这里选择的是将虚拟磁盘存储为单个文件

初始选择的路径是download文件夹,但是download文件夹是应用安装文件夹,不能用来保存文件,于是就换一个文件夹保存就行了
2.进行磁盘分区,格式化
使用fdisk /dev/sdb 将dev文件目录下面的sdb进行格式化

我们将其第一块扇区划分500M,作为引导boot分区
分区结束后会有此效果

之后进行文件系统创建mkfs.ext4 /dev/sdb1 mkfs.ext4 /dev/sdb2(注意mkfs和.ext4之间没有空格)

3.对磁盘挂载
为什么要挂载到mnt下面呢:因为mnt是临时挂载别的文件系统的一个目录
mkdir -p /mnt/boot /mnt/sysroot (创建多级目录,同时在boot和/之间存在一个_表示同时创建两个)
mount /dev/sdb1 /mnt/boot mount /dev/sdb2 /mnt/sysroot (把sdb1挂载到boot分区,把sdb2挂载到sysroot分区)
grub2-install --root-directory=/mnt /dev/sdb (将GRUB2引导加载程序安装到/dev/sdb设备,并指定/mnt为根目录[--root-directory=/mnt])
hexdump -C -n 512 /dev/sdb (以字符和16进制的形式显示/dev/sdb前512字节的内容

你也可以用hexdump -d -n 256 /dev/sdb(以十进制显示/dev/sdb前256字节的内容)

之后就可以进行复制,把文件复制到相应位置
cp -rf /boot/* /mnt/boot/

出现了这样的情况.... 说明在mnt目录下面有相关的相同文件,一个个yes掉需要很久:( (创建的时候自带的文件,不是后来加的)
于是可以rm -rf /mnt/boot/* (一定小心不要写成/boot/*)
再进行cp操作

之后就到了修改grub的部分了
通过cd /mnt/boot(之前把boot cp到其中了)
cd grub2
vim grub.cfg

就会看到这个界面
在if最后面有该分区的uuid,由于是copy过来的,所以uuid会和我们新创建的不同,我们要把它修改成我们新磁盘的uuid
那么怎么查看uuid(universally unique ID)呢
我们可以用指令lsblk -f

把本来的改成新创建的就可以了
具体要修改的地方如下

在if和else后面加的是sdb1的(表示boot的uuid),在下面的uuid中加的是sdb2的(表示/的uuid),以及在该段的末尾加上selinux=0 init=/bin/bash
selinux=0:这个参数用于禁用 SELinux,即安全增强型 Linux(Security-Enhanced Linux)子系统。SELinux 是一种安全机制,可以提
供强制访问控制和强制安全策略,通过限制进程的权限来增强系统的安全性。将 selinux=0 设置为 0 可以临时禁用 SELinux。
init=/bin/bash:这个参数用于指定系统初始化进程(init)启动时要运行的程序。/bin/bash 是一个常见的命令解释器(shell)路径,它
可以作为一个简单的、交互式的环境提供给用户进行命令行操作。通过将 init 设置为 /bin/bash,系统将在引导时直接进入交互式的 Bash shell
,而不是正常的启动过程。
这样的地方有三处,都要进行修改.这样,我们的开机启动就做好了,开机的时候就会进入磁盘2
copy指令
虽然我们可以正常开机,但是里面的指令我一个也用不了,所以要去copy一些指令
首先创建好目录

我们以lib64下的指令为例

这里使用的lib64/*.*是一个通配符,直接copy的xx.xx的文件,如果你想把目录也copy过去,可以考虑使用lib64/*

同时别忘了copy /bin/bash 不然在前面的init=/bin/bash就起不到效果,进都进不去
创建一个新的虚拟机
移除自带的硬盘,同时加上之前添加的新硬盘

现有磁盘文件地址可以在你的大Linux上找到sdb的地址

保存,启动这样一个有你自己需求的Linux就做好了
--- 本文是对韩顺平老师的Linux教程127的整理,看到该视频也想自己试试
创建一个自己的 Linux系统的更多相关文章
- Linux内核设计第三周——构造一个简单的Linux系统
Linux内核设计第三周 ——构造一个简单的Linux系统 一.知识点总结 计算机三个法宝: 存储程序计算机 函数调用堆栈 中断 操作系统两把宝剑: 中断上下文的切换 进程上下文的切换 linux内核 ...
- 《Linux内核分析》第三周 构建一个简单的Linux系统MenuOS
[刘蔚然 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000] WEEK THREE ...
- 第三节 构造一个简单的Linux系统MenuOS——20135203齐岳
第三节 构造一个简单的Linux系统MenuOS By 20135203齐岳 Linux内核源代码 arch/ 支持不同cpu的源代码 Documentations/ 文档存储 init/ 内核启动相 ...
- Linux内核分析第三周学习总结:构造一个简单的Linux系统MenuOS
韩玉琪 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.Linux内 ...
- Linux内核分析— —构造一个简单的Linux系统MenuOS(20135213林涵锦)
Linux内核分析— —构造一个简单的Linux系统MenuOS 实验内容 Linux内核的启动过程,从start_kernel到init进程启动 使用实验楼的虚拟机打开shell cd LinuxK ...
- 《Linux内核分析》第三周笔记 构造一个简单的Linux系统MenuOS
构造一个简单的Linux系统MenuOS 一.linux内核源代码简介 三大法宝(存储程序计算机.函数调用堆栈.中断)和两把宝剑(中断上下文的切换:保存现场和恢复现场.进程上下文的切换) 1.在lin ...
- 20135202闫佳歆--week3 构造一个简单的Linux系统MenuOs--学习笔记
此为个人学习笔记存档 week 3 构造一个简单的Linux系统MenuOs 复习: 计算机有三个法宝:存储程序计算机,函数调用堆栈,中断 操作系统有两把剑: 1.中断上下文的切换,保存现场和恢复现场 ...
- 《Linux内核分析》第三周学习小结 构造一个简单的Linux系统OS
郝智宇 无转载 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 第三周 构造一个简单的Linux系统Me ...
- Linux内核分析-构造一个简单的Linux系统MenuOS
构造一个简单的Linux系统MenuOS linux内核目录结构 arch目录包括了所有和体系结构相关的核心代码.它下面的每一个子目录都代表一种Linux支持的体系结构,例如i386就是Intel C ...
- 20135220谈愈敏Blog3_构造一个简单的Linux系统MenuOS
构造一个简单的Linux系统MenuOS 谈愈敏 原创作品转载请注明出处 <Linux内核分析>MOOC课程 http://mooc.study.163.com/course/USTC-1 ...
随机推荐
- 【WebRtc】获取音视频数据
首页截图 获取音视频 关键Code 获取摄像头数据 /** * 获取流数据 */ openUserMeida() { var that = this // 判断是否支持获取媒体数据 if (!navi ...
- 2023年icpc大学生程序设计竞赛-wmh
这次比赛名额比较少,程老师还是给了我们新生更多机会,非常感谢.第一次去这么远打比赛,也算是比较开心的,过去那天晚上就被队友拉着出去玩,玩的很嗨,打的很菜.vp去年题的时候是自信的,参加今年正式赛的时候 ...
- CocosCreator + Vscode + Ts 代码注释生成文档,利用typedoc
需求: 脚本的代码注释,生成为文档 基本搭建环境: (cocoscreator 2.4.x + vscode + ts) .(nodejs + npm) 步骤: 1.安装typedoc: npm in ...
- 如何修改NuGet默认全局包文件夹的位置?
由于一些历史原因,重装系统成为Windows用户解决疑难杂症的祖传手艺.受此影响,给硬盘分盘几乎成为了一种执念,少则C.D两个盘,夸张一点的5~6个盘的也不是没有. PS:macOS和Linux一直都 ...
- 五 Android Capabilities讲解(转)
1.Capabilities介绍 可以看下之前代码里面设置的capabilities DesiredCapabilities capabilities = new DesiredCapabilitie ...
- 【技术积累】Linux中的命令行【理论篇】【四】
ar命令 命令介绍 ar命令是Linux系统中的一个工具,用于创建.修改和提取静态库文件(archive files).静态库文件是一组已编译的目标文件的集合,可以被链接到可执行文件中. 命令说明 a ...
- 让nodejs开启服务更简单--koa篇
在nodejs原始的http模块中,开启一个服务编码相对麻烦,需要对请求方式及上传的数据进行各种判断,而koa给我们提供了比较便捷的编码方式,同时它还有很多中间件可以直接拿来使用. 首先来看,如何 ...
- Mybatis开发中的常用Maven配置
Mybatis导入Maven配置 <!-- MyBatis导入 --> <dependency> <groupId>org.mybatis</groupId& ...
- 实现无限存储:基于JuiceFS 创建 Samba 和 NFS 共享
随着企业数据量的持续增长,存储容量需求日益增大.如何采用没有容量上限的云存储替换本容量有限的本地磁盘,已成为广泛的需求和共识.特别是在企业中常用的 Samba 和 NFS 共享,如果能够使用云存储作为 ...
- GGTalk 开源即时通讯系统源码剖析之:客户端全局缓存及本地存储
继上篇<GGTalk 开源即时通讯系统源码剖析之:虚拟数据库>详细介绍了 GGTalk 内置的虚拟的数据库,无需部署真实数据库便能体验GGTalk的全部功能,虚拟数据库将极大地简化服务端的 ...