Difference between revisions of "USB flash installation media (简体中文)"

From ArchWiki
Jump to navigation Jump to search
(update links to Syslinux wiki)
 
(97 intermediate revisions by 14 users not shown)
Line 1: Line 1:
[[Category:简体中文]]
+
[[Category:Installation process (简体中文)]]
[[Category:Getting and installing Arch (简体中文)]]
+
[[ar:USB flash installation media]]
{{i18n|USB Installation Media}}
+
[[bg:USB flash installation media]]
 +
[[de:Installation von einem USB-Stick]]
 +
[[en:USB flash installation media]]
 +
[[es:USB flash installation media]]
 +
[[fr:Créer une clef USB avec l'ISO Arch Linux]]
 +
[[it:USB flash installation media]]
 +
[[ja:USB インストールメディア]]
 +
[[pt:USB flash installation media]]
 +
[[ru:USB flash installation media]]
 +
[[zh-hant:USB flash installation media]]
 +
{{Related articles start (简体中文)}}
 +
{{Related|CD Burning}}
 +
{{Related|Archiso}}
 +
{{Related|Multiboot USB drive}}
 +
{{Related articles end}}
 +
{{TranslationStatus (简体中文)|USB_Flash_Installation_Media|2017-02-17|467029}}
  
本文探讨如何将 Arch 安装映像放置到U盘(闪存驱动设备)上。它有点象是一个 LiveCD 系统,关机后所有的更改都会丢失。也许您真正感兴趣的是[[Installing Arch Linux on a USB key| 安装Arch Linux到U盘]]
+
USB 驱动器,也被称为闪存驱动器、USB记忆棒、U盘等。可以从 ISO 制作 Arch LiveUSB 系统,从 UEFI 或 BIOS 系统上直接启动 Arch Linux 安装环境。因为[[Wikipedia:SquashFS|SquashFS]]的只读性质,关机后所有的更改都会丢失。这样的系统可用于 Arch Linux 安装、系统维护或者系统恢复。
  
== Gnu/Linux系统上 ==
+
要在 U 盘上运行完整的 Arch Linux(即能保留设置),请阅读[[Installing Arch Linux on a USB key (简体中文)|在U盘中安装Arch Linux]]。如果想将 Arch Linux LiveUSB 当作救援 USB 来用,参见[[Change root (简体中文)|Change Root]]
  
=== Arch USB 映像 ===
+
== BIOS 和 UEFI 可启动 USB ==
  
从2010.05版开始,所有iso文件可以直接写入到usb媒体中。从您附近的[http://archlinux.org/download/ 镜像站点]下载这些文件。安装时,先确认USB设备已插上但并'''未被挂载''',然后执行下列命令:
+
=== dd ===
 +
{{注意|推荐该方法是因为它简单。如果没有效果,请使用下面介绍的方法 [[#手动方法]]。}}
  
$ dd if=archlinux.iso of=/dev/sd[x]
+
{{警告|这种方法会删除 {{ic|/dev/sd'''x'''}} 上的所有数据且不可逆。要在使用 Arch ISO 之后释放空间,还原 USB 为原始状态,需要以 root 权限执行{{ic|wipefs --all /dev/'''sdx'''}}  命令删除 iso9660 文件系统标记,然后再 [[repartition|重新分区]] 和 [[reformat|重新格式化]] USB。}}
  
其中''archlinux.iso''指向你的iso文件,''/dev/sd[x]''是 USB 设备
+
==== GNU/Linux ====
  
{{Note|添加 bs=4M 可以提高 dd 的速度。}}
+
{{小贴士|用 {{ic|lsblk}} 找到U盘并确保'''没有'''挂载}}
  
{{警告|这会永久性的删除 /dev/sdx 上的所有数据。}}
+
用U盘替换 {{ic|/dev/'''sdx'''}},如 {{ic|/dev/sdb}}。('''不要'''加上数字,也就是说,'''不要'''键入 {{ic|/dev/sdb'''1'''}} 之类的东西)
  
{{警告|因为需要重写usb媒体里面的引导信息,所以,需要请确定您输入的是 /dev/sdx而不是/dev/sdx1。'''如果输入的是/dev/sdx1将导致引导路径错误'''}}
+
  # dd bs=4M if=/path/to/archlinux.iso of=/dev/'''sdx''' status=progress && sync
  
brain0在他的博客上有一篇很棒的文章[http://archlinux.me/brain0/2010/05/29/arch-linux-usb-install-and-resuce-media/ Arch Linux USB 安装和急救],其中讲述了如何让 windows 一定程度上访问到多分区的U盘。
+
请等待 sync 完成,所有数据都写入之后再拔掉 U 盘。
  
=== UNetBootin ===
+
==== Windows ====
还有一种制作USB启动盘的方法,就是用 UNetBootin。这个软件可以下载很多种 Linux 发行版并写入到您的设备中。您也可以提供您自己的镜像,而不必指定专用的USB镜像。
 
  
UNetBootin 可能无法加载并显示如下错误
+
===== Rufus =====
**
+
[https://rufus.akeo.ie/?locale=zh_CN/ Rufus] is a multi-purpose USB iso writer. Simply select the Arch Linux ISO, the USB drive you want to create the bootable Arch Linux onto and click start.
GLib-GIO:ERROR:gdbusconnection.c:2270:initable_init: assertion failed: (connection->initialization_error == NULL)
 
  
请试着以普通用户执行如下命令:
+
Since Rufus does not care if the drive is properly formatted or not and provides a GUI it may be the easiest and most robust tool to use.
  
# su -c "dbus-launch --exit-with-session unetbootin"
+
===== USBwriter =====
  
如果使用 UNetbootin 549 之前的版本,在完成后重启前,需要调整闪存根目录的 syslinux.cfg。将 "archisolabel=" 修改为 USB 驱动实际使用的名称:
+
这种方法和 {{ic|dd}} 一样简单,只要下载 Arch Linux 安装镜像并用 [http://sourceforge.net/p/usbwriter/wiki/Documentation/ USBwriter] 写入U盘即可。
  
append initrd=/ubninit archisolabel=<label> tmpfs_size=75% locale=en_US.UTF-8
+
===== Using win32diskimager =====
 +
 +
[https://sourceforge.net/projects/win32diskimager/ win32diskimager] is another graphical USB iso writing tool for Windows. Simply select your iso image and the target USB drive letter (you may have to format it first to assign it a drive letter), and click Write.  
  
=== Gujin ===
+
===== Cygwin =====
第三个方法是按照[http://psychoticspoon.blogspot.com/2009/01/booting-multiple-livecds-from-single.html 从单个USB设备多引导 LiveCD] 中介绍的方法。建立两个分区,把 [http://gujin.sourceforge.net/ Gujin] 启动管理器复制到第一个分区 把 Arch 的 ISOLINUX 镜像复制到第二个分区。
 
  
== Mac OS X系统上 ==
+
请确认您安装了[http://www.cygwin.com/ Cygwin]的 {{ic|dd}} 包。
  
做一些特定操作后才能在 Mac 下使用 dd 写入 USB 设备。先插入 USB 设备,OS X 会自动挂载它,然后在终端程序中运行:
+
{{小贴士|如果您不想安装 Cygwin,您可以直接从 [http://www.chrysocome.net/dd 这里]下载 {{ic|dd}} for Windows。查看下一节以获得更多信息。}}
  
diskutil list
+
将您的镜像文件放在您的home目录中:
  
Terminal.app. 中找到USB设备命名,我的是/dev/disk1。(使用 `mount` `sudo dmesg | tail`) 然后运行:
+
C:\cygwin\home\John\
 +
 
 +
以管理员身份运行cygwin(cygwin必须访问硬件)。用下列命令写入到您的USB设备:
 +
 
 +
dd if=image.iso of=\\.\[x]: bs=4M
 +
 
 +
其中 image.iso 要输入 {{ic|cygwin}} 目录内的 iso 镜像文件名,而 {{ic|\\.\['''x''']}}: 里面的 '''x''' 是 Windows为您的USB设备指定的盘符,例如 {{ic|\\.\d:}}。
 +
 
 +
Cygwin 6.0 版本中可以这样找到正确的分区:
 +
 
 +
cat /proc/partitions
 +
 
 +
然后根据输出信息写入ISO映像,例如:
 +
 
 +
{{警告|这个操作会不可恢复的删除您 USB 设备上的所有文件,所以执行这个操作前请先确定您的 USB 设备中没有任何重要的数据。}}
 +
 
 +
dd if=image.iso of=/dev/sdb bs=4M
 +
 
 +
===== dd for Windows =====
 +
 
 +
{{注意|某些用户在使用这种方法时碰到了"isolinux.bin missing or corrupt"的问题。}}
 +
 
 +
http://www.chrysocome.net/dd 上有基于 GPL 协议的 dd for Windows。相比于 Cygwin,它的优势在于下载量小。使用方法已经在上面的 Cygwin 部分中说明了。
 +
 
 +
首先下载最新版本的 dd for Windows,并把内容解压到 Downloads 目录或者别的什么地方。
 +
 +
现在以管理员身份运行 {{ic|命令提示符}}。然后切换目录({{ic|cd}})到 Downloads 目录。
 +
 
 +
如果你的 Arch Linux ISO 在别的地方,你可能需要列出完整路径。方便起见,你可能会把它放在 dd 程序的同一目录中。命令的基本格式像这样:
 +
 
 +
# dd if=''archlinux-2015-XX-YY-dual.iso'' od=\\.\''x'': bs=4M
 +
 
 +
{{Note|The Windows drive letters are linked to a partition. To allow selecting the entire disk, ''dd for Windows'' provides the {{ic|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''.}}
 +
 
 +
{{警告|这条命令会把驱动器的格式和内容按照 ISO 中的来填充。误操作后很可能无法恢复其原先的内容,在执行命令以前要确保你dd 中使用的是正确的驱动器!}}
 +
 
 +
用正常的日期和盘符来替换上面的空缺(以 "x" 来表示)
 +
 
 +
下面是一个实例:
 +
 
 +
# dd if=ISOs\archlinux-2015.01.01-dual.iso od=\\.\d: bs=4M
 +
 
 +
==== macOS ====
 +
 
 +
做一些特定操作后才能在 Mac 下使用 {{ic|dd}} 写入 USB 设备。先插入 USB 设备,OS X 会自动挂载它,然后在终端程序中运行:
 +
 
 +
先确认设备,打开 {{ic|/Applications/Utilities/Terminal}} 然后通过下面命令查看所有设备:
 +
 
 +
$ diskutil list
 +
 
 +
USB 设备应该显示类似 {{ic|/dev/disk2 (external, physical)}}. 通过名称和大小确认设备名,在后面的命令中替换 /dev/diskX。
 +
 +
设备会被自动挂载,在使用 dd 前需要先卸载设备上的分区:
 +
 
 +
$ diskutil unmountDisk /dev/disk2
 +
 
 +
接着我们可以依照上面介绍的方法继续操作,磁盘名使用 {{ic|rdisk}}, OS X 上比较快。
 +
 
 +
$ sudo dd if=path/to/arch.iso of=/dev/'''r'''diskX bs=1m
 +
 
 +
此时,在物理拔出U盘前,弹出您的USB驱动器可能是个好主意。
 +
 
 +
完成后,Mac OS 可能抱怨 "The disk you inserted was not readable by this computer". 选择忽略。启动盘就做好了。
 +
 
 +
===手动方法===
 +
 
 +
==== GNU/Linux ====
 +
 
 +
这种方法比 {{ic|dd}} 复杂,但能够保持U盘可用(ISO 被装在[[Partitioning|分了区的设备]]的某个分区里而无需改变其他分区)。
 +
 
 +
{{注意|接下来会用 {{ic|/dev/sd'''Xn'''}} 指代目标分区,请根据自身的情况调整 '''X''' 和 '''n'''。}}
 +
 
 +
* 确保已经安装了最新版的 ''syslinux''(6.02或更新)。
 +
 
 +
* 如果还未准备好,在继续前创建好分区表和分区。{{ic|/dev/sd'''Xn'''}} 必须格式化为 FAT32。
 +
 
 +
* 挂载 ISO 镜像。挂载U盘上的 FAT32 分区,把 ISO 镜像内的文件都复制进去。卸载 ISO 镜像,但不要卸载 FAT32 分区。接着执行:
 +
# mkdir -p /mnt/{iso,usb}
 +
# mount -o loop archlinux-2016.04.01-dual.iso /mnt/iso
 +
# mount /dev/sd'''Xn''' /mnt/usb
 +
# cp -a /mnt/iso/* /mnt/usb
 +
# sync
 +
# umount /mnt/iso
 +
 
 +
* 卷标,或者 UUID 是成功引导必不可少的。默认识别的卷标是 {{ic|ARCH_2017'''XX'''}}(XX 和镜像发布月份有关)。因此,FAT32 分区的卷标须设成一样的(可以用''gparted'')。 要修改识别的卷标,可以编辑 ''/mnt/usb/arch/boot/syslinux/archiso_sys32.cfg''、''archiso_sys64.cfg''和''/mnt/usb/loader/entries/archiso-x86_64.conf''中的  {{ic|1=archisolabel=ARCH_2017'''XX'''}}(最后一个文件仅对 EFI 系统生效)。32位的 ISO 需要类似修改。要让安装镜像识别 UUID 而不是卷标,将这些地方改为 {{ic|1=archiso''device''=/dev/disk/by-uuid/'''YOUR-UUID'''}}。UUID 可通过 {{ic|1=blkid -o value -s UUID /dev/sd'''Xn'''}} 查看。
 +
 
 +
{{警告|错误的卷标或 UUID 会导致启动失败。}}
 +
 
 +
* ''/mnt/usb/arch/boot/syslinux'' 里已经安装 syslinux。请按照 [[Syslinux#Manual install]]进行重装。
 +
** 用新 syslinux 的模块({{ic|*.c32}} 文件)覆盖原有 syslinux 的模块,以免因版本差异导致启动失败。
 +
# cp /usr/lib/syslinux/bios/*.c32 /mnt/usb/arch/boot/syslinux
 +
** 运行:
 +
# extlinux --install /mnt/usb/arch/boot/syslinux
 +
** 卸载分区({{ic|umount /mnt/usb}})并将 MBR GPT 分区表安装到U盘。
 +
 
 +
* 将该分区标记为活跃(或“启动”)。
 +
 
 +
==== Windows ====
 +
 
 +
{{注意|
 +
* 不要使用'''可启动 USB 创建工具'''制作UEFI 启动 USB。不要用''dd for Windows''将 ISO 镜像写入U盘。
 +
 
 +
* 以下命令假设U盘盘符为 '''X:'''。
 +
 
 +
* Windows 使用反斜杠作为路径分隔符,以下命令也是。
 +
 
 +
* 所有命令都应该在'''以管理员身份运行'''的命令提示符内执行。
 +
 
 +
* {{ic|>}} 表示 Windows 命令提示符。
 +
}}
 +
 
 +
* 分区和格式化工具用 [http://rufus.akeo.ie/ 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盘 {{ic|X:}} '''卷标''',与 {{ic|<ISO>\loader\entries\archiso-x86_64.conf}} 中的 {{ic|1=archisolabel=}} 保持一致。如果是 [[Archboot]] 则不需要修改。卷标可在上一步使用 Rufus 进行分区和格式化时修改。
 +
 
 +
* 解压 ISO 文件至U盘(像解压 ZIP 文件一样,软件可用[http://7-zip.org/ 7-Zip])。
 +
 
 +
* 从 https://www.kernel.org/pub/linux/utils/boot/syslinux/ 下载官方 syslinux 6.xx (ZIP文件)并解压。Syslinux 的版本应与 ISO 镜像所使用的版本一致。
 +
 
 +
* 运行以下命令(在命令提示符内,以管理员身份运行):
 +
 
 +
{{注意|Archboot iso 用 {{ic|X:\boot\syslinux\}}}}
  
  diskutil unmountDisk /dev/disk1
+
  > cd bios\
 +
> for /r %Y in (*.c32) do copy "%Y" "X:\arch\boot\syslinux\" /y
 +
> copy mbr\*.bin X:\arch\boot\syslinux\ /y
  
卸载 USB 设备上的分区(及 /dev/disk1s1) 但保持设备本身(即 /dev/disk1)。 现在我们可以依照上面写道的Linux发行版的方法(但在 OS X 中使用 dd 的时候加参数 bs=8192)。
+
* 通过以下命令将 Syslinux 安装到U盘(64位系统则用 {{ic|win64\syslinux64.exe}}):
  
  dd if=image.iso of=/dev/disk1 bs=8192
+
{{注意|Archboot iso 用 {{ic|-d /boot/syslinux}}。}}
  20480+0 records in
 
  20480+0 records out
 
  167772160 bytes transferred in 220.016918 secs (762542 bytes/sec)
 
  
== Windows 系统上==
+
> cd bios\
 +
> win32\syslinux.exe -d /arch/boot/syslinux -i -a -m X:
  
从 Windows 写入镜像,可以使用 [http://launchpad.net/win32-image-writer Image Writer for Windows], [http://www.linuxliveusb.com/ Linux Live USB Creator], [http://www.pendrivelinux.com/universal-usb-installer-easy-as-1-2-3/ Universal USB Installer], [http://shounen.ru/soft/flashnul/ flashnul] ([http://translate.google.com/translate?u=http%3A%2F%2Fshounen.ru%2Fsoft%2Fflashnul%2F&hl=en&ie=UTF8&sl=ru&tl=en English version of the page]), [http://www.cygwin.com/ Cygwin] 或者[http://unetbootin.sourceforge.net/ UNetBootin]。
+
{{注意|
 +
* 上述步骤将安装 Syslinux {{ic|ldlinux.sys}} 至U盘分区 VBR,在 MBR 分区表中将该分区设置为活跃/启动,并将 MBR 引导代码写入U盘前 440字节引导代码区中。
  
=== UnetBootin ===
+
* {{ic|-d}}开关需要斜杠作为路径分隔符。
Windows 系统下也可以使用此软件,简单直接。参见上面 Linux 部分。
+
}}
  
=== Image Writer Windows ===
+
== BIOS 系统的其他方法 ==
Image Writer 是唯一可以像 dd 一样将镜像原封不动写入 U 盘点 Windows 本地镜像写入工具(除了 Cygwin)。其它工具都是先解压然后将文件写入 FAT 文件系统。
 
  
从 http://launchpad.net/win32-image-writer 下载程序并运行。选择 arch 镜像文件和 U 盘。Win32 Disk Imager 的文件浏览器默认使用 .img 后缀,如果下载的镜像是 .iso 后缀,需要手动输入名称,有点不爽但是写入都很正常。点击写入按钮,然后就能够从 U 盘启动了。
+
{{Translateme (简体中文)|请完成更新后的翻译。}}
  
=== Flashnul 方式===
+
=== GNU/Linux===
从命令提示符下,调用 flashnul –p 命令确定 USB 设备的盘符。例如,在我的电脑上输出如下:
 
  
  C:\>flashnul -p
+
==== Using GNOME Disk Utility ====
+
 
 +
Linux distributions running GNOME can easily make a live CD through {{Pkg|nautilus}} and {{Pkg|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.
 +
 
 +
{{Warning|This will destroy all information on your USB flash drive!}}
 +
 
 +
* Download {{Pkg|syslinux}} and {{Pkg|mtools}} from the official repositories.
 +
* Find your usb drive with {{ic|lsblk}}.
 +
* Type {{ic|mkdiskimage -4 /dev/sd'''x''' 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/sd'''x'''4 due to the way ZIP drives work.
 +
 +
{{Note|Do not format the drive as FAT32 keep it as FAT16.}}
 +
 
 +
==== UNetbootin ====
 +
 
 +
可以在任何 Linux 发行版或者 Windows 中用 UNetbootin 把你的 ISO 复制到 USB 设备中,但是 Unetbootin 会覆盖 syslinux.cfg,创建的 USB 设备不能正常引导。由于这个原因,'''不推荐使用 Unetbootin''' -- 请使用 {{ic|dd}} 或者这里列出的其它方法。
 +
{{警告|UNetbootin 覆盖了默认的 {{ic|syslinux.cfg}};在USB设备正常引导前需要还原它。}}
 +
 
 +
编辑 {{ic|syslinux.cfg}}:
 +
 
 +
{{hc|sysconfig.cfg|2=
 +
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/sd'''x1''' ../../
 +
 
 +
label ubnentry0
 +
menu label Archlinux_i686
 +
kernel /arch/boot/i686/vmlinuz
 +
append initrd=/arch/boot/i686/archiso.img archisodevice=/dev/sd'''x1''' ../../
 +
}}
 +
 
 +
你必须用你安装 Arch Linux 的位置,即首个系统未使用的字母来替换 {{ic|/dev/sd'''x1'''}} 中的 '''x'''(例如,如果你有两个硬盘,使用 {{ic|c}}。)。你也可以在启动的第一阶段显示菜单的时候按 {{ic|Tab}} 键改变它。
 +
=== Windows ===
 +
 
 +
==== Win32 Disk Imager ====
 +
 
 +
{{警告|这些操作会销毁 U 盘中的所有信息!}}
 +
首先从[http://sourceforge.net/projects/win32diskimager/ 这里]下载程序。然后解压并运行可执行程序。在 {{ic|Image FIle}} 部分中选择 Arch Linux ISO,在 {{ic|Device}} 部分中选择 U 盘的盘符。准备就绪后点击 {{ic|Write}}。
 +
{{注意|安装后你可能需要以[[USB_Installation_Media#How_to_restore_the_USB_drive|这里]]{{Broken section link}}列出的流程恢复 U 盘。}}
 +
 
 +
==== USBWriter for Windows ====
 +
 
 +
从 http://sourceforge.net/projects/usbwriter/ 下载程序并运行。选择 arch 镜像文件和目标U盘,然后点击 {{ic|write}} 按钮。现在你应该能够从 U 盘启动安装 Arch Linux。
 +
 
 +
==== Flashnul ====
 +
 
 +
[http://shounen.ru/soft/flashnul/ flashnul] 是一个用来检测和维护闪存(USB-Flash,IDE-Flash,SecureDigital,MMC,MemoryStick,SmartMedia,XD,CompactFlash 等)的工具。
 +
 
 +
从命令提示符下,使用 {{ic|–p}} 参数调用 flashnul  命令来确定 USB 设备的盘符,例如:
 +
 
 +
{{hc|C:\>flashnul -p|
 
  Avaible physical drives:
 
  Avaible physical drives:
 
  Avaible logical disks:
 
  Avaible logical disks:
Line 80: Line 275:
 
  D:\
 
  D:\
 
  E:\
 
  E:\
 +
}}
 +
 +
在本例中,USB 设备的盘符是 E:
 +
 +
当您确定正确的设备后,您可以将镜像写入到您的设备中,通过调用flashnul命令,后面输入您的设备序号,再输入 {{ic|-L}} 及镜像的完整路径,例如:
 +
 +
C:\>flashnul '''E:''' -L ''path\to\arch.iso''
 +
 +
在您真的确定要写入这些数据时,输入yes,然后等它写入完成。如果您见到拒绝访问的错误提示,关闭所有打开的资源管理器的窗口。
 +
 +
如果是在 Vista 或者 Win7 下,您需要以管理员的身份打开控制台,否则flashnul不能以块设备的方式访问 U 盘,而只能通过 Windows 提供的驱动句柄写入数据。
 +
 +
{{注意|请确认您使用的是盘符而不是数字。flashnul 1rc1, Windows 7 x64.}}
 +
 +
==== 在内存加载安装介质 ====
  
在本例中,USB 设备的盘符是 E。
+
{{Merge|Multiboot USB drive#Using Syslinux and memdisk|除了 Syslinux 是从 Windows 上安装的,其他都一样。考虑到 [[multiboot USB drive|多启动U盘]]也能引导安装介质,而且也已经在相关文章添加了链接,或许这两小节可以合并在一起?}}
  
当您确定正确的设备后,您可以将镜像写入到您的设备中,调用flashnul命令,后面输入您的设备序号,再输入-L及镜像的完整路径。在我的例子中,命令如下
+
这个方法使用 [[Syslinux (简体中文)]] 和一个 [[Ramdisk]] ([https://wiki.syslinux.org/wiki/index.php/MEMDISK MEMDISK]) 来把整个 Arch Linux ISO 镜像加载到内存中。因为它将完全运行于系统内存中,您要确保使用这种方法安装的系统有足够的内存。至少 500MB 到 1G 内存就足以在 MEMDISK 上安装 Arch Linux。
 +
Arch Linux 和 MEMDISK 系统要求参见[[Installation guide (简体中文)|安装指南]]和[http://www.etherboot.org/wiki/bootingmemdisk#preliminaries 这里]{{失效链接|2014|09|14}}。[https://bbs.archlinux.org/viewtopic.php?id=135266 论坛参考贴]。
 +
{{小贴士| 一旦安装程序加载完毕,您就可以移除 U 盘,甚至再在另一台机器上用它开始执行整个安装步骤。使用 MEMDISK 还允许你在同一个 U 盘中引导并安装 Arch Linux 到它上面。}}
  
C:\>flashnul E: -L path\to\arch.iso
+
===== 准备 U 盘 =====
  
在你真的确定要写入这些数据时,输入yes,然后等它写入完成。如果您见到拒绝访问的错误提示,关闭文件浏览器并继续。
+
首先格式化 U 盘分区为 ‘’‘FAT32''' 文件系统。然后在格式化后的磁盘中创建以下目录:
  
如果是在 Vista 或者 Win7 下,你需要用管理员的身份打开控制台,否则flashnul访问设备会受到阻碍,拒绝打开;并只能通过 Windows 提供的设备写入。
+
* {{ic|Boot}}
 +
** {{ic|Boot/ISOs}}
 +
** {{ic|Boot/Settings}}
  
<b>Note:</b>
+
===== 复制需要的文件到 U 盘 =====
<i>Confirmed that you need to use drive letter as opposed to number. flashnul 1rc1, Windows 7 x64. -bgalakazam</i>
 
  
=== Cygwin方式 ===
+
然后,把要引导的 ISO 复制到 {{ic|Boot/ISOs}} 目录。接着,从[http://www.kernel.org/pub/linux/utils/boot/syslinux/ 这里] 最新版的 {{pkg|syslinux}} 中提取以下文件并复制到下列目录:
  
请确认您的cygwin包含dd包。
+
* {{ic|./win32/syslinux.exe}} 到桌面或者系统中的 Downloads 目录。
或者如果您不想安装cygwin,您可以在http://www.chrysocome.net/dd 上下载Windows用的dd。
+
* {{ic|./memdisk/memdisk}} 到 U 盘中的 {{ic|Settings} 目录。
  
将您的镜像文件放在您的home目录中,在我的例子中是:
+
===== 创建配置文件 =====
  
  C:\cygwin\home\John\
+
复制完所需文件后,在 U 盘的 /Boot/Settings 目录中创建文件 {{ic|syslinux.cfg}}:
 +
 
 +
{{警告|{{ic|INITRD}} 一行中,一定要用复制到 {{ic|ISOs}} 目录中的 ISO 文件名!}}
 +
 
 +
{{hc|/Boot/Settings/syslinux.cfg|2=
 +
  DEFAULT arch_iso
 +
 +
LABEL arch_iso
 +
        MENU LABEL Arch Setup
 +
        LINUX memdisk
 +
        INITRD /Boot/ISOs/archlinux-2015.01.01-dual.iso
 +
        APPEND iso}}
 +
 
 +
更多关于 Syslinux 的信息,参见 [[Syslinux|Arch Wiki 文章]]。
  
以管理员身份运行cygwin(cygwin必须访问硬件)。用下列命令写入到您的USB设备:
+
===== 最后的步骤 =====
  
dd if=image.iso of=\\.\[x]:
+
最后,在 {{ic|syslinux.exe}} 所在目录创建一个 {{ic|*.bat}} 文件并运行(如果是在 Vista 或者 Windows 7 下,需要“以管理员身份运行”):
  
其中image.iso要输入cypwin目录内的iso镜像文件名,而\\.\[x]:里面的x是Windows为您USB设备指定的盘符。在我的例子里是“\\.\d:”。
+
{{hc|C:\Documents and Settings\username\Desktop\install.bat|
 +
@echo off
 +
syslinux.exe -m -a -d /Boot/Settings X:}}
  
在cygwin 6.0版本上可以这样查看正确的分区
+
== 故障排除 ==
  
cat /proc/partitions
+
* 对于 [[#在内存加载安装介质|MEMDISK 方法]],如果你尝试引导 i686 版本的系统时碰到了著名的 ''30 seconds error'',那么在 {{ic|Boot Arch Linux (i686)}} 条目上按 {{ic|Tab}} 键,然后在末尾添加 {{ic|vmalloc&#61;448M}}。参考: ''如果你的映像大于 128MiB 且你使用的是32位操作系统,你必须增加最大内存使用参数vmalloc''。[https://wiki.syslinux.org/wiki/index.php/MEMDISK#-_memdiskfind_in_combination_with_phram_and_mtdblock (*)]
  
然后根据输出信息写入ISO映像,如:
+
* 如果你碰到因 {{ic|/dev/disk/by-label/ARCH_XXXXXX}} 未挂载而导致的 ''30 seconds error'',可尝试重命名你的 USB 媒介为 {{ic|ARCH_XXXXXX}}(例如 {{ic|ARCH_201501}})。
  
dd if=image.iso of=/dev/sdb
+
== 参见 ==
  
{{警告|这个操作会不可恢复的删除您USB设备上的所有数据,所以做这个操作前请先确定您的USB设备中没有任何重要的数据。}}
+
* [https://wiki.gentoo.org/wiki/LiveUSB/HOWTO Gentoo wiki - LiveUSB/HOWTO]
 +
* [https://fedoraproject.org/wiki/How_to_create_and_use_Live_USB Fedora wiki - How to create and use Live USB]
 +
* [http://en.opensuse.org/SDB:Live_USB_stick openSUSE wiki - SDB:Live USB stick]

Latest revision as of 08:42, 17 March 2019

翻译状态: 本文是英文页面 USB_Flash_Installation_Media翻译,最后翻译时间:2017-02-17,点击这里可以查看翻译后英文页面的改动。

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 is a multi-purpose USB iso writer. Simply select the Arch Linux ISO, the USB drive you want to create the bootable Arch Linux onto and click start.

Since Rufus does not care if the drive is properly formatted or not and provides a GUI it may be the easiest and most robust tool to use.

USBwriter

这种方法和 dd 一样简单,只要下载 Arch Linux 安装镜像并用 USBwriter 写入U盘即可。

Using win32diskimager

win32diskimager is another graphical USB iso writing tool for Windows. Simply select your iso image and the target USB drive letter (you may have to format it first to assign it a drive letter), and click Write.

Cygwin

请确认您安装了Cygwindd 包。

提示: 如果您不想安装 Cygwin,您可以直接从 这里下载 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映像,例如:

警告: 这个操作会不可恢复的删除您 USB 设备上的所有文件,所以执行这个操作前请先确定您的 USB 设备中没有任何重要的数据。
dd if=image.iso of=/dev/sdb bs=4M
dd for Windows
注意: 某些用户在使用这种方法时碰到了"isolinux.bin missing or corrupt"的问题。

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
Note: The Windows drive letters are linked to a partition. To allow selecting the entire disk, dd for Windows provides the 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.
警告: 这条命令会把驱动器的格式和内容按照 ISO 中的来填充。误操作后很可能无法恢复其原先的内容,在执行命令以前要确保你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 指代目标分区,请根据自身的情况调整 Xn
  • 确保已经安装了最新版的 syslinux(6.02或更新)。
  • 如果还未准备好,在继续前创建好分区表和分区。/dev/sdXn 必须格式化为 FAT32。
  • 挂载 ISO 镜像。挂载U盘上的 FAT32 分区,把 ISO 镜像内的文件都复制进去。卸载 ISO 镜像,但不要卸载 FAT32 分区。接着执行:
# mkdir -p /mnt/{iso,usb}
# mount -o loop archlinux-2016.04.01-dual.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.cfgarchiso_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 查看。
警告: 错误的卷标或 UUID 会导致启动失败。
  • /mnt/usb/arch/boot/syslinux 里已经安装 syslinux。请按照 Syslinux#Manual install进行重装。
    • 用新 syslinux 的模块(*.c32 文件)覆盖原有 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)。
  • 运行以下命令(在命令提示符内,以管理员身份运行):
注意: Archboot 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):
注意: Archboot iso 用 -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 系统的其他方法

Tango-preferences-desktop-locale.png本页面需要更新翻译,内容可能已经与英文脱节。要贡献翻译,请访问简体中文翻译组Tango-preferences-desktop-locale.png

附注: 请完成更新后的翻译。

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.

Warning: This will destroy all information on your USB flash 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.

Note: Do not format the drive as FAT32 keep it as FAT16.

UNetbootin

可以在任何 Linux 发行版或者 Windows 中用 UNetbootin 把你的 ISO 复制到 USB 设备中,但是 Unetbootin 会覆盖 syslinux.cfg,创建的 USB 设备不能正常引导。由于这个原因,不推荐使用 Unetbootin -- 请使用 dd 或者这里列出的其它方法。

警告: UNetbootin 覆盖了默认的 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

警告: 这些操作会销毁 U 盘中的所有信息!

首先从这里下载程序。然后解压并运行可执行程序。在 Image FIle 部分中选择 Arch Linux ISO,在 Device 部分中选择 U 盘的盘符。准备就绪后点击 Write

注意: 安装后你可能需要以这里[broken link: invalid section]列出的流程恢复 U 盘。

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 提供的驱动句柄写入数据。

注意: 请确认您使用的是盘符而不是数字。flashnul 1rc1, Windows 7 x64.

在内存加载安装介质

Merge-arrows-2.pngThis article or section is a candidate for merging with Multiboot USB drive#Using Syslinux and memdisk.Merge-arrows-2.png

Notes: 除了 Syslinux 是从 Windows 上安装的,其他都一样。考虑到 多启动U盘也能引导安装介质,而且也已经在相关文章添加了链接,或许这两小节可以合并在一起? (Discuss in Talk:USB flash installation media (简体中文)#)

这个方法使用 Syslinux (简体中文) 和一个 Ramdisk (MEMDISK) 来把整个 Arch Linux ISO 镜像加载到内存中。因为它将完全运行于系统内存中,您要确保使用这种方法安装的系统有足够的内存。至少 500MB 到 1G 内存就足以在 MEMDISK 上安装 Arch Linux。 Arch Linux 和 MEMDISK 系统要求参见安装指南这里[失效链接 2014-09-14]论坛参考贴

提示: 一旦安装程序加载完毕,您就可以移除 U 盘,甚至再在另一台机器上用它开始执行整个安装步骤。使用 MEMDISK 还允许你在同一个 U 盘中引导并安装 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

警告: 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)。

参见