USB Installation Media (简体中文)
| 概要 |
|---|
| 多平台下创建可引导USB记忆棒的说明,它可用于安装Arch Linux、系统维护或者恢复。 |
| 相关 |
| CD Burning |
本文探讨将 Arch 安装映像写入到USB驱动器(也被称为“闪存驱动器”,“USB记忆棒",“U盘”等)上来引导BIOS系统的各种方法。它有点像是一个 LiveCD 系统(如果你可以称它为"LiveUSB"),因为SquashFS的性质,关机后所有的更改都会丢失。
如果你想把在USB驱动器中完整安装一份Arch Linux(即,使更改具有持久性),参见在U盘中安装Arch Linux。
Contents |
Gnu/Linux系统上
直接覆盖整个 USB 驱动器
# dd bs=4M if=/path/to/archlinux.iso of=/dev/sdx && sync
怎样恢复你的 USB 驱动器
ISO 镜像是多功能镜像,既可以烧到光盘也能直接写入 USB,所以它不包含一个标准的分区表。
安装 Arch Linux 后,就不需要 USB 安装盘了。你需要往U盘的前 512 字节写零(表示主引导记录中的引导代码和非标准的分区表)来恢复它完整的容量。
# dd count=1 bs=512 if=/dev/zero of=/dev/sdx && sync
然后用 gparted 创建一个新的分区表(如"msdos")和文件系统(如 EXT4,FAT32),或者在终端中:
- 对于 EXT2/3/4 (相应地调整),命令是:
- cfdisk /dev/sdx
- mkfs.ext4 /dev/sdx1
- e2label /dev/sdx1 USB_STICK
- 对于 FAT32,安装 dosfstools 软件包并运行:
- cfdisk /dev/sdx
- mkfs.vfat -F32 /dev/sdx1
- dosfslabel /dev/sdx1 USB_STICK
不覆盖原有 USB 驱动器
该方法比直接用 dd 写入镜像稍微复杂,但优点是不破坏 U 盘的数据存储功能。在开始之前,请确保您的 USB 设备已经格式化为了 FAT32,EXT 2/3/4 或者 Btrfs 分区格式。为便于 UEFI 引导并/或使用其他操作系统, 您需要使用 FAT32。此外,您必须保证已经安装了 syslinux 软件包(版本 4.04 或者更高)。
1. 将 "arch" 文件夹从 ISO 复制到 USB 驱动器。对于 UEFI 主板,按这里的指示。
2. 把 Syslinux 启动程序安装到 USB 驱动器中,把启动代码安装到主引导记录中,并设置第一分区为可启动:
$ cd /path/to/folder/arch/boot/syslinux #其中 path/to/folder 是USB驱动器的挂载点。 # extlinux --install . #正确输入你看到的命令,包括那个点(.)。 # dd bs=440 conv=notrunc count=1 if=/usr/lib/syslinux/mbr.bin of=/dev/sdx # parted /dev/sdx toggle 1 boot
3. 调整启动配置文件:
这里给出您如何同时替换 2 份配置文件中 archisolabel=ARCH_2013XX 的部分,使用等价的写法 archisodevice=/dev/disk/by-uuid/47FA-4071 ,只要使用一行命令:
$ sed -i "s|label=ARCH_.*|device=/dev/disk/by-uuid/$(blkid -o value -s UUID /dev/sdx1)|" archiso_sys{32,64}.cfg
如果你所使用的发行版中 "syslinux" 软件包的版本低于 4.06,对于 FAT32 文件系统(对于 EXT4 没这个必要)的变通方法,syslinux.cfg 中 APPEND 一行应作替换:
$ sed -i "s|../../|/arch|" syslinux.cfg
使用 UNetbootin
可以在任何 Linux 发行版或者 Windows 中用 UNetbootin 把你的 ISO 复制到 USB 设备中,但是 Unetbootin 会覆盖 syslinux.cfg,创建的 USB 设备不能正常引导。由于这个原因,不推荐使用 Unetbootin -- 请使用 dd 或者这里列出的其它方法。
编辑 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 键改变它。
Mac OS X 系统
做一些特定操作后才能在 Mac 下使用 dd 写入 USB 设备。先插入 USB 设备,OS X 会自动挂载它,然后在终端程序中运行:
$ diskutil list
用 mount 或者 sudo dmesg | tail(例如 /dev/disk1)来找出 USB 设备的名称,卸载设备上的分区(即,/dev/disk1s1)同时保留设备本身(即,/dev/disk1):
$ diskutil unmountDisk /dev/disk1
Now we can continue in accordance with the instructions above (but use if you are using the OS X dd, the number comes from 1024*8).
现在我们可以依照上面写的 Linux 发行版的方法来继续操作(但在 OS X 调用 dd 的时候使用bs=8192,这个数字来自于 1024*8)。
dd if=image.iso of=/dev/disk1 bs=8192
20480+0 records in 20480+0 records out 167772160 bytes transferred in 220.016918 secs (762542 bytes/sec)
此时,在物理拔出U盘前,弹出您的USB驱动器可能是个好主意。
$ diskutil eject /dev/disk1
Windows 系统
Win32 DIsk Imager
首先从这里下载程序。然后解压并运行可执行程序。在 Image FIle 部分中选择 Arch Linux ISO,在 Device 部分中选择 U 盘的盘符。准备就绪后点击 Write。
USBWriter for Windows
从 http://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 提供的驱动句柄写入数据。
Cygwin 方式
请确认您安装了Cygwin的 dd 包。
将您的镜像文件放在您的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-2013-XX-xx-dual.iso of=\\.\x: bs=4m
用正常的日期和盘符来替换上面的空缺(以 "x" 来表示)
下面是一个实例:
dd if=ISOs\archlinux-2013.08.01-dual.iso of=\\.\d: bs=4M
在内存中加载安装介质
This method uses Syslinux and a Ramdisk (MEMDISK) to load the entire Arch Linux ISO image into RAM. Since this will be running entirely from system memory, you will need to make sure the system you will be installing this on has an adequate amount. A minimum amount of RAM between 500 MB and 1 GB should suffice for a MEMDISK based, Arch Linux install.
这个方法使用 Syslinux (简体中文) 和一个 Ramdisk (MEMDISK) 来把整个 Arch Linux ISO 镜像加载到内存中。因为它将完全运行于系统内存中,您要确保使用这种方法安装的系统有足够的内存。至少 500MB 到 1G 内存就足以在 MEMDISK 上安装 Arch Linux。
准备 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:
/Boot/Settings/syslinux.cfg
DEFAULT arch_iso
LABEL arch_iso
MENU LABEL Arch Setup
LINUX memdisk
INITRD /Boot/ISOs/archlinux-2013.08.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:
Universal USB Installer
Windows 下的工具 [1] 可以快速创建包含多个 Linux 发行版安装程序的 Live USB 介质。创建后可以添加或删除安装程序,而不必重新格式化 USB。