Building a Live USB (简体中文)

From ArchWiki

Jump to: navigation, search


i18n

Contents

前言

本文假设将安装在硬盘第一分区的Archlinux迁移到U盘的第一分区,并且整个系统都包含在根分区,请按照实际情况操作。

本文建议使用 UUID 来表示分区路径。

(这和装一个Archlinux到USB硬盘上是一样的,在某种意义上不能称做Live系统,只是现有系统的一个克隆,建议改个题目。这样的系统可以作为你现有电脑上系统的一个备份或启动盘。能不能在其它电脑上使用图形界面取决于你的配置,比如说你可以安装很多显卡驱动,而且使用X.org7.2以上的版本时,可以使用内建的配置文件,就能很容易在各种主流的显卡上实现图形界面。)

UUID 简明 FAQ

为什么要使用UUID来表示分区?

许多接触 linux 比较早的 linuxers 可能还记得,以前的硬盘路径都表示为 /dev/hdX,而现在一般为 /dev/sdX,但总有人会遇到特殊情况。而到了移动硬盘上,这个问题变得更加复杂。

为了从 hdX 和 sdX 的痛苦中解脱出来,请使用 UUID。而且,UUID 不仅仅可以表示分区,还涵盖了LVM和其它一些设备。

一个分区的 UUID 路径是怎样表示的?

形如 “/dev/disk/by-uuid/b72a313a-e6f0-44e5-a96b-b95a812bf0a5”,后面的数字为此分区的 UUID。

怎样获得一个设备的 UUID 路径?

1. 如果你知道这个设备的普通路径,如 /dev/sda1,使用命令 “vol_id -u /dev/sda1”,将获得其UUID,在UUID的前面加上 “/dev/disk/by-uuid/”就得到了这个设备的UUID路径。

2. 如果你不知道这个设备的普通路径,使用命令“ls -l /dev/disk/by-uuid/”将列出所有磁盘设备文件对应的UUID。

复制整个系统

启动到要迁移的 Archlinux 之外的任一系统,执行以下命令。

mkdir /mnt/{sda1,sdb1} mount /dev/sda1 /mnt/sda1 mount /dev/sdb1 /mnt/sdb1 cp --preserv=all -r /mnt/sda1/ /mnt/sdb1/

生成支持 USB 存储设备的内核

编辑 /mnt/sdb1/etc/mkinitcpio.conf,在类似以下行

HOOKS="base udev autodetect pata scsi sata filesystems usbinput keymap"

中加入 “usb”。如果要使用 LVM,加入 “lvm2”。

执行以下命令。

chroot /mnt/sdb1/ mkinitcpio -p kernel26

将 GRUB 安装到 USB 存储设备

确保 /mnt/sdb1/boot/grub 中包含所需的启动文件,如果没有,可以从 /mnt/sdb1/usr/lib/grub/i386-pc/ 复制一份。

编辑 /mnt/sdb1/boot/grub/menu.lst,修改 Archlinux 的启动条目。将 “root (hd0,0)” 修改为 “root (hd1,0)”。在内核参数中加入 “rootdelay=X”(X的单位是秒,实测最小值为8),并将 “root=” 后的设备路径修改为 /dev/sda1 的 UUID 路径。

注意: 在 Debian/Ubuntu 类发行版中,有一种形如 “root=UUID=b72a313a-e6f0-44e5-a96b-b95a812bf0a5”(其后数字为UUID)来表示根分区的方法,仅限于此类发行版专用。

执行以下命令。

grub

进入 GRUB 命令行后,执行以下命令。

root (hd1,0)
setup (hd1)
quit

修改 fstab

编辑 /mnt/sdb1/etc/fstab,将其中的路径替换为相应的U盘分区的 UUID 路径。
Personal tools