简单来说就是一个文件传递的机制,首先创建/安装一个硬盘,然后把前硬盘中的一部分文件先转移到Linux系统上,再通过Linux系统转移到创建的新硬盘,之后用虚拟机,把新硬盘装在其中,就可以在新硬盘上做到一些功能了

前知识准备:

Linux启动流程:
1、首先Linux要通过自检,检查硬件设备有没有故障
2、如果有多块启动盘的话,需要在BIOS中选择启动磁盘
3、启动MBR(主引导记录)中的bootloader引导程序
4、加载内核文件
5、执行所有进程的父进程、老祖宗systemd
6、欢迎界面
在Linux的启动流程中,加载内核文件时关键文件:(1)kernel文件:vmlinuz-3.10.0-957.el7.x86_64 (2)initrd文件:initramfs-3.10.0-957.el7.x86_64.img(这里的img不是指的图像...)
 
 什么是grub:
开源的多操作系统引导加载程序。它通常用于在启动计算机时选择并加载操作系统。

当计算机启动时,GRUB 提供一个菜单,显示可用的操作系统和内核。用户可以选择要启动的操作系统或内核。
多操作系统支持:GRUB 可以引导加载多个操作系统,使用户能够在同一台计算机上安装和使用多个操作系统。

(说白了就是这个)

什么是selinux:security enhance Linux,安全增强型Linux,由美国国家安全局(NSA)开发的开源项目,通过在内核层面引入安全策略和标签,限制进程的访问和权限
 
区分bash和vim:
bash是一个命令行解释器,vim是一个文本编辑器,即bash是输入指令和操作系统进行交互,而vim是自己编译代码进行运作

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系统的更多相关文章

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

    Linux内核设计第三周 ——构造一个简单的Linux系统 一.知识点总结 计算机三个法宝: 存储程序计算机 函数调用堆栈 中断 操作系统两把宝剑: 中断上下文的切换 进程上下文的切换 linux内核 ...

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

    [刘蔚然 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000] WEEK THREE ...

  3. 第三节 构造一个简单的Linux系统MenuOS——20135203齐岳

    第三节 构造一个简单的Linux系统MenuOS By 20135203齐岳 Linux内核源代码 arch/ 支持不同cpu的源代码 Documentations/ 文档存储 init/ 内核启动相 ...

  4. Linux内核分析第三周学习总结:构造一个简单的Linux系统MenuOS

    韩玉琪 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.Linux内 ...

  5. Linux内核分析— —构造一个简单的Linux系统MenuOS(20135213林涵锦)

    Linux内核分析— —构造一个简单的Linux系统MenuOS 实验内容 Linux内核的启动过程,从start_kernel到init进程启动 使用实验楼的虚拟机打开shell cd LinuxK ...

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

    构造一个简单的Linux系统MenuOS 一.linux内核源代码简介 三大法宝(存储程序计算机.函数调用堆栈.中断)和两把宝剑(中断上下文的切换:保存现场和恢复现场.进程上下文的切换) 1.在lin ...

  7. 20135202闫佳歆--week3 构造一个简单的Linux系统MenuOs--学习笔记

    此为个人学习笔记存档 week 3 构造一个简单的Linux系统MenuOs 复习: 计算机有三个法宝:存储程序计算机,函数调用堆栈,中断 操作系统有两把剑: 1.中断上下文的切换,保存现场和恢复现场 ...

  8. 《Linux内核分析》第三周学习小结 构造一个简单的Linux系统OS

    郝智宇 无转载 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 第三周 构造一个简单的Linux系统Me ...

  9. Linux内核分析-构造一个简单的Linux系统MenuOS

    构造一个简单的Linux系统MenuOS linux内核目录结构 arch目录包括了所有和体系结构相关的核心代码.它下面的每一个子目录都代表一种Linux支持的体系结构,例如i386就是Intel C ...

  10. 20135220谈愈敏Blog3_构造一个简单的Linux系统MenuOS

    构造一个简单的Linux系统MenuOS 谈愈敏 原创作品转载请注明出处 <Linux内核分析>MOOC课程 http://mooc.study.163.com/course/USTC-1 ...

随机推荐

  1. TrustZone——(一)

    本文内容主要来源于网络,综合了网上的多篇文章,也加入了一些自己的理解,重新组织了文章结构使其便于理解. 主要参考的文章包括: 一篇了解TrustZone TrustZone领域先行者 TrustZon ...

  2. Spring的Bean标签配置(一)

    Bean标签基本配置 由于配置对象交由Spring来创建 默认情况下它调用的的是类中的无参构造函数,如果没有无参构造函数则不会创建成功 id:唯一标识符号,反射是通过无参构造创建对象的. class: ...

  3. 一对多数据的多选筛选([EF,ABP]但是sql思路通用)

    一对多数据的多选筛选([EF,ABP]但是sql思路通用) 标题起的并不是特别准确,但是现在又没有更加准确的描述,暂时这样了 业务需求: 数据格式为一条数据,对应多条二级数据,暂时表示为主信息为&qu ...

  4. 2021-3-29 Enter按下事件

    先在构造器中添加keydown事件 tBoxPsw.KeyDown += TBoxPsw_KeyDown; 在事件中添加按下enter按钮所触发的方法 private void TBoxPsw_Key ...

  5. Burnside 定理

    Burnside 定理 问题: 给定一个 \(n\) 个点,\(n\) 条边的环,有 \(m\) 种颜色,给每个顶点染色,问有多少种本质不同的染色方案,答案对 \(10^9+7\) 取模 注意本题的本 ...

  6. 基于Aidlux平台的人脸关键点检测以及换脸算法

    第一步:安装APP 手机应用市场下载AidLux 手机和电脑连接同一个Wifi 第二步:配置APP 赋予AidLux各种系统权限,包括:媒体和文件.相机.麦克风.后台弹窗 手机-设置-关于手机-点击操 ...

  7. mysql拓展

    事务定义 就是将一组SQL语句放在同一批次内去执行 如果一个sql语句出错,则改批次内的所有sql都将被取消执行 (1)原子性 一个事务要么全部提交成功,要么全部失败回滚,不能只执行其中的一部分操作, ...

  8. SpringBoot3集成Quartz

    目录 一.简介 二.工程搭建 1.工程结构 2.依赖管理 3.数据库 4.配置文件 三.Quartz用法 1.初始化加载 2.新增任务 3.更新任务 4.暂停任务 5.恢复任务 6.执行一次 7.删除 ...

  9. 《Kali渗透基础》13. 无线渗透(三)

    @ 目录 1:无线通信过程 1.1:Open 认证 1.2:PSK 认证 1.3:关联请求 2:加密 2.1:Open 无加密网络 2.2:WEP 加密系统 2.3:WPA 安全系统 2.3.1:WP ...

  10. C#结合OpenCVSharp4图片相似度识别

    OpenCVSharp4图片相似度识别 需求背景:需要计算两个图片的相似度,然后将相似的图片进行归纳 1. 图片相似度算法 由于我是CRUD后端仔,对图像处理没什么概念.因此网上调研了几种相似度算法分 ...