+ -
当前位置:首页 → 问答吧 → Archlinux LiveUSB How-to

Archlinux LiveUSB How-to

时间:2009-02-03

来源:互联网

看到很多xdjms讨论LiveUSB的问题,就把自己的制作方法写下来,希望大家喜欢,多提提建议。

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

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

    引用:
    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。

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  1. 复制整个系统

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

    代码:
    mkdir /mnt/{sda1,sdb1}
    mount /dev/sda1 /mnt/sda1
    mount /dev/sdb1 /mnt/sdb1
    cp --preserv=all -r /mnt/sda1/ /mnt/sdb1/
  2. 生成支持 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
  3. 将 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
  4. 修改 fstab

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

作者: coderoar   发布时间: 2009-02-03

好贴,顶起,现在U盘SD卡便宜了,liveUSB大有用处

作者: axlrose   发布时间: 2009-02-03

如果官方wiki里面没有的话最好也能在那边弄一份。

不错的文章,排版也很工整

作者: jarryson   发布时间: 2009-02-03

就是没有才写的,等完善以后再转过去。

作者: coderoar   发布时间: 2009-02-03

谢谢,解决了我的问题

作者: scoky   发布时间: 2010-01-13