在 USB 介质中安装 Arch Linux

前言

我大概需要一个可以随身带的开箱即用环境,因此想了想,可以在 U 盘中安装 LInux 配置好环境就好。

需要注意

关于如何安装

  • 如果你本来的主机上用的就是 Arch Linux,可以采用下面的方法:
    1. 使用 rsync 打包法把现有系统直接拉到 USB 介质中,写完后修改一些必要的设置即可直接使用(但这个方法主要是可能受到设备的限制,或者说你需要更多的定制的话,这个方法不是很适用,这里不讲述这个方法)
    2. arch-install-scripts 安装法,即可以在现有的 Linux 环境中运行 pacstrap, arch-chroot 的安装方法。
  • 如果本机运行的不是 Arch Linux,这里还是有两种方法:
    1. 把 archiso 在本 Linux 系统中挂载,拖出 arch-install-scripts 出来。但是会有一点麻烦。
    2. 使用 VirtualBox 进入 archiso 环境,在 archiso 环境中把 Arch Linux 安装到 USB 介质中。

分区

  1. 首先,把分区表改成 GPT 分区表。软件推荐使用 GParted

  2. 开始把 USB 介质分区,分出一个 100MB 的 ESP 分区。(一个标识有 esp 的 FAT32 分区)

    PS: 如果你需要一个装载数据的分区,请务必把你的装载数据的分区放到第一分区,因为 Windows 在识别 U 盘的时候总是只识别第一分区。

    PS: 如果需要兼容 BIOS 启动,请创建一个大小为 2MB,分区格式为 RAW 的分区,并标识为 bios-grub

  3. 格式化,请把你的系统分区使用不带日志式的 EXT4 格式化,具体为:

    # mkfs.ext4 -O "^has_journal" /dev/sdXX

    其中

    /dev/sdXX

    为你的 USB 介质系统分区的设备分配名。

安装

安装过程可以参考 ArchWiki ,但有几点需要注意。

  • genfstab

    一般安装 Arch Linux 时生成 Fstab 是这样生成的:

    # genfstab -U /mnt > /mnt/etc/fstab

    其中 /mnt 是你安装 Arch Linux 时 USB 介质的挂载点。

    这里要注意的是,如果把 Arch Linux 安装到 USB 介质是这样写 Fstab 的话,很有可能在别的机子上不能够启动。

    如何解决呢?很简单,打开你的 /mnt/etc/fstab ,你会看到如下的内容:

    #
    # /etc/fstab: static file system information
    #
    # <file system> <dir> <type>  <options> <dump>  <pass>
    # UUID=10dd530a-4646-44bc-bab2-3ef43901e8e2
      /dev/sdc2           /           ext4        rw,relatime,block_validity,delalloc,barrier,user_xattr    ,acl  0 1
    
    # UUID=205A-F74F
    /dev/sdc1             /boot       vfat        rw,relatime,f    mask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=m    ixed,errors=remount-ro  0 2
    

    把像 /dev/sdc2,dev/sdc1 这样的部分改成对应分区的 UUID 就好。比如这样:

    #
    # /etc/fstab: static file system information
    #
    # <file system> <dir> <type>  <options> <dump>  <pass>
    # UUID=10dd530a-4646-44bc-bab2-3ef43901e8e2
      UUID=10dd530a-4646-44bc-bab2-3ef43901e8e2           /           ext4        rw,relatime,block_validity,delalloc,barrier,user_xattr    ,acl  0 1
    
    # UUID=205A-F74F
      UUID=205A-F74F              /boot       vfat        rw,relatime,f    mask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=m    ixed,errors=remount-ro  0 2
    

    保存即可。

  • mkinitcpio

    平时安装 Arch 的时候直接 mkinitcpio -p linux 就好,但是在 USB 介质上安装有那么一点点不一样。如果直接执行这个命令可能会导致后面写入启动的时候没有配置选项。

    打开 /etc/mkinitcpio 后,找到HOOKS ,把原来的语句覆盖成这样:


    HOOKS="base udev block autodetect modconf block filesystems keyboard fsck"
    

    再执行 mkinitcpio -p linux 即可。

  • 写入引导

    这里的话,有两种启动推荐的启动方式:

    1. 使用 Systemd-boot:

      你只需要在 arch-chroot 后输入下面命令即可

      # pacman -S efibootmgr
      # bootctl --path=$esp install
      # 其中 $esp 是你的 USB 介质的 ESP 分区,千万别写错了。
      
    2. 使用 Grub:

      如果需要使用 Grub,则应该在 Arch-chroot 下输入下面的命令:


      # pacman -S efibootmgr grub
      # grub-install --target=x86_64-efi --efi-directory=$esp --bootloader-id=grub --removable --recheck
      # grub-mkconfig -o $esp/grub/grub.cfg
      
    3. PS:如果你需要在 BIOS 下启动,则需要在 MBR 扇区下安装 grub:

      # pacman -S grub
      # grub-install --target=i386-pc --recheck --debug --boot-directory=/mnt/usb/boot /dev/sdy
      # 其中 /dev/sdy 是系统给 U 盘分配的设备号
      # grub-mkconfig -o /boot/grub/grub.cfg
      
  • 安装显卡驱动

    因为是开箱即用的关系。驱动尽量通用比较好,所以应该尽量去安装开源的驱动,避免闭源的驱动


    # pacman -S xf86-video-vesa mesa xf86-video-ati xf86-video-intel xf86-video-nouveau
    

EOF.

发布于 2017-03-23

文章被以下专栏收录