#author("2023-09-14T13:20:12+00:00","","")
#author("2023-12-20T09:44:02+00:00","","")
*Arch Linux メモ - Install [#r0a1545d]

はい、インストールのメモです。基本的なことしかかいてないし、下手するとぐぐったほうが最適解あるかもね。

**自動インストール [#t703a597]

下記については手動インストールのメモです。

 # archinstall

これがisoイメージから起動できる場合、このほうが早い可能性があります。

**手動インストールメモ [#c491ece3]

-EFI / BIOS / 暗号化有無に応じて統合して書き換え中です。
-旧記述 : [[EFI メモ (ふるいの)>Tips/Lin/Arch/InstEFI]]

**ISOイメージ入手 [#t997381f]

[[ArchWikiのインストールガイド:https://wiki.archlinux.jp/index.php/%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%82%AC%E3%82%A4%E3%83%89]] から最新のISOイメージをダウンロードしよう。
CD/DVDのイメージは月初に作られてるので、たとえば2022年8月なら 2022.08.01 といったナンバリングのイメージがあるはず。

**仮想環境/実機の設定 [#lb5ab3b0]

仮想環境なら、DVD仮想ドライブにISOファイルを指定すればOK。実機なら、USBメモリ(ないしSDカード等のメディア)に焼き付けるのが適当でしょう。なんらかの Linux 環境 (もちろん Arch でもいいし、Ubuntu Debian 等でもよいです)で下記コマンドを実行し、USBメモリをブータブルにしましょう。

 $ sudo dd bs=4M if=archlinux-202X.XX.01-x86_64.iso of=/dev/sdx conv=fsync oflag=direct status=progress

***仮想PCでEFI/BIOSブート環境 [#r6a1d58d]

-EFIにしたい場合、 VirtualBoxなら「システム」-「EFIを有効化」、VMware系ならvmxファイルに firmware="efi" なおまじない追加が必要です。
--VMwareの場合、みだりにEFIの設定保存ファイルを消さないようにしましょう。OSが起動しなくなります。
-仮想PCの場合、メモリは1~2GB程度とっておきましょう。768MB などの適当な数字でメモリがたりない場合、インストールイメージの起動に失敗します。

**ArchISO ブート [#hff01fc5]

設定が最小限すんだら、ISOイメージを起動しましょう。

 # passwd root
 (パスワードを設定)
 # ip addr
 (IPv4アドレスがでてくるのでメモ)

ここまできたら、DVDのブートイメージに外部からsshでアクセスできるので、ssh でアクセスするなりなんなり。

***事前設定 [#x8ed5e76]

 # loadkeys jp106
 (日本語キー設定 実機用 / ssh の場合は特に不要)
 # timedatectl set-ntp true; timedatectl set-timezone Asia/Tokyo
 (NTP同期スタート + EFI/BIOS時刻を日本時間準拠に)
 # timedatectl status
 (日本時間設定とNTP同期ONの確認)

***パーティション確保 [#k9b481b0]

 # fdisk -l
 (ディスク構成確認: 仮想 PC の場合、 /dev/sda が手つかずであるはず)

-設計的に、sda (80GB程度?) で sda1 を boot (512MB FAT)、sda2 を root (64GB ext4 / )にします。実機などでSSD/HDDのサイズが違う場合は、512MB程度ブート、残り全部 / って感じで考えます。
--2TBオーバーのディスクの場合、fdisk コマンドは使えません。GUIのつかえるLinuxブートイメージを用意して、gparted でパーティション確保すべきです。


-BIOSの場合:DOS/MBR構成になります。(オー コマンドで DOS パーティションになります)
 # fdisk /dev/sda
 Command (m for help): o
 Created a new DOS disklabel with disk identifier 0xdeadbeef.
 
 Command (m for help): n
 Partition type
    p   primary (0 primary, 0 extended, 4 free)
    e   extended (container for logical partitions)
 Select (default p):
 
 Using default response p.
 Partition number (1-4, default 1):
 First sector (2048-167772159, default 2048):
 Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-167772159, default 167772159): +1G
 
 Created a new partition 1 of type 'Linux' and of size 512 MiB.
 
 Command (m for help): t
 Hex code or alias (type L to list all): 0c
 Changed type of partition 'Linux' to 'W95 FAT32 (LBA)'.
 
 Command (m for help): n
 Select (default p): p
 Partition number (2-4, default 2):
 First sector (1050624-167772159, default 1050624):
 Last sector, +/-sectors or +/-size{K,M,G,T,P} (1050624-167772159, default 167772159): +64G
 
 Created a new partition 2 of type 'Linux' and of size 64 GiB.
 
 Command (m for help): w
-EFI構成の場合、gptになります。
--fdiskの場合、G (ジーコマンド)でgptになります。(fdisk でも作業できますが gdisk 推奨です)
 # gdisk /dev/sda
 GPT fdisk (gdisk) version 1.0.9.1
 
 Partition table scan:
   MBR: not present
   BSD: not present
   APM: not present
   GPT: not present
 
 Creating new GPT entries in memory.
 
 Command (? for help): o
 This option deletes all partitions and creates a new protective MBR.
 Proceed? (Y/N): y
 
 新規パーティション作成 パーティションナンバー1~128の入力を促されるが、1=BOOT 2= / でいきます。
 ファーストセクタ2048、ラストセクタ +1G。
 Command (? for help): n
 Partition number (1-128, default 1):
 First sector (34-201326558, default = 2048) or {+-}size{KMGTP}:
 Last sector (2048-201326558, default = 201324543) or {+-}size{KMGTP}:+1G
 Current type is 8300 (Linux filesystem)
 Hex code or GUID (L to show codes, Enter = 8300): ef00
 
 Command (m for help) : n
 新規作成その2。ファーストセクタは既定値、ラストセクタは+63G 
 Command (? for help): n
 Partition number (2-128, default 2):
 First sector (34-201326558, default = 1050624) or {+-}size{KMGTP}:
 Last sector (1050624-201326558, default = 201324543) or {+-}size{KMGTP}: +63G
 Current type is 8300 (Linux filesystem)
 Hex code or GUID (L to show codes, Enter = 8300): (sda2をそのままないし暗号化して全部使うならEnter、lvm2を用いるなら8e00 )
 Changed type of partition to 'Linux filesystem'
 
 Command (? for help): w


***パーティション初期化とマウント [#p538678a]

-暗号化しない場合
 # mkfs.vfat -F32 -n EFI /dev/sda1
 ブートパーティションは FAT32。
 # mkfs.ext4 /dev/sda2
 sda2 は Linux ジャーナリングファイルシステム。
 # mount /dev/sda2 /mnt
 # mkdir -p /mnt/boot
 # mount /dev/sda1 /mnt/boot
 # mount | grep /mnt
 これでマウントは完了。
 # df
-暗号化する場合
 #  cryptsetup -v --cipher aes-xts-plain64 --key-size 512 --hash sha512 --iter-time 5000 --use-random --verify-passphrase luksFormat /dev/sda2
 WARNING!
 ========
 This will overwrite data on /dev/sda2 irrevocably. 
 
 Are you sure? (Type 'yes' in capital letters):
 ( *** YES と「大文字で」入力 *** )
 Enter passphrase for /dev/sda2:
 Verify passphrase:
 Key slot 0 created.
 Command successful.
 
 # cryptsetup open --type luks /dev/sda2 cryptroot
 cryptsetup open --type luks /dev/sda2 cryptroot
 Enter passphrase for /dev/sda2: 
--sda2をそのままファイルシステムにする
 # mkfs.ext4 /dev/mapper/cryptroot
 (sda2 は cryptroot に転写されるのでそこをLinux ジャーナリングファイルシステムで初期化)
 # mkfs.vfat -F32 -n EFI /dev/sda1
 ブートパーティションは FAT32。
 # mount /dev/mapper/cryptroot /mnt
 (sda2 のかわりに暗号化済みのマッピングされたデバイスをマウント)
 # mkdir -p /mnt/boot; mount /dev/sda1 /mnt/boot
 # mount | grep /mnt
 これでマウントは完了。
 # df
--sda2をlvm2を用いて分割する
 LVつくってく (sda2が63GBの場合)
 # pvcreate /dev/mapper/cryptroot
 # vgcreate vg-system /dev/mapper/cryptroot
 # lvcreate --size 48G  vg-system -n root
 # lvcreate --size 4G  vg-system -n swap
 # lvcreate --size 10G  vg-system -n home
 
 ファイルシステム初期化する
 # mkfs.ext4 /dev/vg-system/root; mkfs.ext4 /dev/vg-system/home; mkswap /dev/vg-system/swap; mkfs.vfat -F32 -n EFI /dev/sda1;
 
 マウントしていく。
 # mount /dev/vg-system/root /mnt
 # mkdir -p /mnt/boot; mount /dev/sda1 /mnt/boot
 # mkdir -p /mnt/home; mount /dev/vg-system/home /mnt/home
 # swapon /dev/vg-system/swap
--sda2を暗号化しつつ、起動時に自動解除できるよう鍵ファイルを /boot に埋め込む
---この方法は、パスワード入力をはしょるために有効なだけで、セキュリティとしてはむしろ脆弱になります。
 # dd bs=512 count=4 if=/dev/urandom of=/mnt/etc/luks_keyfile
 # chmod 400 /mnt/etc/luks_keyfile
 # cryptsetup luksAddKey /dev/sda2 /mnt/etc/luks_keyfile
 Enter any existing passphrase: (設定済みパスワードを入力して、キーファイルを登録)

***pacman / pacstrap で基本イメージをいれる [#v089f551]

まずミラーリストを更新。

 # cd /etc/pacman.d/; mv mirrorlist mirrorlist.org; reflector | grep .jp > ./mirrorlist
 # vim ./mirrorlist
 (juniorjpdj.pl 鯖の行を全部削除、.jp ドメインだけにする)

あるいはこっちのほうが適切かも。

 # cd /etc/pacman.d/; mv mirrorlist mirrorlist.org; reflector --country 'Japan' --age 24 --sort rate --save /etc/pacman.d/mirrorlist;
 # vim ./mirrorlist; vim /etc/pacman.conf
 (vimは内容確認のためだけのもの。後者は ColorとかのオプションをONしたいときにコメントアウトを解除する)

mirrorlist の確認が終わったら導入。( カーネルの更新が頻繁にあるので、linux のかわりに linux-lts を指定してもいいかもです)

 # pacstrap /mnt base linux linux-firmware
 Linux本体を最小限だけ /mnt に放り込むおまじない
   + base Archの基本パッケージ
   + Linux Linux コア部分、ブート構成用
   + linux-firmware 一般的なハードウェア関連

***スワップ作成 [#wa377fa5]
lvm2でSwapパーティションがsda2にあるなら省略する。

 # dd if=/dev/zero of=/mnt/swap.img bs=1024 count=8388608 status=progress
 8GiBのダミーファイル swap 用を生成。試験的に1GBにしたいなら下記。
 # dd if=/dev/zero of=/mnt/swap.img bs=1024 count=1048576 status=progress
 
 # chmod 600 /mnt/swap.img; mkswap /mnt/swap.img; swapon /mnt/swap.img; free
 SWAPのパーミッションを適切に設定し、初期化して運用開始

***パーティション構成保存 [#e455d490]
 
 # genfstab -U /mnt >> /mnt/etc/fstab
 /mnt 内部の fstab を適切に設定
 
 # arch-chroot /mnt
 ルートが /mnt になる
 
 # passwd root
 (rootパスワードを設定 : HDD/SSD上のパーティション上で)
 
 # pacman -S grub efibootmgr lvm2 sudo openssh networkmanager nano vi vim dosfstools bash-completion
 最小限の追加ツールをいれる (GRUB : ブート用 efibootmgr : EFIブート用でBIOSなら省略可能  lvm2 : LVM2未使用なら省略可能 sudo/openssh/networkmanager 遠隔アクセス用 nano vi vim はエディタ dosfstools は FAT16or32の初期化等用 bash-completion は補完機能用)

***GRUB設定編集 (暗号化時のみ) [#c81742e5]
 # nano /etc/default/grub
 ( GRUB_CMDLINE_LINUX  を検索、"" の中に...)
    cryptdevice=/dev/sda2:cryptroot     と追記する
 (キーファイルがある場合は、GRUB_CMDLINE_LINUX_DEFAULT 行を置換 (lvm次第では設定を変えないといけない)。ない場合は変更しない)
 GRUB_CMDLINE_LINUX_DEFAULT="quiet cryptdevice=/dev/sda2:cryptroot cryptkey=rootfs:/etc/luks_keyfile root=/dev/mapper/cryptroot"  (sda2の直接暗号化の場合)
 GRUB_CMDLINE_LINUX_DEFAULT="quiet cryptdevice=/dev/sda2:cryptroot cryptkey=rootfs:/etc/luks_keyfile root=/dev/vg-system/root"    (sda2にlvm2をしいている場合)

 # nano /etc/mkinitcpio.conf 
  (この行を)
    HOOKS=(base udev autodetect modconf block filesystems keyboard fsck)
  (こういうふうに追記する。block / filesystems のまんなかに encrypt lvm2 / lvm未使用なら lvm2は省略可能。 consolefont が存在する場合削除しても良い)
    HOOKS=(base udev autodetect modconf block encrypt lvm2 filesystems keyboard fsck)
 # 鍵ファイルがある場合は追記する、ない場合はなにもかかない。
 FILES=(/etc/luks_keyfile)
 
 # mkinitcpio -p linux
 Image generation successful


***GRUBの登録 [#l2ac038f]

-BIOS設定時
 # grub-install --target=i386-pc --recheck /dev/sda
 (MBRにgrub登録)
 # grub-mkconfig -o /boot/grub/grub.cfg
 (grubの設定ファイル書き出し)
-EFI起動時
 # grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=boot
 (EFIにgrub登録)
 # grub-mkconfig -o /boot/grub/grub.cfg
 (grubの設定ファイル書き出し)

***ユーザーを登録 [#n124ac6a]

-とりあえず、asaasa.tk 管理人のゲーミングネームである arqtan としてやってみます。sudo もできるように登録。
 # useradd -m -g users -s /bin/bash arqtan; passwd arqtan
 # groupadd sudo; usermod -G sudo arqtan
 # visudo
 ( %sudo ALL=(ALL) ALL  が # でコメントアウトされてるので有効にする)

-ここの部分は Archisoからできたりできなかったりしますが、できない場合はインストール終了後の再起動してから実施します。

***あとしまつ [#b66a2099]
 # swapoff --all
 # exit
 (chroot 終了)
 # umount /mnt/boot; umount /mnt
 (アンマウント)
-暗号化時のみ
 # cryptsetup close cryptroot
 (暗号ディスクのクローズ)

***リブート [#f0d3af1d]

 # shutdown -r now
 (ISOイメージを終了、HDD/SSDから再起動)

トップ   差分 履歴 リロード   一覧 検索 最終更新   ヘルプ   最終更新のRSS