簡單來說就是一個檔案傳遞的機制,首先建立/安裝一個硬碟,然後把前硬碟中的一部分檔案先轉移到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就做好了
這樣有一個問題,就是兩個虛擬機器無法同時開啟
另一個程式已經鎖定檔案的一部分
這是因為防止多臺虛擬機器同時訪問一個磁碟,而在虛擬機器檔案中新增了一個.lck檔案
沒什麼解決方法....,因為刪除.lck檔案之後又會重新載入一個:(
--- 本文是對韓順平老師的Linux教程127的整理,看到該影片也想自己試試