USB 驅動器,也被稱為快閃記憶體驅動器、USB記憶棒、U盤等。可以從 ISO 製作 Arch LiveUSB 系統,從 UEFI 或 BIOS 系統上直接啟動 Arch Linux 安裝環境。因為SquashFS的只讀性質,關機後所有的更改都會丟失。這樣的系統可用於 Arch Linux 安裝、系統維護或者系統恢復。
要在 U 盤上運行完整的 Arch Linux(即能保留設置),請閱讀在U盤中安裝Arch Linux。如果想將 Arch Linux LiveUSB 當作救援 USB 來用,參見Change Root
BIOS 和 UEFI 可啟動 USB
dd
/dev/sdx
上的所有數據且不可逆。要在使用 Arch ISO 之後釋放空間,還原 USB 為原始狀態,需要以 root 權限執行wipefs --all /dev/sdx
命令刪除 iso9660 文件系統標記,然後再 重新分區 和 重新格式化 USB。GNU/Linux
lsblk
找到U盤並確保沒有掛載用U盤替換 /dev/sdx
,如 /dev/sdb
。(不要加上數字,也就是說,不要鍵入 /dev/sdb1
之類的東西)
# dd bs=4M if=/path/to/archlinux.iso of=/dev/sdx status=progress && sync
請等待 sync 完成,所有數據都寫入之後再拔掉 U 盤。
Windows
Rufus
Rufus 是一款多用途的 USB iso 寫入工具。只要簡單地選擇 Arch Linux ISO、要創建可啟動 Arch Linux 的 USB 驅動器,然後點擊「start」。
由於 Rufus 不關心驅動器是否正確格式化並提供GUI,因此這可能是最簡單最強大的工具。
USBwriter
這種方法和 dd
一樣簡單,只要下載 Arch Linux 安裝鏡像並用 USBwriter 寫入U盤即可。
使用 win32diskimager
win32diskimager 是另一個用於 Windows 的圖形化 USB iso 寫入工具。只需選擇 iso 映像和目標 USB 驅動器號(可能需要先格式化 USB 驅動器後才能分配驅動器號),然後點擊「Write」。
Cygwin
請確認您安裝了Cygwin的 dd
包。
dd
for Windows。查看下一節以獲得更多信息。將您的鏡像文件放在您的 home 目錄中:
C:\cygwin\home\John\
以管理員身份運行 cygwin(cygwin 必須訪問硬體)。用下列命令寫入到您的USB設備:
dd if=image.iso of=\\.\[x]: bs=4M
其中 image.iso 要輸入 cygwin
目錄內的 iso 鏡像文件名,而 \\.\[x]
: 裡面的 x 是Windows為您的USB設備指定的盤符,例如 \\.\d:
。
Cygwin 6.0 版本中可以這樣找到正確的分區:
cat /proc/partitions
然後根據輸出信息寫入ISO映像,例如:
dd if=image.iso of=/dev/sdb bs=4M
dd for Windows
http://www.chrysocome.net/dd 上有基於 GPL 協議的 dd for Windows。相比於 Cygwin,它的優勢在於下載量小。使用方法已經在上面的 Cygwin 部分中說明了。
首先下載最新版本的 dd for Windows,並把內容解壓到 Downloads 目錄或者別的什麼地方。
保
現在以管理員身份運行 命令提示符
。然後切換目錄(cd
)到 Downloads 目錄。
如果你的 Arch Linux ISO 在別的地方,你可能需要列出完整路徑。方便起見,你可能會把它放在 dd 程序的同一目錄中。命令的基本格式像這樣:
# dd if=archlinux-2015-XX-YY-dual.iso od=\\.\x: bs=4M
od
parameter, which is used in the commands above. Note however that this parameter is specific to dd for Windows and cannot be found in other implementations of dd.用正常的日期和盤符來替換上面的空缺(以 "x" 來表示)
下面是一個實例:
# dd if=ISOs\archlinux-2015.01.01-dual.iso od=\\.\d: bs=4M
macOS
做一些特定操作後才能在 Mac 下使用 dd
寫入 USB 設備。先插入 USB 設備,OS X 會自動掛載它,然後在終端程序中運行:
先確認設備,打開 /Applications/Utilities/Terminal
然後通過下面命令查看所有設備:
$ diskutil list
USB 設備應該顯示類似 /dev/disk2 (external, physical)
. 通過名稱和大小確認設備名,在後面的命令中替換 /dev/diskX。
設備會被自動掛載,在使用 dd 前需要先卸載設備上的分區:
$ diskutil unmountDisk /dev/disk2
接著我們可以依照上面介紹的方法繼續操作,磁碟名使用 rdisk
, 在 OS X 上比較快。
$ sudo dd if=path/to/arch.iso of=/dev/rdiskX bs=1m
此時,在物理拔出U盤前,彈出您的USB驅動器可能是個好主意。
完成後,Mac OS 可能抱怨 "The disk you inserted was not readable by this computer". 選擇忽略。啟動盤就做好了。
手動方法
GNU/Linux
這種方法比 dd
複雜,但能夠保持U盤可用(ISO 被裝在分了區的設備的某個分區裡而無需改變其他分區)。
/dev/sdXn
指代目標分區,請根據自身的情況調整 X 和 n。- 確保已經安裝了最新版的 syslinux(6.02或更新)。
- 如果還未準備好,在繼續前創建好分區表和分區。
/dev/sdXn
必須格式化為 FAT32。
- 掛載 ISO 鏡像。掛載U盤上的 FAT32 分區,把 ISO 鏡像內的文件都複製進去。卸載 ISO 鏡像,但不要卸載 FAT32 分區。接著執行:
# mkdir -p /mnt/{iso,usb} # mount -o loop archlinux-version-x86_64.iso /mnt/iso # mount /dev/sdXn /mnt/usb # cp -a /mnt/iso/. /mnt/usb # sync # umount /mnt/iso
- 卷標,或者 UUID 是成功引導必不可少的。默認識別的卷標是
ARCH_2017XX
(XX 和鏡像發布月份有關)。因此,FAT32 分區的卷標須設成一樣的(可以用gparted)。 要修改識別的卷標,可以編輯 /mnt/usb/arch/boot/syslinux/archiso_sys32.cfg、archiso_sys64.cfg和/mnt/usb/loader/entries/archiso-x86_64.conf中的archisolabel=ARCH_2017XX
(最後一個文件僅對 EFI 系統生效)。32位的 ISO 需要類似修改。要讓安裝鏡像識別 UUID 而不是卷標,將這些地方改為archisodevice=/dev/disk/by-uuid/YOUR-UUID
。UUID 可通過blkid -o value -s UUID /dev/sdXn
查看。
-
/mnt/usb/arch/boot/syslinux 裡已經安裝 syslinux。請按照 Syslinux#Manual install進行重裝。
- 用新 syslinux 的模塊(
*.c32
文件)覆蓋原有 syslinux 的模塊,以免因版本差異導致啟動失敗。
- 用新 syslinux 的模塊(
# cp /usr/lib/syslinux/bios/*.c32 /mnt/usb/arch/boot/syslinux
- 運行:
# extlinux --install /mnt/usb/arch/boot/syslinux
- 卸載分區(
umount /mnt/usb
)並將 MBR 或 GPT 分區表安裝到U盤。
- 卸載分區(
- 將該分區標記為活躍(或「啟動」)。
Windows
- 不要使用可啟動 USB 創建工具製作UEFI 啟動 USB。不要用dd for Windows將 ISO 鏡像寫入U盤。
- 以下命令假設U盤盤符為 X:。
- Windows 使用反斜槓作為路徑分隔符,以下命令也是。
- 所有命令都應該在以管理員身份運行的命令提示符內執行。
-
>
表示 Windows 命令提示符。
- 分區和格式化工具用 Rufus USB partitioner。partition scheme 選 MBR for BIOS and UEFI,文件系統選FAT32,反選「Create a bootable disk using ISO image」和「Create extended label and icon files」
- 如果用的是官方 ISO 鏡像(Archiso),修改U盤
X:
卷標,與<ISO>\loader\entries\archiso-x86_64.conf
中的archisolabel=
保持一致。如果是 Archboot 則不需要修改。卷標可在上一步使用 Rufus 進行分區和格式化時修改。
- 解壓 ISO 文件至U盤(像解壓 ZIP 文件一樣,軟體可用7-Zip)。
- 從 https://www.kernel.org/pub/linux/utils/boot/syslinux/ 下載官方 syslinux 6.xx (ZIP文件)並解壓。Syslinux 的版本應與 ISO 鏡像所使用的版本一致。
- 運行以下命令(在命令提示符內,以管理員身份運行):
X:\boot\syslinux\
。> cd bios\ > for /r %Y in (*.c32) do copy "%Y" "X:\arch\boot\syslinux\" /y > copy mbr\*.bin X:\arch\boot\syslinux\ /y
- 通過以下命令將 Syslinux 安裝到U盤(64位系統則用
win64\syslinux64.exe
):
-d /boot/syslinux
。> cd bios\ > win32\syslinux.exe -d /arch/boot/syslinux -i -a -m X:
- 上述步驟將安裝 Syslinux
ldlinux.sys
至U盤分區 VBR,在 MBR 分區表中將該分區設置為活躍/啟動,並將 MBR 引導代碼寫入U盤前 440位元組引導代碼區中。
-
-d
開關需要斜槓作為路徑分隔符。
BIOS 系統的其他方法
GNU/Linux
Using GNOME Disk Utility
Linux distributions running GNOME can easily make a live CD through nautilus包 and gnome-disk-utility包. Simply right-click on the .iso file, and select "Open With Disk Image Writer." When GNOME Disk Utility opens, specify the flash drive from the "Destination" drop-down menu and click "Start Restoring."
Making an USB-ZIP drive
For some old BIOS systems, only booting from USB-ZIP drives is supported. This method allows you to still boot from a USB-HDD drive.
- Download syslinux包 and mtools包 from the official repositories.
- Find your usb drive with
lsblk
. - Type
mkdiskimage -4 /dev/sdx 0 64 32
(replace x with the letter of your drive). This will take a while.
From here continue with the manual formatting method. The partition will be /dev/sdx4 due to the way ZIP drives work.
UNetbootin
可以在任何 Linux 發行版或者 Windows 中用 UNetbootin 把你的 ISO 複製到 USB 設備中,但是 Unetbootin 會覆蓋 syslinux.cfg,創建的 USB 設備不能正常引導。由於這個原因,不推薦使用 Unetbootin -- 請使用 dd
或者這裡列出的其它方法。
syslinux.cfg
;在USB設備正常引導前需要還原它。編輯 syslinux.cfg
:
sysconfig.cfg
default menu.c32 prompt 0 menu title Archlinux Installer timeout 100 label unetbootindefault menu label Archlinux_x86_64 kernel /arch/boot/x86_64/vmlinuz append initrd=/arch/boot/x86_64/archiso.img archisodevice=/dev/sdx1 ../../ label ubnentry0 menu label Archlinux_i686 kernel /arch/boot/i686/vmlinuz append initrd=/arch/boot/i686/archiso.img archisodevice=/dev/sdx1 ../../
你必須用你安裝 Arch Linux 的位置,即首個系統未使用的字母來替換 /dev/sdx1
中的 x(例如,如果你有兩個硬碟,使用 c
。)。你也可以在啟動的第一階段顯示菜單的時候按 Tab
鍵改變它。
Windows
Win32 Disk Imager
首先從這裡下載程序。然後解壓並運行可執行程序。在 Image FIle
部分中選擇 Arch Linux ISO,在 Device
部分中選擇 U 盤的盤符。準備就緒後點擊 Write
。
USBWriter for Windows
從 https://sourceforge.net/projects/usbwriter/ 下載程序並運行。選擇 arch 鏡像文件和目標U盤,然後點擊 write
按鈕。現在你應該能夠從 U 盤啟動安裝 Arch Linux。
Flashnul
flashnul 是一個用來檢測和維護快閃記憶體(USB-Flash,IDE-Flash,SecureDigital,MMC,MemoryStick,SmartMedia,XD,CompactFlash 等)的工具。
從命令提示符下,使用 –p
參數調用 flashnul 命令來確定 USB 設備的盤符,例如:
C:\>flashnul -p
Avaible physical drives: Avaible logical disks: C:\ D:\ E:\
在本例中,USB 設備的盤符是 E:
當您確定正確的設備後,您可以將鏡像寫入到您的設備中,通過調用flashnul命令,後面輸入您的設備序號,再輸入 -L
及鏡像的完整路徑,例如:
C:\>flashnul E: -L path\to\arch.iso
在您真的確定要寫入這些數據時,輸入yes,然後等它寫入完成。如果您見到拒絕訪問的錯誤提示,關閉所有打開的資源管理器的窗口。
如果是在 Vista 或者 Win7 下,您需要以管理員的身份打開控制台,否則flashnul不能以塊設備的方式訪問 U 盤,而只能通過 Windows 提供的驅動句柄寫入數據。
在內存加載安裝介質
這個方法使用 Syslinux 和一個 Ramdisk (MEMDISK) 來把整個 Arch Linux ISO 鏡像加載到內存中。因為它將完全運行於系統內存中,您要確保使用這種方法安裝的系統有足夠的內存。至少 500MB 到 1G 內存就足以在 MEMDISK 上安裝 Arch Linux。 Arch Linux 和 MEMDISK 系統要求參見安裝指南和這裡。論壇參考貼。
準備 U 盤
首先格式化 U 盤分區為 『』『FAT32 文件系統。然後在格式化後的磁碟中創建以下目錄:
-
Boot
Boot/ISOs
Boot/Settings
複製需要的文件到 U 盤
然後,把要引導的 ISO 複製到 Boot/ISOs
目錄。接著,從這裡 最新版的 syslinux包 中提取以下文件並複製到下列目錄:
-
./win32/syslinux.exe
到桌面或者系統中的 Downloads 目錄。 -
./memdisk/memdisk
到 U 盤中的 {{ic|Settings} 目錄。
創建配置文件
複製完所需文件後,在 U 盤的 /Boot/Settings 目錄中創建文件 syslinux.cfg
:
INITRD
一行中,一定要用複製到 ISOs
目錄中的 ISO 文件名!/Boot/Settings/syslinux.cfg
DEFAULT arch_iso LABEL arch_iso MENU LABEL Arch Setup LINUX memdisk INITRD /Boot/ISOs/archlinux-2015.01.01-dual.iso APPEND iso
更多關於 Syslinux 的信息,參見 Arch Wiki 文章。
最後的步驟
最後,在 syslinux.exe
所在目錄創建一個 *.bat
文件並運行(如果是在 Vista 或者 Windows 7 下,需要「以管理員身份運行」):
C:\Documents and Settings\username\Desktop\install.bat
@echo off syslinux.exe -m -a -d /Boot/Settings X:
故障排除
- 對於 MEMDISK 方法,如果你嘗試引導 i686 版本的系統時碰到了著名的 30 seconds error,那麼在
Boot Arch Linux (i686)
條目上按Tab
鍵,然後在末尾添加vmalloc=448M
。參考: 如果你的映像大於 128MiB 且你使用的是32位作業系統,你必須增加最大內存使用參數vmalloc。(*)
- 如果你碰到因
/dev/disk/by-label/ARCH_XXXXXX
未掛載而導致的 30 seconds error,可嘗試重命名你的 USB 媒介為ARCH_XXXXXX
(例如ARCH_201501
)。