在VirtualBox上以EFI方式安装ArchLinux

Tue 23 February 2016 / In categories Server Stack

Archlinux, VirtualBox

ArchLinux是一个轻量简洁的发行版,很多软件包都是原汁原味的,没有被深度定制过,而且可以滚动升级,比较适合用来做Linux开发。

这篇记载了如何在VirtualBox以EFI方式安装ArchLinux。至于为什么要以EFI方式安装,纯属赶时髦而已。

  • 阿里云下载最新的ArchLinux安装ISO,目前是archlinux-2016.02.01-dual.iso
  • 在VirtualBox中创建一个虚拟机,然后在虚拟机设置中把“系统”下的“Enable EFI”选项打开。
  • 把ArchLinux的安装ISO载入虚拟机光驱,从ISO启动进入字符界面。
  • 根据ArchLinux的安装指南一步一步走就可以了,下面是一些注意点。
  • 选择pacman的mirrorlist:
    • 编辑/etc/pacman.d/mirrorlist,把照着格式把阿里云的源http://mirrors.aliyun.com/archlinux/...加在前头。
  • 硬盘分区时需要注意一下方面:
    • 使用cfdisk硬盘分区的时候,分区表格式选择GPT而不是MBR(MBR太老,恐和EFI不搭)
    • EFI需要一个单独的启动分区,所以我的分区策略就是分一个512MB的EFI System分区(/dev/sda1),挂载到/boot,剩下的空间全部归root分区(/dev/sda2)。
    • 使用lsblk命令,可以打印出所有分区。
    • EFI System分区必须是Fat32格式的,格式化命令mkfs.fat -F32 /dev/sda1
    • 本来想在root分区使用Btrfs,后来想想还是保守一点,用ext4了:mkfs.ext4 /dev/sda2
  • EFI设计上可以绕过BIOS和Grub而直接启动操作系统。ArchLinux已经默认在内核上启动了Linux的EFISTUB选项,原理上Linux可以直接从EFI启动。考虑到以后要用多个版本的内核,所以还是安装了一个简单的EFI Boot Manager用来管理不同的启动项。简单起见,我选了Systemd-boot作为EFI Boot Manager。

    • 安装systemd-boot到EFI System分区: bootctl --path=<i>/dev/sda1</i> install
    • 接着我们需要手动添加一个启动项/boot/loader/entries/arch.conf,内容如下:

      title          Arch Linux
      linux          /vmlinuz-linux
      initrd         /initramfs-linux.img
      options        root=PARTUUID=14420948-2cea-4de7-b042-40f67c618660 rw

    • 上面那一串14420948-2cea-4de7-b042-40f67c618660是从命令blkid -s PARTUUID -o value /dev/sda1生成的。

  • 最后是启用网络:

    • ls /sys/class/net查网卡,我的显示enp0s3
    • 启用这个网卡ip link set enp0s3 up
    • 创建这个文件/etc/systemd/network/MyDhcp.network,内容为:

      [Match]
      Name=en*[Network]
      DHCP=ipv4

    • 执行下面两个命令

      • systemctl reenable systemd-networkd.service
      • systemctl reenable systemd-resolved.service
  • 基本上大功告成了,执行pacman -S extra/vim把Vim编辑器装上 😉

Load Disqus Comments