前回はThinkpad X1 Carbon (Gen 6)にArch Linuxをインストールし,正常に起動させた。
何もないまっさらな状態なので,今回は初期設定として必須な作業を行う。

現状の整理

これまで明示的にインストールしたパッケージは,以下のようになる。
パッケージグループ
base
base-devel
パッケージ
– iw
– wpa_supplicant
– dialog
– intel-ucode
– grub
– efibootmgr
– os-prober

となる。
なるべくシンプルなシステムを目指したいので,何がインストールされているのかは今後きちんと管理するようにしたい。

GRUB

前回起動したOSが選択されるようにすると便利なので,/etc/default/grubに

GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT="true"

を書いてgrub-mkconfigする。

AUR

AURを簡単に扱うために,AURヘルパーとしてyayをインストールしていく。
(参考)

 $ sudo pacman -S git
 $ git clone https://aur.archlinux.org/yay.git
 $ cd yay
 $ makepkg -si

使い方はpacmanとほとんど同じで便利。

Lenovo ThinkPad X1 Carbon (Gen 6)特有の設定

Arch Wiki: Lenovo ThinkPad X1 Carbon (Gen 6)英語版を参考に設定する。

モデルの確認

# pacman -S dmidecode
# dmidecode -t system | grep Version

S0i3スリープのサポート

acpi.ec_no_wakeup=1

をカーネルパラメータとしてわたすため,/etc/default/grubに追記する。

BIOSの設定

Realteckのメモリーカードリーダーを無効にして電源を節約する。
Security -> I/O Port Access -> Memory Card Slot – Set to “Disabled”

Config -> Thunderbolt BIOS Assist Mode – Set to “Enabled”
無効にした場合、Linux では s2idle で CPU が立ち上がってしまい電力消費量が跳ね上がります。

Config -> Network -> Wake On LAN – Set to “Disabled”
Config -> Network -> Wake On LAN from Dock – Set to “Disabled”
バッテリー節約を考える。

CPUのスロットリングの修正

AURからlenovo-throttling-fix-gitをインストールする。

$ yay -S lenovo-throttling-fix-git
$ sudo systemctl enable --now lenovo_fix.service

キーボードショートカットの確認

Keyboard Fn Shortcuts

  • Fn+4 sends XF86Sleep (puts computer to sleep by default)
  • Fn+S sends Alt_L+Sys_Req
  • Fn+P sends Pause
  • Fn+B sends Control_L+Break
  • Fn+K sends Scroll_Lock
  • Fn+Space toggles the keyboard backlight
  • Fn by itself sends XF86WakeUp (wakes computer from sleep by default)

Bind special keys

Fn+F11, Fn+F12 の設定: TODO

フルディスク暗号化について

Ramdisk module

With LUKS for root, i915 needs to be loaded in ramdisk in order to access the password prompt. Add i915 to MODULES list in /etc/mkinitcpio.conf and regenerate the ramdisk.

使えそうなツール群

診断系

# pacman -S intel-gpu-tools powertop tlp tlp-rdw acpi_call
# yay s-tui

tlp-stat

tlp-stat で色々提案してくれるので,それに従ってバッテリーを節約する。

# pacman -S ethtool smartmontools

一般的な推奨事項

Arch Wikiの一般的な推奨事項に沿ってインストール後の設定をおこなっていくことにする。

ユーザーとグループの作成

Rootユーザーで作業し続けるのは愚かなので,まずは一般ユーザーとsudoできる環境を作成する。
(ユーザーとグループについて参考Wiki)

# groupadd yourgroupname
# useradd -m -g yourgroupname -G wheel -s /bin/bash yourusername
# passwd yourusername

その後,wheelグループのユーザーがパスワードありで完全なroot権限を得られるようにする。

# visudo
%wheel ALL=(ALL) ALL の行をアンコメント

これで一般ユーザーで作業ができるようになる。
なお,root権限が欲しい際は,suでrootのシェルに移るよりも,sudoでコマンド一つ一つ実行していくことがセキュリティ上好ましいとのことだ。

ネットワーク接続

ネットワークはnetctlで管理することにする。
無線接続を自動で切り替えるために,netctl-autoを使うことにする。
インターフェース名と動作状況は

$ ip link

で確認できる。

# pacman -S wpa_actiond
# systemctl enable netctl-auto@wlp2s0.service

また,新しいネットワークの設定ファイルを作りたければ,

# wifi-menu -o

を使うと良い。

また,今後有線のアダプタを購入した際には,netctl-ifplugdを使う。

# pacman -S ifplugd
# systemctl enable netctl-ifplugd@interface.service

パッケージ管理

システムアップデート

Archはローリングリリースなので,適宜以下のコマンドでシステム全体が最新になる。

# pacman -Syu

ミラーの管理

Reflectorを使用して自動的にミラーを選択する。
日本に存在する、12時間以内に同期が行われた HTTPS ミラーを選択して、ダウンロード速度でソートし、/etc/pacman.d/mirrorlist ファイルを上書きすることにする。

# pacman -S pacman-contrib reflector
# reflector --country 'Japan' --age 12 --protocol https --sort rate --save /etc/pacman.d/mirrorlist

pacmanでのpacman-mirrorlistの更新時に自動的に更新するために,pacmanフックを作成する。

# vi /etc/pacman.d/hooks/mirrorupgrade.hook

[Trigger]
Operation = Upgrade
Type = Package
Target = pacman-mirrorlist

[Action]
Description = Updating pacman-mirrorlist with reflector and removing pacnew...
When = PostTransaction
Depends = reflector
Exec = /bin/sh -c "reflector --protocol https --latest 30 --number 20 --sort rate --save /etc/pacman.d/mirrorlist;  rm -f /etc/pacman.d/mirrorlist.pacnew"

Systemdサービスを作成して, コンピュータが起動するたびにミラーリストを更新するようにする。

# vi /etc/systemd/system/reflector.service

[Unit]
Description=Pacman mirrorlist update
Requires=network-online.target
After=network-online.target

[Service]
Type=oneshot
ExecStart=/usr/bin/reflector --protocol https --latest 30 --number 20 --sort rate --save /etc/pacman.d/mirrorlist

[Install]
RequiredBy=multi-user.target

# systemctl enable reflector.service

reflector.serviceを一週間ごとに実行したい場合

# vi /etc/systemd/system/reflector.timer

[Unit]
Description=Run reflector weekly

[Timer]
OnCalendar=weekly
RandomizedDelaySec=12h
Persistent=true

[Install]
WantedBy=timers.target

コンソールフォントの設定

さすがに文字が小さすぎて目が痛くなってきたので,フォント#コンソールフォントを参考に設定する。

とりあえず,terminus-fontを入れて文字を大きくする。

# pacman -S terminus-font
# setfont ter-128n
# echo FONT=ter-128n >> /etc/vconsole.conf

日本語フォントはX環境が整ってから後で考えよう。

電源管理

遅延ハイバネーション

スリープから一定時間後にハイバネートするために、以下のサービスをsystemdで有効化する。

<pre>

vi /etc/systemd/system/suspend-to-hibernate.service

[Unit]
Description=Delayed hibernation trigger
Documentation=https://bbs.archlinux.org/viewtopic.php?pid=1420279#p1420279
Documentation=https://wiki.archlinux.org/index.php/Power_management
Conflicts=hibernate.target hybrid-sleep.target
Before=sleep.target
StopWhenUnneeded=true

[Service]
Type=oneshot
RemainAfterExit=yes
Environment="WAKEALARM=/sys/class/rtc/rtc0/wakealarm"
Environment="SLEEPLENGTH=+2hour"
ExecStart=-/usr/bin/sh -c 'echo -n "alarm set for "; date +%%s -d$SLEEPLENGTH | tee $WAKEALARM'
ExecStop=-/usr/bin/sh -c '\
  alarm=$(cat $WAKEALARM); \
  now=$(date +%%s); \
  if [ -z "$alarm" ] || [ "$now" -ge "$alarm" ]; then \
     echo "hibernate triggered"; \
     systemctl hibernate; \
  else \
     echo "normal wakeup"; \
  fi; \
  echo 0 > $WAKEALARM; \
'

[Install]
WantedBy=sleep.target
</pre>

ACPIイベント

ACPIイベントはsystemdで管理する。
/etc/systemd/logind.confを編集するとデフォルトの挙動を変えられる。
とりあえずデフォルトのまま。

TLPの有効化

TLPは電源管理を一括で便利にしてくれるようなので,その恩恵を享受することにする,
pacmanでのインストールはThinkpad特有の設定で済ませたので,systemctlで有効化する。
NetworkManager じゃなくてnetctlを使っているので,マスクする。

# systemctl mask systemd-rfkill.service systemd-rfkill.socket NetworkManager.service
# systemctl enable tlp.service tlp-sleep.service

設定ファイルは/etc/default/tlpにあるので,適宜変更する。
CPU周波数スケーリングガバナーとターボブーストとバッテリー充電機能の設定を入れた。

ssd のTRIM

ssdはtrimをしないと遅くなっていくので,ソリッドステートドライブソリッドステートドライブNVMeを参考に設定する。

dm-cryptのデバイス上のtrimを有効にするには、ここを参考にする。

nvmeツールのインストール, AURにあるnvme-cliをインストールする

# yay -S nvme-cli

fstrimのタイマーの有効化

# systemctl enable fstrim.timer

システムサービス

ファイルインデックスと検索

locateを使いたいので,mlocate をインストールする

# pacman -S mlocate
# updatedb

あとは自動で毎日データベースの更新もしてくれるようだ。

NTPの設定

まずはntpをインストール

# pacman -S ntp

pool.ntp.orgサーバーを使って日本のサーバーに接続する。

# vi /etc/ntp.conf

server 0.jp.pool.ntp.org iburst
server 1.jp.pool.ntp.org iburst
server 2.jp.pool.ntp.org iburst
server 3.jp.pool.ntp.org iburst

起動時にntpデーモンを起動するために,systemdで有効にする。

# systemctl enable nptd.service

同期した時刻をハードウェアクロックにも書き込みたいので、既存のユニットを設定する

# vi /etc/systemd/system/ntpdate.service.d/hwclock.conf

[Service]
ExecStart=/usr/bin/hwclock -w

DNSキャッシュの設定

TODO
pdnsdの設定

Bluetooth

Arch Wiki (Bluetooth)を参考に設定する。

インストール

# pacman -S bluz bluez-utils
# systemctl enable bluetooth

GUIフロントエンド

Blueman をインストールする

# pacman -S blueman

オーディオ

Alsaのミュートの解除

# pacman -S alsa-utils
# alsamixer

Pulseaudio

pulseaudioを使用する。

# pacman -S pulseaudio pulseaudio-bluetooth pulseaudio-alsa

GUIの設定

長くなったので,別の記事で紹介する。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください