/var/log/pabotesu.log

日々の記録

My_Linux_Environment [on Arch Linux](インストール編)

Introduction - ほんの出来心だったんです... -

最近、ラップトップのLinux環境がぶっ飛びました...

(自分がpamいじってrootの権限持ってかれたのが原因です...)

最悪です...(僕はクソ野郎)

まぁ...ぶっ飛んだものはしょうがないので、(pamの修正しても良いのですが、めんどくさいので...)

心機一転!!自分の環境を更新しようと思います。

ついでの記録。

ほんとはAnsibleとかでインストールすらも自動化したいですが、自分の力量と根気がゴミクズなので、普通に手動インストール。

  • 環境

    • ハードウェア:ThinkPad X280 (2018年購入)

      • CPU:intel Core i5-8250U(1.6GHz 6MB,4c8t)
      • RAM:8GB
      • ROM:SSD 512GB(特にメーカー名は書きません)
    • Linuxのディストロ:Arch Linux(ver. 5.4.15)

      • GUI環境:Light DM でi3-wm gaps

      • 他は適当に...

      • エディタはvscodeを使いますがここでは割愛。

      • ドライバ系も基本的には割愛。

あとはご想像におまかせします。

Procedure - ほとんど脳死です... -

1 . インストールメディアの作成、起動

適当にここからjaist.ac.jpなり、ftp.tsukuba.wide.ad.jpのものをダウンロードして、usbに焼きます。

biosのsecurebootはdisableにしておいて、usbぶっ刺して起動!

今回はUEFIモードで設定します。

以下が出力されるので、一番上の「Arch Linux archiso x84_64 UEFI CD」を選択。

Arch Linux archiso x84_64 UEFI CD
UEFI Shell x86_64 v1
UEFI Shell x86_64 v2
EFI Default Loader
Reboot Into Firmware Interface

コマンドプロンプトが起動するので、

# ls /sys/firmware/

apci dmi efi memmap

で「efi」があることを確認。

UEFIモードのインストールが確認できます。

ここで、jisキーボードを使う場合は以下のコマンドで配列を適用

# loadkeys jp106

あと、インターネットに接続できることを確認してください。

# ping -c3 google.com

2 . パーティションの設定

インストール先のディスクを確認しましょう。

# lsblk | grep -v "rom\|loop\|airoot"

NAME            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                     8:0    0    512G  0 disk
└─sda1            8:1    0    512G  0 part

ぼくは、「sda」ですね

こんなかんじでインストール先ディスク「sdX」を確認してください。

このとき、もしディスクにデータが残ってたら、消してしまいましょう。

。。。(僕の場合はめんどくさいので...)

# sgdisk --zap-all /dev/sdX

ここで今回は他のOSとの共存は考えてないです。

windowsは基本的にデスクトップで使うぐらいなので...(あとめんどい...)

パーティション フォーマット 用途 マウントポイント 容量
/dev/sda1 FAT32 UEFI System Partition /boot 512MB
/dev/sda2 swap swap領域 16GB
/dev/sda3 XFS / / 64GB
/dev/sda4 XFS ~/ ~/ REST

swapについててですが今回は脳死でRAM*2です。いろいろ意見はありますが基本的にめんどくさがりなので...

2GB以上だとハイバーネート的にswapがいらないようですね...

こんど検討しますね(追記あるかも...)

参考:パーティショニング - ArchWiki

あと、フォーマットのXFSですが色んな人からいろんなことを言われますが、基本今回は脳死です...

で、以下のようにパーティション割って

# gdisk /dev/sdX

GPT fdisk (gdisk) version 0.8.6

Partition table scan:
  MBR: not present
  BSD: not present
  APM: not present
  GPT: not present

Creating new GPT entries.

Command (? for help): o  (oで、新しいパーティションテーブルを作る)
This option deletes all partitions and creates a new protective MBR.
Proceed? (Y/N): y (yで進む)

Command (? for help): n (nで、新しいパーティションを作る)
Partition number : 1
First sector: (デフォルトで2048から始まるようになっているので、何も入力せずにエンター)
Last sector: +512M
Hex code or GUID: ef00  (UEFI System partition用のパーティションなのでef00にする)

Command (? for help): n
Partition number: 2
First sector: (何も入力せずエンター)
Last sector: +16G
Hex code or GUID: 8200 (swap用は8200)

Command (? for help): n
Partition number: 3
First sector: (何も入力せずエンター)
Last sector: +64G
Hex code or GUID: (何も入力せずエンター、デフォルトが8300)

Command (? for help): n
Partition number: 4
First sector: (何も入力せずエンター)
Last sector: (何も入力せずエンターで、残りの領域すべてを使用)
Hex code or GUID: (何も入力せずエンター)

Command (? for help): w (wで、書き込みに移る)
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed?: y (yで、書き込み実行)
OK; writing new GUID partition table (GPT) to /dev/sda.
The operation has completed successfully.

以下のように、フォーマット。

# mkfs.fat -F32 /dev/sdX1
# mkswap /dev/sdX2
# swapon /dev/sdX2
# mkfs.xfs -m crc=1 /dev/sdX3
# mkfs.xfs -m crc=1 /dev/sdX4

んで、指定のディレクトリをmkdirして、マウント。

# mount /dev/sdX3 /mnt (ルートパーティション(ここではsdX3)を、/mntにマウントする)
# mkdir /mnt/home
# mount /dev/sdX4 /mnt/home
# mkdir /mnt/boot
# mount /dev/sdX1 /mnt/boot

3 . 環境設定

以下で、tsukubaのサーバをサーバの優先度を一番上にして、

# vi /etc/pacman.d/mirrorlist

パッケージをインストール※

# pacstrap /mnt linux base base-devel cryptsetup device-mapper dhcpcd e2fsprogs inetutils jfsutils linux-firmware logrotate lvm2 man-db man-pages mdadm nano netctl perl reiserfsprogs s-nail sysfsutils texinfo usbutils vi xfsprogs

※:(baseパッケージ化に伴ってほとんどのパッケージはいらんようです。)

以下のようでよいそうです。便利ですね♡

# pacstrap /mnt base linux linux-firmware

参考:baseがパッケージ化

fstab※を生成して

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

※:(fstab〜ファイルはディスクパーティションや様々なブロックデバイス、リモートファイルをどうやってファイルシステムにマウントするかを記述します。)

参考:fstab - ArchWiki

以下で/mntの権限整理して

# arch-chroot /mnt /bin/bash

ロケールの設定しましょう。

# vi /etc/locale.gen

↑はen_US.UTF UTF-8とja_JP.UTF UTF-8コメントアウトを解除する。

ロケールを更新

# locale-gen

locale.confを生成します。※

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

※:X(GUI)と日本語フォントをインストールしたら、ja_JP.UTF-8に変更する。

ここで、キーマップも適用しましょう。

# vi /etc/vconsole.conf

タイムゾーンも設定。

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

ホストネーム設定しちゃいましょう。

# echo 任意のホストネーム > /etc/hostname
# vi /etc/hosts

#
# /etc/hosts: static lookup table for host names
#

#  
127.0.0.1 localhost.localdomain localhost 任意のホストネーム 
::1  localhost.localdomain localhost 任意のホストネーム

# End of file

dhcpcdも自動起動しておいて、

systemctl enable dhcpcd.service

↑はNetworkManagerを衝突するので、役割を終えたら「disable」しましょう。(人の勝手)

ルートのパスワードを設定してしまいます。

# passwd

最新のパッケージがほしいので、パッケージのデータベースを更新。

# pacman -Syy

今回はintelのCPU※を使用してるので、以下で

# pacman -S intel-ucode

※:AMDなら「amd-ucode」

パッケージをマイクロコード更新したいのでインストール。

ブートローダをインストールする前準備として、、EFI System Partition を操作するための dosfstools パッケージと、.efiブータブルスタブを作成するためのefibootmgrをインストール※

# pacman -S dosfstools efibootmgr

※:EFI System Partition 〜 FAT32 でフォーマットされた物理パーティション (ディスクのメインのパーティションディスクで、LVM やソフトウェア RAID などとは異なります) でここから UEFI ファームウェアUEFI ブートローダやアプリケーションを起動します。OS とは独立したパーティションであり、UEFI ブートには必須のパーティションになります。

参考:EFI System Partition

※:.efiブータブルスタブ 〜 ブートローダではありませんブートローダとして動作するのはシステムの EFI ファームウェアそれ自体です。efibootmgrは、これを操作するためのツールです。efibootmgr を用いることで、ブートエントリを作成したり順序を変えたり削除したりすることが可能になります。

参考:efibootmgr

ここで、ブートローダをインストール

# pacman -S grub
# grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=arch_grub --recheck

/boot/EFI/bootにもブータブルスタブを作成しておく。

# mkdir /boot/EFI/boot
# cp /boot/EFI/arch_grub/grubx64.efi /boot/EFI/boot/bootx64.efi

grub.cfgを作成

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

んで、環境からログアウトして、アンマウント、再起動しましょう。

# exit
# umount -R /mnt
# reboot

これで、一応Arch Linux自体のインストールは終わり。

再起動後こんな感じになれば、成功です。

Arch Linux バージョン-ARCH (tty1)
さっき設定したホスト名 login:

Afterword

とまぁ...やりましたが、書くのがめんどくさい!

どっかのタイミングででSSH入れてコピペでやるのがミスらないですね。

...GUI編に続く...かも...!

参考:

基本ここ...ほとんど丸パクリ...

「はい、僕はゴミクズです。」