Create a gist now

Instantly share code, notes, and snippets.

@kuenishi /arch.rst
Last active Oct 20, 2017

What would you like to do?
Arch installation Oct 2017

Arch Linux Installation

2017/10/19 - 2017/10/20

ISO Image Download

https://www.archlinux.org/download/ からPGP署名ファイルとISOイメージをダウンロード:

$ wget http://ftp.jaist.ac.jp/pub/Linux/ArchLinux/iso/2017.10.01/archlinux-2017.10.01-x86_64.iso
$ wget https://www.archlinux.org/iso/2017.10.01/archlinux-2017.10.01-x86_64.iso.sig
$ ls archlinux*
archlinux-2017.10.01-x86_64.iso  archlinux-2017.10.01-x86_64.iso.sig

ダウンロードしたファイルの検証。公開鍵がないので一旦失敗する:

$ LANG=C gpg --verbose --verify archlinux-2017.10.01-x86_64.iso.sig
gpg: assuming signed data in 'archlinux-2017.10.01-x86_64.iso'
gpg: Signature made Sun Oct  1 14:29:43 2017 JST
gpg:                using RSA key 4AA4767BBC9C4B1D18AE28B77F2D434B9741E8AC
gpg: Can't check signature: No public key

公開鍵を調べてとりあえずインポートする:

$ gpg --search-key 4AA4767BBC9C4B1D18AE28B77F2D434B9741E8AC
gpg: data source: https://176.9.147.41:443
(1)     Pierre Schmitz <pierre@archlinux.de>
        2048 bit RSA key 7F2D434B9741E8AC, 作成: 2011-04-10
Keys 1-1 of 1 for "4AA4767BBC9C4B1D18AE28B77F2D434B9741E8AC".  番号(s)、N)次、またはQ)中止を入力してください >N
$ gpg --recv-keys  7F2D434B9741E8AC
gpg: 鍵7F2D434B9741E8AC: 公開鍵"Pierre Schmitz <pierre@archlinux.de>"をインポートしました
gpg: marginals needed: 3  completes needed: 1  trust model: pgp
gpg: 深さ: 0  有効性:   2  署名:   1  信用: 0-, 0q, 0n, 0m, 0f, 2u
gpg: 深さ: 1  有効性:   1  署名:   0  信用: 0-, 0q, 0n, 0m, 1f, 0u
gpg: 次回の信用データベース検査は、2018-07-11です
gpg:           処理数の合計: 1
gpg:             インポート: 1

改めてVerify:

$ LANG=C gpg --verify archlinux-2017.10.01-x86_64.iso.sig
gpg: assuming signed data in 'archlinux-2017.10.01-x86_64.iso'
gpg: Signature made Sun Oct  1 14:29:43 2017 JST
gpg:                using RSA key 4AA4767BBC9C4B1D18AE28B77F2D434B9741E8AC
gpg: Good signature from "Pierre Schmitz <pierre@archlinux.de>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 4AA4 767B BC9C 4B1D 18AE  28B7 7F2D 434B 9741 E8AC

イメージをUSBメモリに焼く

$ sudo dmesg | tail
[ 6587.846736] scsi 8:0:0:0: Direct-Access     Ut165    USB2FlashStorage 0.00 PQ: 0 ANSI: 2
[ 6587.847379] sd 8:0:0:0: Attached scsi generic sg6 type 0
[ 6587.848372] sd 8:0:0:0: [sdf] 7897040 512-byte logical blocks: (4.04 GB/3.76 GiB)
[ 6587.849183] sd 8:0:0:0: [sdf] Write Protect is off
[ 6587.849185] sd 8:0:0:0: [sdf] Mode Sense: 00 00 00 00
[ 6587.850081] sd 8:0:0:0: [sdf] Asking for cache data failed
[ 6587.850087] sd 8:0:0:0: [sdf] Assuming drive cache: write through
[ 6588.007742]  sdf:
[ 6588.400298] sd 8:0:0:0: [sdf] Attached SCSI removable disk
[ 7272.546160]  sdf: sdf1 sdf2
$ sudo dd if=archlinux-2017.10.01-x86_64.iso of=/dev/sdf status=progress && sudo sync
544993792 bytes (545 MB, 520 MiB) copied, 189 s, 2.9 MB/s
1071104+0 レコード入力
1071104+0 レコード出力
548405248 bytes (548 MB, 523 MiB) copied, 201.131 s, 2.7 MB/s

ThinkPad届く。

Secure Bootをオフに必ずしておく。 Bootパスはまあこの際後でもいっか。

Windows Proのライセンスキーがパッケージや本体のどこにも書いてないので、 Windowsを起動して一旦プロダクトキーを抜いておく(おそらくThinkPadのCPU IDかシリアルナンバーか何かをみて認証していると思われる。ブート後:

root@archiso ~ # passwd
root@archiso ~ # systemctl start sshd
root@archiso ~ # ip addr

以後SSHで入って作業(優先で接続するために予めRJ45アダプタを買っておく)。ディスク名を確認:

# fdisk -l
Disk /dev/nvme0n1: 477 GiB, 512110190592 bytes, 1000215216 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 25A27C49-25BC-4715-8A09-A722ABE9260D

Device             Start        End   Sectors   Size Type
/dev/nvme0n1p1      2048     534527    532480   260M EFI System
/dev/nvme0n1p2    534528     567295     32768    16M Microsoft reserved
/dev/nvme0n1p3    567296  998166527 997599232 475.7G Microsoft basic data
/dev/nvme0n1p4 998166528 1000214527   2048000  1000M Windows recovery environment

パーティションを切る:

root@archiso ~ # parted /dev/nvme0n1 -s mklabel gpt -s mkpart ESP fat32 1MiB 513MiB -s set 1 boot on -s mkpart primary ext4 513MiB 100%
root@archiso ~ # fdisk -l
Disk /dev/nvme0n1: 477 GiB, 512110190592 bytes, 1000215216 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 1E26B015-ABC4-4949-8410-7F43A11ECE11

Device           Start        End   Sectors   Size Type
/dev/nvme0n1p1    2048    1050623   1048576   512M EFI System
/dev/nvme0n1p2 1050624 1000214527 999163904 476.4G Linux filesystem

ブートセクタをフォーマットする:

root@archiso ~ # mkfs.vfat -F32 /dev/nvme0n1p1
mkfs.fat 4.1 (2017-01-24)
root@archiso ~ # parted /dev/nvme0n1 print
Model: Unknown (unknown)
Disk /dev/nvme0n1: 512GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End    Size   File system  Name  Flags
1      1049kB  538MB  537MB  fat32              boot, esp
2      538MB   512GB  512GB

ルートパーティションを暗号化する。このとき入れるパスワードが、マシン起 動のときに毎回きかれるパスワードになる。このパスワードを覚えておけばあ とで追加もできる。というか、覚えられるパスワードにしておこう。:

root@archiso ~ # cryptsetup luksFormat /dev/nvme0n1p2

WARNING!
========
This will overwrite data on /dev/nvme0n1p2 irrevocably.

Are you sure? (Type uppercase yes): YES
Enter passphrase:
Verify passphrase:

LUKSはかなり高機能で、YubiKeyで鍵を渡して起動とか、USBメモリ上の特定の パスから拾ってくるとかいろいろできるらしい。initrdの中にパスワードファ イルを仕込んでおくこともできるが、ここは素直に覚えやすいものを設定して おくことにした。暗号化したやつをDevice Mapperで見えるようにする。ここ では crypt-root と適当に名前をつける。それを ext4 でフォーマットま でしとく。:

root@archiso ~ # cryptsetup open /dev/nvme0n1p2 crypt-root
Enter passphrase for /dev/nvme0n1p2:
root@archiso ~ # mkfs.ext4 /dev/mapper/crypt-root
mke2fs 1.43.6 (29-Aug-2017)
Creating filesystem with 124894976 4k blocks and 31227904 inodes
Filesystem UUID: 01dbc4c4-bebe-4ee5-92a1-2568aaef4c1f
Superblock backups stored on blocks:
      32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
      4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
      102400000

      Allocating group tables: done
      Writing inode tables: done
      Creating journal (262144 blocks): done
      Writing superblocks and filesystem accounting information: done

フォーマットしたものをと、ブートパーティションをマウントする。:

root@archiso ~ # mount /dev/mapper/crypt-root /mnt
root@archiso ~ # mount /dev/nvme0n1p1 /mnt/boot
mount: /mnt/boot: mount point does not exist.
32 root@archiso ~ # mkdir /mnt/boot
root@archiso ~ # mount /dev/nvme0n1p1 /mnt/boot
root@archiso ~ # timedatectl set-ntp true
root@archiso ~ # timedatectl status
      Local time: Thu 2017-10-19 03:17:12 UTC
  Universal time: Thu 2017-10-19 03:17:12 UTC
        RTC time: Thu 2017-10-19 03:17:12
       Time zone: UTC (UTC, +0000)
 Network time on: yes
NTP synchronized: yes
 RTC in local TZ: no

ミラーを日本だけのものにしとく。grepだと '--' という余計なものが入るの で、消しておくこと。で、最後にベースシステムを pacstrap でインストー ルする:

# grep Japan -A 1 /etc/pacman.d/mirrorlist > mirrorlist
(remove  -- here)
# vi mirrorlist
# mv mirrorlist /etc/pacman.d/
# pacstrap /mnt base base-devel

この時点で /etc/fstab を作ったり、基本的なファイルを先においておく。:

# genfstab -U /mnt >> /mnt/etc/fstab
# arch-chroot /mnt
[root@archiso /]# ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
[root@archiso /]# echo en_US.UTF-8 > /etc/locale.conf
[root@archiso /]# locale-gen
[root@archiso /]# echo KEYMAP=us > /etc/vconsole.conf
[root@archiso /]# echo utaha > /etc/hostname
[root@archiso /]# pacman -S emacs-nox
[root@archiso /]# emacs /etc/hosts
(set hostname.localdomain)

ひととおり設定できたら、initramfsを作る。 /etc/mkinitcpio.conf を 編集して、 systemdsd-encryptHOOKSに追加する 。いまのところはこういう並びでうまくいっている。 sd-encryptblock の前にないとだめそう。:

HOOKS="base systemd udev autodetect modconf sd-encrypt block filesystems keyboard fsck"

巷には LVM と encrypt を使ってなぜか systemd-boot でうまく行っ ている例があるみたいだが、少なくとも手元では成功しなかったので鵜呑みに するのは危険だろう。 If you use the systemd hook then you have to use sd-encrypt and sd-lvm. とも書いてあるし。これが編集できたら initrd を作成。:

# mkinitcpio -p linux

次はブートセクタの作成。まずUUIDを確認して、とりあえずもろもろのファイルを作っておく。:

# cryptsetup luksUUID /dev/nvme0n1p2
1cf54a61-cd17-43e3-ad00-bf94c29dc922
# bootctl --path=/boot install
# pacman -S intel-ucode

intel-ucodeCPUのマイクロコードをアップデートしてくれるものらしい

次にブートローダの設定を作成。:

# emacs /boot/loader/loader.conf
# cat /boot/loader/loader.conf
timeout 5
## default 64783ef8e33e4205862d8f26c79b569c-*
default encrypted-arch.conf
editor 0

timeout 5 は、ブートローダーに入ってから、ブートエントリの切り替え を5秒だけ待ってくれるやつだ。5秒たつとデフォルトのブートエントリに入っ ていく。デフォルトのブートエントリは:

# cat /boot/loader/entries/encrypted-arch.conf
title Arch Linux Encrypted
linux /vmlinuz-linux
initrd /intel-ucode.img
initrd /initramfs-linux.img
options luks.uuid=1cf54a61-cd17-43e3-ad00-bf94c29dc922 luks.name=1cf54a61-cd17-43e3-ad00-bf94c29dc922=crypt-root root=/dev/mapper/crypt-root rw intel_pstate=no_hwp

↑はdm-cryptのやつ をみながら編集した。

起動したときにファイルシステムのパスフレーズを要求されて、 login ttyが出れば成功。:

# sync
# systemctl reboot

しかしこれでは後々マウスが動かないので、あとでこのカーネルをAURでアップデートすることになる。

GUI

まずは基本的なユーザー作成:

# mkdir /home/kuenishi
# chown kuenishi:kuenishi /home/kuenishi
# useradd kuenishi
# passwd kuenishi
# vigr -> add kuenishi to wheel
# pacman -S sudo
# visudo -> enable wheel as ALL=ALL
$ sudo pacman -S git

このままだと トラックポイント/トラックパッドが機能しない という問題にぶつかるので、それを回避するためのパッチを入れる。:

$ git clone https://aur.archlinux.org/linux-tp-x1-carbon-5th.git
$ cd linux-tp-x1-carbon-5th
$ makepkg -is --skippgpcheck

ビルドが終わったら /boot/loader/entries/encrypted-arch.conf を書き 換える。カーネルとinitrd の新しいファイルが /boot に置かれているの で、両方を置き換えたら再起動。たとえばこんな感じ:

# ls /boot
EFI                                            initramfs-linux-tp-x1-carbon-5th.img  loader
initramfs-linux-fallback.img                   initramfs-linux.img                   vmlinuz-linux
initramfs-linux-tp-x1-carbon-5th-fallback.img  intel-ucode.img                       vmlinuz-linux-tp-x1-carbon-5th
# cat /boot/loader/entries/encrypted-arch.conf
title Arch Linux Encrypted
linux /vmlinuz-linux-tp-x1-carbon-5th
initrd /intel-ucode.img
initrd /initramfs-linux-tp-x1-carbon-5th.img
options luks.uuid=1cf54a61-cd17-43e3-ad00-bf94c29dc922 luks.name=1cf54a61-cd17-43e3-ad00-bf94c29dc922=crypt-root root=/dev/mapper/crypt-root rw intel_pstate=no_hwp

Enlightenment を少し試してみたが、使いにくいので xfce4 に戻る。インストールと起動テスト:

$ sudo pacman -S xorg-server xfce4 xfce4-goodies
$ startxfce4

これで起動を確認する。変なことになって失敗したら Ctrl+Alt+Del で戻 れる。lightdm は最初失敗。ログをみるのもだるいので sddm に。 SDDM を 有効にするには

$ sudo pacman -S sddm
$ sudo systemctl enable sddm

これでリブートしてみる。テストしたければ enable 前に sudo systemctl start sddm で。 CtrlとCaps Lockを入れ替えるのは、とりあえず:

$ echo 'setxkbmap -option ctrl:nocaps' > swapctrlcaps.sh
$ chmod 755 swapctrlcaps.sh
$ ./swapctrlcaps.sh

で Caps lock を Ctrl にする。他にもキーボードマッピングをいじる方法と かがあるけど、複数のものが絡まって複雑になると困ってしまうので、なるべ く上位でやりたいので今ここ。

DPIはAppearance (外観)から変更。とりあえず字大きめの160で。

日本語入力

Japanese fonts

$ sudo pacman -S noto-fonts-cjk noto-fonts-emoji noto-fonts-extra adobe-source-han-sans-jp-fonts otf-ipafont ttf-sazanami ttf-hanazono
$ sudo pacman -S fcitx-im fcitx-mozc fcitx-configtool
$ echo 'export GTK_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx' > ~/.xprofile

で一旦ログアウトして、いろいろGUIをいじっていたら動いた。もしかしたら:

$ fcitx-autostart

が必要かも。

System update

システムアップデートは

$ sudo pacman -Syu

このときAURで入れていたパッケージに注意すること。

パッケージを探すのは:

$ pacman -Ss <pkgname>

Installed Application

いろんなアプリを入れる:

$ sudo pacman -S tmux firefox emacs

Spotlightのようなアプリケーションランチャーがあると便利だなと思ってい たが Whisker MenuWindowsキーに割り当て て一見落着。

AURでは

  • google-chrome
  • slack-desktop
  • linux-tp-x1-carbon-5th (カーネルパッチみたいだけど)
  • gyazo

Sound

サウンド は:

$ sudo pacman -S alsa-utils
$ alsamixer

これだけで音が鳴るようになる。 XfceのUI や、ThinkPadのF1~F3 でのコントロールはできていない。Xfce4のPulseAudio pluginは pavucontrol をインストールして再起動?したら使えるように なった。

-> https://wiki.archlinux.org/index.php/List_of_applications#Volume_managers

WiFi

Wicd を入れたらそれなりに快適に動く:

$ sudo pacman -S wicd wicd-gtk gksu python2-notify

WiFi なぜか一 度適当に設定したらいつの間にか動くようになってしまった… 電波強度をパ ネルに出すのに wavelan というのをつけてある。ツールは他にも wifi-menu とかいろいろある。-> https://wiki.archlinux.jp/index.php/%E3%83%AF%E3%82%A4%E3%83%A4%E3%83%AC%E3%82%B9%E8%A8%AD%E5%AE%9A

Docker

インストールしたら自分をDockerグループに入れて一旦ログアウト(グループ追加を有効にするため):

$ sudo pacman -S docker
$ vigr
$ exit (WMもログアウト)

その後Daemonを上げてアクセス:

$ sudo systemctl start docker
$ docker run -it ubuntu /bin/bash

GPG keys

GPG key setup esp. pinentry:

$ cat .gnupg/gpg-agent.conf
# PIN entry program
# pinentry-program /usr/bin/pinentry-curses
# pinentry-program /usr/bin/pinentry-qt
# pinentry-program /usr/bin/pinentry-kwallet

pinentry-program /usr/bin/pinentry-gtk-2

GPG signature は作成またはインポート する。Gitも それで。:

$ git config --global gpg.program gpg2
$ gpg2 --list-secret-keys
$ git config --global user.signingkey xxxxxxxx
$ git log --show-signature
$ git tag -s tagname
$ git show tagname
  • https://www.gnupg.org/gph/en/manual/x334.html
  • baccounts -> GnuPG 2.0ま でのフォーマットしか対応してないので悩ましい。Archに入っている最新の GnuPGが作るKeyringファイルだと動かない... crypto/openpgp に新しい機 能入ってたりしないかな(TODO)

マルチ(外部)ディスプレイ

家のASUSの4KディスプレイはHDMIを刺すだけで特になにもなく 3000x2000 く らいで認識されて映った。なにかあったら マルチディスプレイ を参照。

Windows on VirtualBox

Windows 10 Downlaod からダウンロードしつつ、VirtualBoxをインストールする:

$ sudo pacman -S virtualbox virtualbox-guest-iso vde2

Windows予定のイメージを作ってDVDブートすると VT-x is disabled in the BIOS for all CPU modes と叱られたので、BIOSで設定をオンにする。最近 は VT-d とかいうのまであるらしい。

予めWindowsのプロダクトキーは Windows Product Key Viewer というので抜 いておいた。ふつうにインストールできているっぽい。

windows10-product-key-thinkpad-x1c-5th.jpg

YubiKey authentication

Local Authentication Using Challenge Response would be enough to prove personality, with 2FA. YubiCloud requires network connectivity and its not given for free...:

$ sudo pacman -S yubico-pam
(insert yubikey)
$ mkdir ~/.yubico
$ ykpamcfg -2 -v
(a file will be saved to ~/.yubico/challenge-xxxxxx)

Move challenge-xxx file to /var/yubico following instructions described in the page above; and in Arch /etc/pam.d/system-auth is used rather than common-auth in the document. Before hand, make sure you have another terminal window with root privilege just in case to roll back system-auth file. The edit will be:

$ sudoedit /etc/pam.d/system-auth
(add
'auth   required        pam_yubico.so mode=challenge-response chalresp_path=/var/yubico'
after a line of pam_unix.so)
$ cat /etc/pam.d/system-auth
#%PAM-1.0

auth      required  pam_unix.so     try_first_pass nullok
auth      required  pam_yubico.so mode=challenge-response chalresp_path=/var/yubico
auth      optional  pam_permit.so
auth      required  pam_env.so
(.. snip ..)

Wait for moment, and test with sudo -s which will block after you input sudo password and the YubiKey is waiting for your touch.

See also: ykpamcfg(1)

TODO

  • いつの間にかF1~F12 のキーのうちいくつかが使えるようになっていた。不思議
  • YubiKeyを入れるとキーボードのCaps Lockが戻ってしまう
  • pacman/AURのフロントエンドを何か選ぶ -> https://wiki.archlinux.org/index.php/AUR_helpers

Reference

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment