簡單來說就是一個文件傳遞的機制,首先創建/安裝一個硬碟,然後把前硬碟中的一部分文件先轉移到Linux系統上,再通過Linux系統轉移到創建的新硬碟,之後用虛擬機,把新硬碟裝在其中,就可以在新硬碟上做到一些功能了 前知識準備: Linux啟動流程: 1、首先Linux要通過自檢,檢查硬體設備有沒有故障 ...
簡單來說就是一個文件傳遞的機制,首先創建/安裝一個硬碟,然後把前硬碟中的一部分文件先轉移到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就做好了
這樣有一個問題,就是兩個虛擬機無法同時打開
另一個程式已經鎖定文件的一部分
這是因為防止多台虛擬機同時訪問一個磁碟,而在虛擬機文件中添加了一個.lck文件
沒什麼解決方法....,因為刪除.lck文件之後又會重新載入一個:(
--- 本文是對韓順平老師的Linux教程127的整理,看到該視頻也想自己試試