MacOS下製做linux啓動盤

在Windows下,咱們常常使用軟碟通來製做各類系統的啓動盤,那麼在MacOS下,如何作到呢?MacOS跟Linux的作法基本一致。若是你只想快速地製做好啓動盤,請看下面的快速版php

首先,你須要如下兩樣東西:html

  1. linux系統鏡像
  2. 足夠大的U盤

製做啓動盤須要先肯定U盤的設備名,建議先給U盤起個名字,而後查找U盤的設備路徑。以下爲/dev/disk5:linux

diskutil list
# /dev/disk5
# blabla... U盤名字

寫入前,先卸載U盤ubuntu

diskutil unmountDisk /dev/disk5

在製做以前,先介紹一個工具---dd。dd的基本用法以下:vim

# 將file1複製到file2中
dd if=file1 of=file2

ifof後面既能夠是文件也能夠是某個設備,dd是一種底層磁盤工具,很是適合製做啓動盤,同時它也能夠作一些有趣的事情,好比:dom

# 備份磁盤到文件
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
    向這個設備寫入時,會獲得一個磁盤已滿的錯誤。

下面咱們正式製做啓動盤code

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)

完成後,就能夠拿來裝系統了。htm

插曲

在我美美地安裝好ubuntu以後,發生了一個小插曲。個人PC是SSD+1T機械盤的組合,一般我都把系統裝到SSD,用戶數據放機械盤,因此我慣常的作法是把/home放到機械盤,可是我安裝系統的時候忘了這事。那怎麼手動把/home掛載到其餘磁盤分區呢?ci

# 掛載目標分區(假設你須要掛載到 /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

看到這裏,也許你會有兩個疑問:

一、這裏複製的時候用了rsync命令。爲什麼不用cp和上文提到的dd呢?如下是個人理解:

  • dd
    dd是一種很是底層的複製命令,通常用於拷貝整個磁盤到鏡像,或者從鏡像寫入到磁盤。dd命令一般比較危險,也被稱爲disk destroyer。

  • cp
    這是一種經常使用的命令,通常咱們複製一些小的文件和文件夾都是使用它

  • rsync
    rsync是高級的複製命令,更多地用於遠程同步。若是你要複製大文件,用rsync比cp好。dd命令也很適合拷貝大文件,可是若是你要備份你的/目錄,rsync比dd更合適,由於rsync能夠更靈活地控制哪些文件能夠須要複製,哪些能夠被忽略。

二、/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吧!

Reference

Debian Linux手冊

ArchWiki Rsync

ArchWiki Fstab

相關文章
相關標籤/搜索