在Windows下,我們經常使用軟碟通來制作各種系統的啟動盤,那么在MacOS下,如何做到呢?MacOS跟Linux的做法基本一致。如果你只想快速地制作好啟動盤,請看下面的快速版
首先,你需要以下兩樣東西:
- linux系統鏡像
- 足夠大的U盤
制作啟動盤需要先確定U盤的設備名,建議先給U盤起個名字,然后查找U盤的設備路徑。如下為/dev/disk5:
diskutil list
# /dev/disk5
# blabla... U盤名字
寫入前,先卸載U盤
diskutil unmountDisk /dev/disk5
在制作之前,先介紹一個工具---dd。dd的基本用法如下:
# 將file1復制到file2中
dd if=file1 of=file2
if和of后面既可以是文件也可以是某個設備,dd是一種底層磁盤工具,非常適合制作啟動盤,同時它也可以做一些有趣的事情,比如:
# 備份磁盤到文件
dd if=/dev/sda of=image.iso
# 從文件恢復到磁盤
dd if=image.iso of=/dev/sda
# 銷毀某個設備的數據
dd if=/dev/urandom of=/dev/sda
# 修復磁盤的一些IO錯誤
dd if=/dev/sda of=/dev/sda
你肯定對第三條命令感到好奇,這是怎么做到的?其實linux定義了幾種特殊的設備文件,/dev/urandom可以產生無窮無盡的隨機值(不一定是通常意義的數字),所以這條命令的意思是向/dev/sda中寫入隨機值,某些時候會需要用到它。下面是linux的幾種特殊的設備文件:
- /dev/null
這個設備文件就是一個無底洞,你可以向他寫入任意大小的數據,但是寫進去的數據全部都漏掉了,所以從他那里讀數據只能讀到EOF。 - /dev/zero
/dev/zero會給你無窮無盡的0,注意這里是ascii的\0,不是數字0。 - /dev/random
從真隨機數產生器獲得隨機數,速度相對緩慢。 - /dev/urandom
從偽隨機數產生器獲取隨機數,速度快。 - /dev/full
向這個設備寫入時,會得到一個磁盤已滿的錯誤。
下面我們正式制作啟動盤
sudo dd if=1575868135818_ubuntu18.04-3.18.iso of=/dev/disk5 bs=1m
# 復制結束后,dd命令會打印出有多少輸入塊,有多少輸出塊,速度如何
# 出現以下提示表示成功
# 1934+1 records in
# 1934+1 records out
# 2028060672 bytes transferred in 641.515462 secs (3161359 bytes/sec)
完成后,就可以拿來裝系統了。
插曲
在我美美地安裝好ubuntu之后,發生了一個小插曲。我的PC是SSD+1T機械盤的組合,通常我都把系統裝到SSD,用戶數據放機械盤,所以我慣常的做法是把/home放到機械盤,但是我安裝系統的時候忘了這事。那怎么手動把/home掛載到其他磁盤分區呢?
# 掛載目標分區(假設你需要掛載到 /dev/sdb1)
sudo mkdir /mnt/tmp
sudo mount /dev/sdb1 /mnt/tmp
# 復制數據(此時的 /mnt/tmp 就是 /dev/sdb1)
sudo rsync -avx /home/ /mnt/tmp
# 刪除舊的/home
rm -rf /home/*
# 必要的話,卸載原來的/home(這里一般都不需要,除非你的/home本來就是另放在某個磁盤分區的)
umount -l /home
# 掛載新的/home
sudo mount /dev/sdb1 /home
# 查 /dev/sdb1 的UUID和TYPE
sudo blkid
sudo vim /etc/fstab
# 在文件里添加以下內容
UUID=175ab25f-5190-4df7-8795-8a00a0f78fd6 /home ext4 defaults 0 2
# 驗證下,ok
df -h
看到這里,也許你會有兩個疑問:
1、這里復制的時候用了rsync命令。為何不用cp和上文提到的dd呢?以下是我的理解:
-
dd
dd是一種非常底層的復制命令,一般用於拷貝整個磁盤到鏡像,或者從鏡像寫入到磁盤。dd命令通常比較危險,也被稱為disk destroyer。 -
cp
這是一種常用的命令,一般我們復制一些小的文件和文件夾都是使用它 -
rsync
rsync是高級的復制命令,更多地用於遠程同步。如果你要復制大文件,用rsync比cp好。dd命令也很適合拷貝大文件,但是如果你要備份你的/目錄,rsync比dd更合適,因為rsync可以更靈活地控制哪些文件可以需要復制,哪些可以被忽略。
2、/etc/fstab是什么?
在linux里,一切都是文件,設備可以是文件,配置也可以是文件,你想修改系統配置,一般都是修改相應的文件,/etc/fstab就是linux系統的一個配置文件,主要用來配置各種設備如何掛載到系統,你在這里定義好掛載方式,系統啟動的時候就會自動幫你掛載好。
快速版
# 建議先給你的U盤起個名,然后找到你U盤的設備名,如 /dev/disk5
diskutil list
# /dev/disk5 (internal, physical):
# #: TYPE NAME SIZE IDENTIFIER
# 0: GUID_partition_scheme *121.3 GB disk0
# 1: EFI EFI 209.7 MB disk0s1
# 2: Apple_APFS U盤名字 121.1 GB disk0s2
# 卸載設備
diskutil unmountDisk /dev/disk5
# 寫入鏡像
sudo dd if=1575868135818_ubuntu18.04-3.18.iso of=/dev/disk5 bs=1m
# 出現以下提示表示成功
# 1934+1 records in
# 1934+1 records out
# 2028060672 bytes transferred in 641.515462 secs (3161359 bytes/sec)
# 成功!此時如果系統報錯,識別不了U盤,不用管,快去裝你的linux吧!
