今回はLinuxのお話です。

筆者の手持ちのThinkPadのX240にArchLinuxをインストールしました。

前回はEeePCにArchLinux32をインストールする方法を紹介しましたが、
今回はx86_64版のArchLinuxのインストール方法についての紹介となります。

ポイントとして前回との手順の差異としては以下3点となります。
・EFIパーティションの作成
・EFIのマウント
・grubコマンド実行時のオプション追加

尚、デスクトップLinuxとしては使うには俄然GarudaLinuxが最強だと思いますので、
今回はThinkPad X240にArchLinuxをWEBサーバ用途として構築していきます。

ちなみに現在の本ブログサーバはThinkPad X121e(Ubuntu21.10)で稼働していますが、
これをゆくゆくはThinkPad X240(ArchLinux)に移行していこうと思います。


インストール手順

今回も基本的にはArchLinuxのサイトの手順通りに実施しています。
そのため本記事を参考にされる場は、まずは本家の手順を参照して、
おさらい程度に本ブログの手順を確認してもらう方がいいと思います。

特に公式の手順では説明が不足する箇所もあります。
そのあたりは筆者が実施した手順を記載しておきますので
参考にしていただければと思います。

OSイメージの取得、USBメモリへの書き込みについては省略します。


USBメモリ起動後の手順

USBメモリの起動後、まずは日本語キーボードの設定変更をします。
最初のままだとUSキーボード設定になっています。
日本語キーボードとして認識をさせるために以下コマンドを入力します。

ここも前回と同様で以下となります。

# loadkeys jp106

次にネットワークの接続確認を行います。

# ping www.google.com

※参考までにここで補足。
ケーブル接触不良か、何かのタイミング悪くて、ネットワークにつながらず、
「dhcpcd」コマンドを実行したところ、接続できました。

PCの時刻が数分、数秒ズレてる場合もありますので、
タイムサーバに時刻を合わせておきます。

# timedatectl set-ntp true

1)パーティション作成

前回は「fdisk」コマンドでしたが、今回は「gdisk」コマンドを使います。

対象ディスク

対象ディスクは「/dev/sda」となります。(ThinkPad X240のSSD)

インストール対象のディスクにパーティションを作成します。

パーティションの設計

パーティションの設計としては以下としました。

1)EFI(200MB)
2)Linux領域(残り全部)
3)swap(10GB)

gdiskコマンドの実行

 # gdisk /dev/sda

上記実行後、SSD上に旧環境が残っている場合削除しましょう。
「d」コマンドで番号を指定して削除します。

新規領域作成は「n」コマンドで作成していきます。

物理メモリが8Gのためスワップ領域は10Gとしました。
残りをデータ領域に割り当てました。

よって、/dev/sda1を+200M
/dev/sda3に+10G
/dev/sda2は残り容量割り当て。

パーティションの種別は16進数での指定となります。

それぞれ以下を設定しました。

EFIは「EF00」
Linux領域は「8300」
swap領域は「8200」

gdiskの「p」コマンドで見ると以下

Number  Start (sector)    End (sector)  Size       Code  Name
   1              40          409600   200.0 MiB   EF00  EFI system partition
   2        20971528       468862094   213.6 GiB   8300  Linux filesystem
   3          409608        20971520   9.8 GiB     8200  Linux swap

gdiskを終了するときはfdisk同様に「w」でパーティションテーブルを書き込み、終了です。
「q」では保存されないのもgdiskでも同じです。


2)パーティションで分割したディスクのフォーマット

今度は以下コマンドでフォーマットを行います。
EFI領域はfat32でフォーマットとなります。
他は前回同様です。

# mkfs.fat -F32 /dev/sda1
# mkfs.ext4 /dev/sda2
# mkswap /dev/sda3

スワップ領域も合わせて行いましょう。


3)フォーマットしたディスクのマウント

今度はマウントしていきましょう。
以下コマンドでマウントします。

# mount /dev/sda2 /mnt

そして前回との違いの部分です。
EFI領域もbootディレクトリを作成してマウントします。

# mkdir /mnt/boot
# mount /dev/sda2 /mnt

スワップ領域もマウントします。

# swapon /dev/sda3

4)必要なアプリケーションをインストールする

マウントが終わったら、アプリを追加していきます。

最初はネットワークに接続できませんので、
この時点でネットワーク設定に必要なアプリをインストールした方が良いです。

あとで再度USBメモリ経由で起動しないとならなくなります。

まずネットワーク設定に必要なNetworkManagerは必ずいれておきましょう。

筆者は以下の追加アプリケーションを最初に含めました。

vim,which,git,networkmanager,ifplugd,dhcpcd,openssh,cronie,syslog-ng,sudo,python3,gcc,make,grub

以下コマンドでインストールします。スペースを開けて並べて追加します。

# pacstrap /mnt base linux linux-firmware vim which git networkmanager ifplugd dhcpcd openssh cronie syslog-ng sudo python3 gcc make grub

上記実施後にさらに追加したい場合は以下のようにする。

# pacstrap /mnt wget dosfstools efibootmgr inetutils

5)/etc/fstabを作成する

以下を実行して/etc/fstabを作成します。

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

6)いよいよArchLinuxに入る

上記が終わったらchrootします。

# arch-chroot /mnt

タイムゾーン設定、ハードウェアの時刻も同期を取ります。
OSをデュアルブートしている場合は、時刻がズレるため、その防止策です。

以下コマンド実行を行います。

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

7)設定のためにエディタを使えるようにします。

筆者はviユーザなので、上記4)の必要なアプリケーションインストール時に「vim」 をインストールしました。
vimコマンドではなくviコマンドとして使いたいので、以下のコマンドで「vi」にリンクを張りります。

# ln -s /usr/bin/vim /usr/bin/vi

8)各種設定を行います。

ローカリゼーション

ローカリゼーションを行います。
以下コマンドでファイルを編集します。

# vi /etc/locale.gen

以下を探してコメントアウトします。
viでは「/」で検索ワードを入れると検索できます。
先頭にある「#」を削除します。削除は「x」キーでも可能です。

ja_JP.UTF-8
en_US.UTF-8

上記編集後、locale-genコマンドを実行します。
以下のようになればOKです。

# locale-gen

Generating locales...
  en_US.UTF-8... done
  ja_JP.UTF-8... done
Generation complete.

以下コマンドでファイルを作成し、一行目にLANG=ja_JP.UTF-8を記述します。

# vi /etc/locale.conf

「i」キーで編集モードに入り以下を入力して、「:wq」とします。

LANG=ja_JP.UTF-8

次にコンソールキーマップを設定しておきます。

以下コマンドでファイルを作成し、一行目に「KEYMAP=jp106」を記載します。

# vi /etc/vconsole.conf

「i」キーで編集モードに入り以下を入力して、「:wq」とします。

KEYMAP=jp106

ホスト名を設定

以下コマンドでホスト名、ホストファイルを編集設定します。

# vi /etc/hostname
#記述例
thinkpadx240
# vi /etc/hosts
#記述例
127.0.0.1	localhost
::1		        localhost
127.0.1.1	thinkpadx240.localdomain	thinkpadx240

9)カーネルインストール

OS起動に必要なカーネルを最新にしておきます。

# mkinitcpio -P

10)microcodeをインストール

intel CPUの場合

# pacman -S intel-ucode

AMD CPUの場合

# pacman -S amd-ucode

10)パスワード設定

rootのパスワード設定

次に、rootユーザのパスワードを設定します。
さぁもうあと少しです。

# passwd

一般ユーザを作成、パスワードを設定

以下コマンドで一般ユーザを作成し、パスワードを設定します。

# useradd hogehoge -m -g wheel
# passwd hogehoge

上記の一般ユーザをsudoできるようにしておく

一般ユーザをsudoできるようにしておきましょう。

# visudo
hogehoge ALL=(ALL) ALL

上記の一般ユーザをsudo実行時のパスワードを不要にしておく

sudo をパスワードレスにするには上記visudoの設定で以下を追記しておきます。

hogehoge ALL=(ALL)NOPASSWD: ALL

11)ブートローダを設定する

いよいよ最後です。ブートローダの設定をしましょう。
ここが公式には記載が外部リンクになっていて記載がないので
わかりにくいかと思います。

まずは、アプリケーション追加時に含めていなければ、

arch-chroot後はpacmanが使えるようになっています。
必要なアプリを入れる場合、「pacman -S grub」でインストールが可能です。

ここでの前回との差異としては、target指定、ディレクトリの指定が必要な点です。

# grub-install  --target=x86_64-efi --efi-directory=/boot --bootloader-id=arch_grub 
# grub-mkconfig -o /boot/grub/grub.cfg

ここで念の為、「blkld」をコマンドで叩きます。
表示されたUUIDが、上記のgrub.cfgに含まれているかどうか確認しましょう。

含まれていれば問題ありません。

# blkid
/dev/sda2: UUID="0d03b5f7-8154-4a17-b892-a24216af4e5d" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="Linux filesystem" PARTUUID="e7d2d1f1-9548-4125-a513-286ffb26d8ce"
/dev/sda3: UUID="43975c38-762f-4086-bb07-71109c93af8f" TYPE="swap" PARTLABEL="Linux swap" PARTUUID="79a7aab6-d443-48a1-a60a-ad47145698e1"
/dev/sda1: UUID="CFFA-886C" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="e474e678-111b-4469-9a76-37e9fc9a802a"

fstabをcatで見て確認しましょう

# cat /etc/fstab
# Static information about the filesystems.
# See fstab(5) for details.

# <file system> <dir> <type> <options> <dump> <pass>
# /dev/sda2
UUID=0d03b5f7-8154-4a17-b892-a24216af4e5d	/         	ext4      	rw,relatime	0 1

# /dev/sda1
UUID=CFFA-886C      	/boot     	vfat      	rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro	0 2

# /dev/sda3
UUID=43975c38-762f-4086-bb07-71109c93af8f	none      	swap      	defaults  	0 0

12)再起動をする

exitで抜けます。

# exit

以下コマンドで再起動をします。

# reboot

これで無事にgrubが立ち上がってテキストベースのログイン画面が表示されたら
設定したパスワードでログインしてみましょう。

ログインができれば成功です、お疲れ様でした。

次回は、また引き続き各種設定をしていきます

それでは!