gpt+EFIの組み合わせでブートするまでの練習。VirtualBOX使用。実機ではセキュアブート対応の作業が必要だろう(20159)

方針

EFIシステムパーティション(fat32)を/bootとする。

VirtualBoxの設定

  • EFIを有効化
  • チップセット:PIIX3,IDE:PIIX4,SATA:AHCI(デフォルト)
  • ハードウェアクロックをUTCにする」
  • LANはBroadcom Netlink Gigabit Ethernet (うちではブリッジアダプター、プロミスキャスすべて許可)

Arch インストールCDで立ち上げ

  • キーマップ

    # loadkeys jp106
    
  • ネットワーク(dhcpcd.service)を確認

    # ip addr
    
  • rootパスワードとsshd

    # passwd
    # vi /etc/ssh/sshd.conf
    # systemctl start sshd
    
  • パーティション

    cfdiskで新規gptからスタート

    # cfdisk -z /dev/sda
      Select label type -> gpt
      [New] 512MiB , EFI System
      [New] 2GiB , Linux swap
      [New] 全部 , Linux filesystem
      [Write] yes
    # mkfs.vfat -F32 -L ESP  /dev/sda1
    # mkswap    -L Swap      /dev/sda2
    # mkfs.ext4 -L ArchLinux /dev/sda3
    
  • マウントしてarchstrap

    # mount /dev/sda3 /mnt
    # mkdir /mnt/boot
    # mount /dev/sda1 /mnt/boot
    # vi /etc/pacmnan.d/mirrorlist
    # archstrap /mnt base base.devel
    
  • chroot

    # genfstab -L -p /mnt >> /mnt/etc/fstab  # -L はラベル使用のため
    # arch-chroot  /mnt
    
  • 最低限のシステム設定

    chroot# ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
    chroot# echo "ホスト名" > /etc/hostname
    chroot# echo "KEYMAP=jp106" > /etc/vconsole.conf
    chroot# echo "LANG=C" > /etc/locale.conf
    chroot# vi /etc/locale.gen ; locale-gen
    chroot# vi /etc/mkinitcpio.conf ; mkinitcpio -p linux
    
  • ブートローダー(grub)

    grubに他のosを検出させ、ブートメニューに含めさせるため、os-proberもインストールしておく。 別のHDDにブートできるWin8があるなど。

    chroot# pacman -S grub efibootmgr os-prober
    chroot# grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=arch_grub --recheck --debug
    chroot# grub-mkconfig -o /boot/grub/grub.cfg
    
    • 変なシステム用の手当て

      chroot# mkdir /boot/EFI/boot
      chroot# cp /boot/EFI/arch_grub/grubx64.efi  /boot/EFI/boot/bootx64.efi
      

以上。

chroot# exit
# shutdown -r now