X220実用化計画(Arch Linuxインストール編)

先日、ThinkPad X220を中古で手に入れました。

ノートPCが足りていないわけではないので完全におもちゃです。

昔はLet's noteをおもちゃにしていたのですが、HDDが2年前にご臨終なさったので、購入に至りました。

ポイントは7段キーボードを搭載しているところですね。

なんとなくスケベだったので欲しくなりました。

それで調べたところ、ラスト7段キーボード機種はX220だったのでこれを買ったというわけですね。

実際に押してみてもスケベな押し心地、スケベな使用感ですよ。

今のThinkPadのキーボードも悪くないけど、むしろ他のノートPCと比べると良いけれど、比較するとやはりX220に軍配が上がりますね。


というわけでX220をおもちゃ兼実用的なマシンにしたいのですが、現在CPUは第2世代i5、RAMは4GBとWindows 10を動かすにはちょっと不満の残る構成です。

Windows 7かXPなら文句なしだったのですが、サポートが終わりやがりましたのでダメです。

しょうがないのでLinuxを入れましょう。

まあ、そもそもWindowsマシンなんかこれ以上増えてもなんにもならないので丁度いいですね。

今回入れるのはArch Linux

Arch Linuxは私のような初心者向きで、なおかつ半分くらい実験機みたいなPCに入れるのには最も適していると言っても過言ではないでしょう。

しかしながら私のような無能は、何度Arch Linuxをインストールしてもインストール方法を覚えません。

何度も同じところでミスをし、何度も最初からやり直し、挙げ句よくわからないけど弄ってたらインストールが終わっているのが常です。

そんな無能世界選手権日本代表の私のために、インストール手順をここに残しておこうと思います。


基本はArchWikiインストールガイドを参照しています。

というかほぼ丸パクなので、まあ流し見する程度のものだと思ってください。


まずはインストールにつかうLiveディスクを作ります。

今回はUSBメモリにLiveイメージをぶち込みましょう。

光学ドライブ狂信者の方はDVDにでも焼いておいてください。

必要なのはLinuxの入ったPCと、Arch Linux公式サイトから落としたISOファイルですね。

本当はLinuxじゃなくてWindowsでも良いんだけれど、なんかよくわからない問題が起きたり起きなかったりすると聞かなくもないので、黙ってLinuxを使います。

USBメモリをPCにぶち込んで、lsblkか何かでUSBの場所だかなんだかを確認してください。

まあ大抵が/dev/sdbでしょう。

ついでにこのとき、USBメモリがマウントされていないことも確認しましょう。

マウントしてるとなんか良くないらしいです(白目)

そして確認したら以下のコマンドをぶち込んでください。

# dd bs=4M if=/path/to/archlinux.iso of=/dev/sdx status=progress && sync

おお…簡単にシンタックスハイライトできてる…

このためだけにLivedoorから逃げてきたんだ(白目)

markdown記法を使う必要があったが許してやろう。

ちなみに/path/to/archlinux.isoの部分は自分がダウンロードしてきたISOファイルのパスを、/dev/sdxの部分は自分が挿したUSBメモリのアレに置き換えましょう。

これで完璧ですね、あとは待つだけです。

問題は何をやってるのかさっぱりわからないことですね。

ddって何してるんだろう…

syncも何してるんだろう…

まあわからないのでUSBメモリに書き込みが終わるまで待ったら引き抜きましょう。

考えてもわからないことは仕方ありません。

どうせこれから先、どれだけ生きていってもあと十数回しか使わないでしょう。

脳死でArchWikiのコマンドをコピペですよ。


さて、次に行きましょう。

次はこのUSBをパソコンにぶち込んでブートさせます。

大体F12押せばブートメニュー的なのが開くので、そこでUSBメモリを選択すればLive版Arch Linuxが起動する…はずです。

僕は失敗したことがないので知りませんが、たまに失敗する人たちがいます。

大抵がWindowsでLiveイメージを書き込んだ愚か者です。

僕の友人もそうでした。

賢い我々はやはりLinuxddです。

というわけでここまでで起動できましたね?

もしも未来の僕がここで躓いたら、諦めてください。

起きたことのない事例に対処するのは不可能です。


じゃあ次に行きますか。

ここからちょっとめんどくさいです。

なにせCLIでの作業ですからね。

頼れるGUIはもういません。

とりあえず最低限インストールする前の準備をしましょう。

まずキーボードの設定をしましょう。

僕は日本語キーボード狂信者なので、X220も当然日本語キーボードです。

というわけで日本語キーボードの設定をロードします。

# loadkeys jp106

この次はArchWikiだと、「起動モードの確認」になっているのですが…

まあUEFIモードで起動してるはずなので無視です。

本当はブートローダーが何だったかで判断できる気がしないでもないのですが、ちょっと怪しい記憶なので忘れましょう。


次にインターネットに接続します。

インターネットに繋がないことにはインストールができません。

ついでにいうと、SSHでデスクトップPCから繋いで作業したいので早くインターネットに繋ぎましょう。

普通だったら有線で繋いでやるだけですべてが解決するのですが、我が家のルーターは地平線の彼方に存在します。

LANケーブルも短小野郎しかないので諦めて無線接続です。

無線接続めんどくせえんだけどなぁ…

とりあえずwifi-menuとシェルにぶち込むのですが…

zsh: command not found: wifi-menu

は?

どうして???

お前いつもこうやって動いてたじゃねえか。

調べたらちょっと前に削除されたらしいですね、うんち。

代わりにiwctlというコマンドを打てとのことです。

しょうがねえなぁ…

# iwctl

打つと対話型プロンプトが立ち上がります。

fdisk系とかpartedとかでも対話型プロンプトがありますが、どうも苦手意識があります。

ただまあArchWiki様がやれとおっしゃっているので従いましょう。

まずはデバイスの名前を調べましょう。

大抵がwlan0なので、当てずっぽうで使っても良いのですが一応です。

[iwd]# device list

はい、wlan0でした。

じゃあ次に周りのアクセスポイントを検索しましょう。

[iwd]# station wlan0 get-networks

なんかたくさんのアクセスポイントが出てきました。

スケベですね。

とりあえず今回接続するアクセスポイントをochinchinlandとしておきましょう。

ここに接続するには以下のコマンドを打てば良いようです。

[iwd]# station wlan0 connect ochinchinland

はい、これでPCはアクセスポイントちゃんとズブズブの関係です。

エッチですね。

Super Special Hなので、SSHで接続する準備をしましょう。

opensshデーモンを動かすために以下のコマンドを打ちます。

# systemctl start sshd

ついでにパスワードも設定します。

# passwd

あとはデスクトップPCの方で

$ ssh root@archiso

と打てば完璧です。

これでノートPCから手を離すことができます。

充電コードがブラブラしてるPCを狭い机の上に置いていると邪魔くせえのでこれで快適です。

あとはシステムクロックを更新しましょうか。

# timedatectl set-ntp true

なんの意味があるかは分かりませんが、まあ時刻があっていないとうまく動かないソフトとかよくあるのでそういうことでしょう(適当)


さあここからが本番ですよ。

次はHDD…ではなくSSDですね

SSDパーティション分けです。

普段はUbuntuのLiveイメージかManjaroのLiveイメージかWindowsで先に分けちゃうのですが、そんな事を言っていてはいつまで経ってもCLIに慣れません。

諦めてgdiskを使いましょう。

というわけでシェルにgdisk /dev/sdaと入力したのですが、なんだかエラーが返ってきました。

要は「MBRだからGPTに変えてこいカス」ということらしいです。

中古で買ったこのPCには腐れWindowsくんが入っていたんですね。

どうやら入れた野郎はMBRがお好きだったようです。

うんち野郎め。

ただそこはさすがのArchWiki先生。

fdiskの項目に変換方法をしっかり書いてくれています(gdiskfdiskの項目に書いています)。

# sgdisk -g /dev/sda

これでいいらしいです。

じゃあ元気にパーティション分けをしていきましょう(白目)

# gdisk /dev/sda

これで対話型プロンプトがまた立ち上がりやがります。

全消去したいので、最小に入力するのはoです。

その後は作りたいパーティションを好きなように作っていきます。

まずはEFIシステムパーティションですね。

新しいパーティションを作るコマンドはnなので、入力しましょう。

First sectorは未入力でEnterを押しちゃいましょう。

First sectorに関してはこれから先ずっとそれでいいです。

Last sectorはサイズを入力しても勝手にうまいことやってくれるので、簡単のためにサイズの方で入力しましょう。

ArchWikiによると「最低 260 MiB」らしいのですが、そのまま 260 MiBにするのはちょっと怖いので、512 MiBにしておきましょうか。

512Mと入力してEnterです。

Hex cord or GUIDはef00と入力すればいいそうです。

よくわからないけどそれでいいでしょう。

この次に作るのはSWAP領域です。

要らないという人もいますが、絶対に要ります(鋼の意志)

大きさは「RAMの2倍!」と習いましたが、このX220は16GBまでRAM増設を行う予定です。

そうなるとSWAP領域を32GBも取る必要があるんですね。

「そんなバカな話があるか、今は4GBだし8GBくらいで十分やろ!」

と思ったんですけど、よく考えたら8GBも必要になるわけもない気がしてきました。

ただまあ一応8GBで作りますか。

気に食わなかったら後でGPartedで小さくしてやりますよ。

(今気づいたのですが、GiBとGBをごっちゃにしてますね。まあ大勢に影響はないので良いでしょう)

nを入力して、Last sectorには8Gと入力しましょう。

Hex cord or GUIDは8200と入力すればいいそうです。

わけが分かりませんがそうします。

そして最後にルートパーティションです。

これはもう簡単です。

僕は何も考えていないので残り容量を全部ここに回せばいいと思っています。

というわけでnを押したらEnterを3回押して終わりです。

そしてそのあとはwを押して書き込んだらゲームセット。

パーティション分けの成功です。

お疲れさまでした。

Arch Linuxインストール1つ目の山場は抜けましたね。


次はさっきの続きっぽいですが、パーティションのフォーマットです。

と言っても今回はデュアルブートでもないし、何ならさっきSSD内のデータは全てぶっ飛ばしたので、大した作業ではありません。

まずはEFIシステムパーティションFAT32でフォーマットします。

FAT32じゃないと動作しないみたいですが、理由はよく分かりません。

# mkfs.fat -F32 /dev/sda1

この次はSWAP領域のフォーマットです。

Ext2でフォーマットしろとずっと習ってきましたが、欠片も理由が分かりません。

なんならこっちに至っては他のファイルシステムにしても動くのかどうかすら知りません。

というふうに記憶していたのですが、どうやらmkswapコマンド1発で作ることができるらしいです。

そうだっけ(痴呆)

まあどっちにしてもやってることが何なのかは理解していないので同じです(白目)

# mkswap /dev/sda2

あとはルートパーティションだけですね。

こっちはExt4でフォーマットしましょう。

Ext3でもいいらしい(?)のですが、まあ4のほうが新しいらしいしどう考えても4でしょう。

新しいと言っても、僕がLinuxを触ったときには、もうExt4が主流だったので不安定ということもないでしょう。

本当はもっと新しいファイルシステムにしても良かったのですが、ちょっと怖いのでここは日和っておきましょう。

# mkfs.ext4 /dev/sda3

これでフォーマット作業は完璧です。

正直パーティション分けに比べたら、これから先の作業は基本ずっと余裕ですからね。

こんなもんでしょう。


正直ここまでは別のディストリビューションのLiveイメージでもできる作業です。

(だからこそ無理してパーティション分けをArchのLiveでやりたくないんだけど)

ただここからはそうではないので、多分ここからが本当の意味でのインストール作業でしょう。

そうは言っても楽ちんです。

まずは今まで作ったパーティションをマウントしていきましょう。

とりあえずまるで必要のないSWAP領域からマウントしていきましょうか。

1つだけちょっとコマンドが違いますしね。

# swapon /dev/sda2

じゃあ次にルートパーティションですね。

# mount /dev/sda3 /mnt

そしてルートパーティションのマウントです。

これは1つ、作らなきゃいけないディレクトリがあるのでそれも込みでコマンドを打ちましょう。

あと作らなきゃいけないディレクトリ(マウントするディレクトリと同じだけど)が/dev/sda3の中なので、絶対にルートパーティションをマウントしてからやりましょう。

# mkdir /mnt/boot
# mount /dev/sda1




次が一番重要な気がしなくもない作業です。

というかもろインストール作業です。

ただ簡単なので楽ちんちんですね。

次のコマンドを打つだけです。

# pacstrap /mnt base linux linux-firmware

ちなみに僕はzenカーネルを使ってみたかったのでlinuxlinux-zenにしています。

おすすめはlinuxlinux-ltsです。

linux-ltsは安定しているからね…

まあ安定を求めている人間がArch Linuxを使うのかは分かりませんが。

そしてfstabの生成です…が、これは本当になんだかわかりません。

多分SSDの番号か何かを使って、マウントポイントをずれないようにしたりするやつだった気がしますが、怪しい記憶なので忘れましょう。

とりあえず次のコマンドを打っておけば死にません。

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

-Uオプションってなんなんでしょうね。

それ以外もわからないからいいや。


ここからは自分がインストールした環境での作業になります。

擬似的に(?)自分の今インストールした環境をルートディレクトリとして動作させるコマンドを打ちましょう。

(死ぬ程適当なことを言っているのでまちがっていたらごめんなさい)

# arch-chroot /mnt

これでうまくいけばシェルがZshからBashになって、設定も空なので貧相な状態になります。

それじゃあ最低限度の初期設定をしていきましょう。

ArchWikiに沿ってタイムゾーンの設定からにしましょうか。

# ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
# hwclock --systohc

hwclockも何してるかわからんな…

まあええやろ。

ローカリゼーションも同じ流れで行きましょう。

ローカリゼーションでは、最初に/etc/locale.genの中身を弄るのですが、テキストエディタが必要です。

最初何入ってるんだったけな…

大体デフォルトでは不親切なクソエディタvivimが入ってるんですよね。

許せねえ…

nanoが入ってたらnanoでも良いのですが、もうめんどくさいので普段使うエディタを入れちゃいましょう。

それじゃあemacsのインストールを…と言いたいのですが、僕は先日クソエディタであるvimに魂を売ったので、neovimをインストールしましょう。

理由としてはvivim系統とちょっと違うので使いたくないというのが1つ。

vimgvimのおまけとして入れたほうが都合がいいのでそうしたいけれど、GUI系のパッケージは後で入れたいと言うのが1つ。

そして、普段はneovimを使っているというのが1つですね。

まあとにかく入れたりましょう。

# pacman -S neovim

そして/etc/locale.genの中身を弄りましょう。

必要なのはen_US.UTF-8 UTF-8ja_JP.UTF-8 UTF-8のアンコメントです。

# nvim /etc/locale.gen

そしてアンコメントしたら、あとはローカリゼーション本番です。

次のコマンドを打ちましょう。

# locale-gen

ついでに2つおまじないをしておきましょう。

# echo Lang=ja_JP.UTF-8 > /etc/locale.conf
# echo KEYMAP=jp106 > /etc/vconsole.conf

本当はja_JP.UTF-8の部分をen_US.UTF-8にしたほうが(フォントとかの関係で)しばらくは都合がいいのですが、後で変え直すのも面倒なので、最初からこっちでいいでしょう。


この後はネットワーク設定らしいですね。

ここはわかりやすそうのですが、正直良くわかっていないのでうんちです。

まずはこのPCにホストネームを付けましょう。

# echo Arch-X220 > /etc/hostname

Arch-X220の部分は適宜好きなホストネームに変えてください。

あとは似たようなことを/etc/hostsにも書きましょう。

127.0.0.1 localhost
::1 localhost
127.0.1.1 Arch-X220.localdomain Arch-X220

この3行目がよくわからん()

これであっているのかもわからん。

とりあえず大勢に影響はないはずなのでこれでいきましょう(諦め)


次はパーフェクトなおまじないです。

何がパーフェクトかというと、何をやっているか1つも分からないというところですね。

信じられないくらい意味不明ですが以下のコマンドを打ちましょう。

# mkinitcpio -P

あとはRootのパスワードを設定しましょう。

# passwd




さて、長かったインストール作業もこれで終了です。

最終作業のブートローダーのインストールと設定です。

そして僕はこの作業が1番嫌いです。

大体インストール失敗の原因はここにあります。

とりあえずブートローダーとその他のパッケージもついでに入れましょう。

# pacman -S grub efibootmgr dhcpcd iwd git intel-ucode bash-completion zsh zsh-completions

Zsh系列とgitbash-completionは入れなくてもいいですが他は必要です。

grubefibootmgrブートローダー系のアレで必要だし、dhcpcdiwdは再起動したときに、速やかにネットに繋ぐために必要です。

とりあえず入れておきましょう。

そして入れたらいよいよ本番、ブートローダーのインストールです。

# grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=Arch_grub

Arch_grubの部分は好きな名前にしましょう。

これでうまくいくはずです。

これでダメなら諦めましょう。

今回はうまくいったので僕は寝ます。

おやすみなさい。