失魂 发表于 2023-10-29 19:41:31

创建一个自己的 Linux系统

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

Linux启动流程:1、首先Linux要通过自检,检查硬件设备有没有故障2、如果有多块启动盘的话,需要在BIOS中选择启动磁盘3、启动MBR(主引导记录)中的bootloader引导程序4、加载内核文件5、执行所有进程的父进程、老祖宗systemd6、欢迎界面在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 可以引导加载多个操作系统,使用户能够在同一台计算机上安装和使用多个操作系统。
https://img2023.cnblogs.com/blog/3254517/202310/3254517-20231029194718290-629856992.png
 (说白了就是这个)
什么是selinux:security enhance Linux,安全增强型Linux,由美国国家安全局(NSA)开发的开源项目,通过在内核层面引入安全策略和标签,限制进程的访问和权限 区分bash和vim:bash是一个命令行解释器,vim是一个文本编辑器,即bash是输入指令和操作系统进行交互,而vim是自己编译代码进行运作1.添加磁盘

https://img2023.cnblogs.com/blog/3254517/202310/3254517-20231026202249599-243778196.png
 注意,这里选择的是将虚拟磁盘存储为单个文件
https://img2023.cnblogs.com/blog/3254517/202310/3254517-20231027180515173-1857184506.png
初始选择的路径是download文件夹,但是download文件夹是应用安装文件夹,不能用来保存文件,于是就换一个文件夹保存就行了
 
2.进行磁盘分区,格式化

使用fdisk /dev/sdb 将dev文件目录下面的sdb进行格式化
https://img2023.cnblogs.com/blog/3254517/202310/3254517-20231026202736501-632385003.png
我们将其第一块扇区划分500M,作为引导boot分区
分区结束后会有此效果
https://img2023.cnblogs.com/blog/3254517/202310/3254517-20231029164153251-136428655.png
 
之后进行文件系统创建mkfs.ext4 /dev/sdb1  mkfs.ext4 /dev/sdb2(注意mkfs和.ext4之间没有空格)
https://img2023.cnblogs.com/blog/3254517/202310/3254517-20231029164639362-125514490.png
 
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字节的内容
https://img2023.cnblogs.com/blog/3254517/202310/3254517-20231029170907049-1221564839.png
 
你也可以用hexdump -d -n 256 /dev/sdb(以十进制显示/dev/sdb前256字节的内容)
https://img2023.cnblogs.com/blog/3254517/202310/3254517-20231029170839940-1622493805.png
 
之后就可以进行复制,把文件复制到相应位置
cp -rf /boot/* /mnt/boot/
https://img2023.cnblogs.com/blog/3254517/202310/3254517-20231029171818449-498418446.png
 出现了这样的情况.... 说明在mnt目录下面有相关的相同文件,一个个yes掉需要很久:(   (创建的时候自带的文件,不是后来加的)
于是可以rm -rf /mnt/boot/*  (一定小心不要写成/boot/*)
再进行cp操作
https://img2023.cnblogs.com/blog/3254517/202310/3254517-20231029172148715-362117380.png
 之后就到了修改grub的部分了
通过cd /mnt/boot(之前把boot cp到其中了)
cd grub2
vim grub.cfg
https://img2023.cnblogs.com/blog/3254517/202310/3254517-20231029173631906-2088045786.png
 就会看到这个界面
在if最后面有该分区的uuid,由于是copy过来的,所以uuid会和我们新创建的不同,我们要把它修改成我们新磁盘的uuid
那么怎么查看uuid(universally unique ID)呢
我们可以用指令lsblk -f
https://img2023.cnblogs.com/blog/3254517/202310/3254517-20231029174004786-1588642340.png
 把本来的改成新创建的就可以了
具体要修改的地方如下
https://img2023.cnblogs.com/blog/3254517/202310/3254517-20231029184814082-1622203481.jpg
 
 在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一些指令
首先创建好目录
https://img2023.cnblogs.com/blog/3254517/202310/3254517-20231029192237824-1042936525.png
 我们以lib64下的指令为例
https://img2023.cnblogs.com/blog/3254517/202310/3254517-20231029192424831-2018742616.png
 这里使用的lib64/*.*是一个通配符,直接copy的xx.xx的文件,如果你想把目录也copy过去,可以考虑使用lib64/*
https://img2023.cnblogs.com/blog/3254517/202310/3254517-20231029192913384-793327222.png
同时别忘了copy /bin/bash 不然在前面的init=/bin/bash就起不到效果,进都进不去
 
创建一个新的虚拟机

移除自带的硬盘,同时加上之前添加的新硬盘
https://img2023.cnblogs.com/blog/3254517/202310/3254517-20231029194113601-481967807.png
 
现有磁盘文件地址可以在你的大Linux上找到sdb的地址
https://img2023.cnblogs.com/blog/3254517/202310/3254517-20231029194248015-1150521395.png
 保存,启动这样一个有你自己需求的Linux就做好了
 
这样有一个问题,就是两个虚拟机无法同时打开
https://img2023.cnblogs.com/blog/3254517/202310/3254517-20231029195559547-145298934.png
另一个程序已经锁定文件的一部分
 这是因为防止多台虚拟机同时访问一个磁盘,而在虚拟机文件中添加了一个.lck文件
没什么解决方法....,因为删除.lck文件之后又会重新加载一个:(
 
  --- 本文是对韩顺平老师的Linux教程127的整理,看到该视频也想自己试试
 
 

来源:https://www.cnblogs.com/dxcff123/p/17790975.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 创建一个自己的 Linux系统