Random Walker Log's Log

二度と見ない系ログファイル

20151221 Arch Linuxをもう一度インストールした自分用記録

arch linuxをちょっと前に潰してwindowsと仮想環境のlubuntuを使っていたんだけど、あまりにも動作が重くてキレそうなのでもう一度archとwinのデュアルブートやることにした。grubの設定でめっちゃ手こずった。以前の自分のブログを見返してみたら「流れ作業でできた」とか書いてあってキレた。お前さあ!! そんなんだから、いっつも自分のメモが参考にならなくて詰むんだろ!! こないだもさあセミナーのノートに「ここは直接計算すればできる」としか書かないで結局発表の時に計算できなくて黒板の前で立ち尽くして……あああああああああ!!!!!!!!!!!1
同じ悲劇を繰り返したくないので今回は全工程をメモすることにした。

インストール

前提:

  • UEFI/GPT
  • Dドライブを潰して、Cドライブを縮小してできた領域にインストールする
  • 単一のパーティションにすべてインストールする。swapも無し
  • 無線lanを使う
  • インストールメディアは2015年11月版

まずWindows側で高速スタートアップを無効にする。ファームウェアメニューでセキュアブートを無効にする。archのUSBを挿して起動する。このとき、画面が映らない場合がある。そのときはファームウェアメニューでセキュアブートを有効にしてから起動して、エラーが出たのを確認してからもう一度セキュアブートをオフにしたら直ることがある(今回はそれで治った。理由は不明)。
次のように操作する:

# loadkeys jp106
# wifi-menu
  SSIDを選んでenter
  enter
  Keyを入力してenter
# ping -c 3 8.8.8.8 (接続確認)
# lsblk (ディスク構成確認)
# gdisk /dev/sda
  (p で状況確認)
  n で新規パーティション作成
  (設定はデフォルトでよいのでenter連打)
  (p で変更確認)
  w で書き込み
# mkfs.ext4 /dev/sdax
  xはlinuxを置くパーティションの番号
# mount /dev/sdax /mnt
# mkdir -p /mnt/boot/efi
# mount /dev/sda2 /mnt/boot/efi
  sda2はEFIパーティション
  万が一違っていたら置き換えること
# nano /etc/pacman.d/mirrorlist
  jaistとtsukubaを探す
  alt+6でコピー、PgUpで一番上に移動、ctrl+Uでペースト、ctrl+xで終了
# pacstrap -i /mnt base base-devel
  オプションは全てdefalt=allのままでよい。enter連打
# genfstab -U /mnt > /mnt/etc/fstab
# arch-chroot /mnt /bin/bash

 [ここからchrootに入る]

# nano /etc/locale.gen
  en_US.UTF-8 UTF-8の行のコメントを外す
# locale-gen
# echo LANG=en_US.UTF-8 > /etc/locale.conf
# export LANG=en_US.UTF-8
# echo KEYMAP=jp106 > /etc/vconsole.conf
# ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
# hwclock --systohc --utc
# echo arch > /etc/hostname
  archのところは好きなホスト名にする
# nano /etc/hosts
  さっき決めたホスト名を、
  127.0.0.1と::1の行末に追加する
# pacman -S iw wpa_supplicant
# cd /etc/netctl
# cp examples/wireless-wpa home
# ip link
  wlp2s0みたいな感じの名前を調べる
# nano home
  Interfaceをさっき調べたものに変更
  ESSIDとKeyを自宅のものに変更
# netctl enable home
# passwd
# pacman -S grub efibootmgr dosfstools
# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=grub --recheck --debug
# grub-probe --target=hints_string /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
  これが出るはず:
  --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2
  出力を控えておく ($hints_stringとする)
# grub-probe --target=fs_uuid /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
  これは環境によって全く異なる
  出力を控えておく ($uuidとする)
# cd /boot/efi/EFI
# cp Microsoft/Boot/bootmgfw.efi Microsoft/Boot/bootmgfw.efi.original
# cp grub/grubx64.efi Microsoft/Boot/bootmgfw.efi
# nano /etc/grub.d/40_custom
  ファイルの末尾に以下を書き加える
  ($hints_stringと$uuidはさっき調べたもので置き換える)

  [ここから]
menuentry "Microsoft Windows 8.1" {
  echo "Loading Microsoft Windows 8.1..."
  insmod part_gpt
  insmod fat
  insmod search_fs_uuid
  insmod chain
  search --fs-uuid --set=root $hints_string $uuid
  chainloader /EFI/Microsoft/Boot/bootmgfw.efi.original
}

menuentry "System shutdown" {
  echo "System shutting down..."
  halt
}

menuentry "System restart" {
  echo "System rebooting..."
  reboot
}
  [ここまで]

# grub-mkconfig -o /boot/grub/grub.cfg
# exit

  [ここでchrootを抜ける]

# reboot

参考:
ビギナーズガイド - ArchWiki
Lets Noteを買ったのでとりあえずWindows8とArchLinuxのデュアルブートにしてみた | Futurismo
Arch Linux と Windows のデュアルブート  on ThinkPad X250 メモ - メモ帳
もぷろぐ: 2014版 VAIO Pro (SVP1322A1J) で Arch Linux と Windows 8.1 を デュアルブートする

cpのところで詰まった。普通にインストールするとgrubが起動せずにそのままwindowsが起動してしまう。理由はよくわからないけど、本当はgrub/grubx64.efiを呼び出したいところでMicrosoft/Boot/bootmgfw.efiが呼び出されてしまっているらしい。bootmgfw.efiを別の名前(ここではbootmgfw.efi.original)にしてからgrubx64.efiをコピーして名前をbootmgfw.efiに変えてやればgrubが起動できる。40_customを編集する時に、chainloaderのところをbootmgfw.efi.originalではなくbootmgfw.efiにすると無限にループしてしまう(と思う)ので注意。
これ、前にインストールした時にもやったと思うんだけど、なんで当時の俺はここを省略しようと思ったんだろう。

20150103の追記

firefoxをインストールする時はこうする:

# pacman -S firefox firefox-i18n-ja

フォントは次のようにすればきれいになる:

# nano /etc/fonts/conf.avail/71-no-embedded-bitmaps.conf

これを書き込む:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match target="font">
    <edit mode="assign" name="embeddedbitmap">
      <bool>false</bool>
    </edit>
    <edit mode="assign" name="hintstyle">
       <const>hintnone</const>
    </edit>
  </match>
</fontconfig>

リンクを貼る:

# ln -s /etc/fonts/conf.avail/71-no-embedded-bitmaps.conf /etc/fonts/conf.d/71-no-embedded-bitmaps.conf

参考:
普段使いのArch Linux: Arch Linuxで日本語フォントをきれいに表示 | フォントのインストール・見やすく表示する設定

ダウンロードしたアーカイブを解凍してくれるやつをインストールする:

# pacman -S file-roller zip unzip unrar

ゴミ箱を追加する:

# pacman -S gvfs

TeX Liveはこれでインストールする:

# pacman -S texlive-langjapanese texlive-most evince poppler-data
$ yaourt -S texworks