プログラミングなんてわからないんですけど〜

元プログラマによるプライベートでのプログラミング日記。1/3のつもりだけどソフト関連はここがメイン

ThinkPad X201にArch Linuxをインストールしてみた

ThinkPad X201が遊んでいるので、Arch Linuxをインストールしてみた。

wiki.archlinux.org

起動用のUSBメモリはWin32DiskImagerを使用。

f:id:kaias1jp:20210111130327p:plain

電源投入直後にF12キーを押すと起動ドライブの選択画面になる。

f:id:kaias1jp:20210111130443j:plain

USBメモリを選んでboot。

f:id:kaias1jp:20210111130539j:plain

X201、CPUがCore iだからUEFIだと思い込んでいたらBIOSだった。

f:id:kaias1jp:20210111130642j:plain

uefiだと起動時の画面はこんな感じ。

さて、起動ができたら文字入力できるはず。まずはキーボード配列を日本語に指定。

loadkeys jp106

次にネットワークに接続。今回は無線LANを使用。

iwctl

「[iwd]#」という入力画面になったら、インターフェースを確認。

station list

wlan0というのが出るはず。
ひとまず、ネットワークのスキャン。

station wlan0 scan

つなぎ先を探してみる。

station wlan0 get-networks

一覧に自分がいつも使う無線LANSSIDが見れたらつなぐ。

station wlan0 connect <SSID>

パスフレーズ入力を入力するとつながる。

一応、つながったかどうか確認。

station wlan0 show

iwctlを抜ける。

exit

今回はDHCPIPアドレスを取得しているので、IPアドレスが割り振られているか確認。

ip addr

ネットワークに接続出来たら、セットアップを開始する。
まずは時計をntpで補正。

timedatectl set-ntp true

ディスクを確認。

fdisk -l

今回は/dev/sdaにいれる。

fdisk /dev/sda
o
n
[Enter]
[Enter]
[Enter]
vfat含まれると表示された場合はremove the signatureをy
wを打って書き込む。
w

自分のマシンはメモリが8GBあるし、CUIで運用する予定なのでswapは作らなかった。

パーティションを作成し、/mntにマウント。

mkfs.ext4 /dev/sda1
mount /dev/sda1 /mnt

基本システムをインストール。

pacstrap /mnt base linux linux-firmware

fstabファイルに/mntにマウントしたディスクの情報を書き込む。

genfstab -U /mnt >> /mnt/etc/fstab

作った環境にrootで入る。

arch-chroot /mnt

UTCからlocaltimeに変更。

ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

JSTになっていることを確認。

date

おまじない。

hwclock --systohc

/etc/locale.genを編集するためにテキストエディタをインストール。今回はnanoを使用。

pacman -S nano
nano /etc/locale.gen

Ctrl+qで検索en_US
#en_US.UTF-8 UTF-8の先頭の#を[delete]で削除
Ctrl+qで検索ja_JP
#ja_JP.UTF-8 UTF-8の先頭の#を[delete]で削除
Ctrl+xで保存。y [Enter]

ロケールを作成。

locale-gen

デフォルトは英語にするので以下を指定

echo LANG=en_US.UTF-8 >> /etc/locale.conf

キーボードは日本語配列なので以下を指定

echo KEYMAP=jp106 >> /etc/vconsole.conf

ホスト名を自分の好きなのに決める

echo <hostname> >> /etc/hostname

ネットワークはwifidhcpにするので以下のソフトウェアをインストール。

pacman -S dhcpcd wpa_supplicant

起動用のカーネルイメージなどを作成。

mkinitcpio -P

rootユーザのパスワードを指定。いつも使うユーザを作成するのは後で。

passwd

今回はBIOS起動なので、ブートローダは無難なgrubをインストール。

pacman -S grub
grub-install --target=i386-pc /dev/sda

なんかエラーメッセージが出たらディスクがGPTになっているので最初からやり直し。普通は「Installation finished」になる。

grub.cfgファイルを作成する。

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

chrootを抜ける。

exit

マウントを解除して再起動。

umount -R /mnt
reboot

USBメモリを抜いて本体から起動させる。

ログイン画面がでたらrootでログインする。

wpa_passphraseで無線LAN接続の設定を作る。

wpa_passphrase MYSSID passphrase > /etc/wpa_supplicant/wpa_supplicant.conf

インターフェイスを確認

ip addr

接続

wpa_supplicant -B -i wlp2s0 -c /etc/wpa_supplicant/wpa_supplicant.conf
dhcpcd wlp2s0

これでネットワークにつながる。
起動時に自動で接続するため以下のように指定する。

mv /etc/wpa_supplicant/wpa_supplicant.conf /etc/wpa_supplicant/wpa_supplicant-wlp2s0.conf
systemctl enable wpa_supplicant@wlp2s0
systemctl enable dhcpcd@wlp2s0

いつも使うユーザを作成する。

useradd -m <username>

ここで指定するusernameはログインするときの名前になるので注意。

パスワードを設定。

passwd <username>

いつも使うユーザでsudoできるようにする。

pacman -S sudo vi

/etc/sudoersファイルを編集する。

visudo

viというエディタを使うのでnanoとは操作が違う。
「root ALL=(ALL) ALL」の次の行に以下を挿入する。カーソルキーで移動して「i」で挿入モードへ。

<username> ALL=(ALL) ALL

挿入モードから抜けるときは「Esc」キーを押す。
保存は「:wq」で。

試しに作ったユーザになってみる。

su - <username>

以下のコマンドを打つと最初の注意文が表示されてパスワード入力になる。

sudo -i

作ったユーザのパスワードを入力してエラーが出なければOK。
再起動してみる。

reboot

作ったユーザでログインできればOK。ネットワークも自動で接続しているはず。
最低限のシステムはこんな感じで作れる。日本語環境はまた別エントリで。

2021/05/13追記:「systemctl enable wpa_supplicant@wlp2s0」が正しいので修正。pが1つ抜けていた。