tips:linux:arch:0-install

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
tips:linux:arch:0-install [2025/08/31 02:52] – 削除 - 外部編集 (不明な日付) 127.0.0.1tips:linux:arch:0-install [2025/09/02 19:35] (現在) – [ArchISO ブート] asaasa
行 1: 行 1:
 +====== Arch Linux メモ - Install ======
  
 +はい、インストールのメモです。基本的なことしかかいてないし、下手するとぐぐったほうが最適解あるかもね。
 +
 +===== 事前のおことわり =====
 +下記については手動インストールのメモです。
 +<code bash>
 +archiso# archinstall
 +</code>
 +これがisoイメージから起動できる場合、このほうが早い可能性があります。
 +
 +===== 手動インストール ===== 
 +
 +==== ISOイメージ入手 ====
 +
 +  * [[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|ArchWikiのインストールガイド]] ( [[https://wiki.archlinux.org/title/Installation_guide|英語版リンクはこちら]] ) から最新のISOイメージをダウンロードしよう。 CD/DVDのイメージは月初に作られてるので、たとえば2025年8月なら 2025.08.01 といったナンバリングのイメージがあるはず。
 +
 +=== 個人的に好きなミラー ===
 +
 +  * [[https://ftp.jaist.ac.jp/pub/Linux/ArchLinux/iso/|jaist]] がお気に入り。「北陸先端科学技術大学院大学」だそうな。
 +
 +=== 正当性検査 ===
 +
 +  * Arch Linux 上からならこういうので検査可能です。(iso と同じ場所にある sig ファイルもダウンロードすること)
 +
 +<code bash>
 +$ pacman-key -v archlinux-version-x86_64.iso.sig
 +</code>
 +
 +==== 仮想環境/実機の設定 ====
 +
 +  * 仮想環境なら、DVD仮想ドライブにISOファイルを指定すればOK。実機なら、USBメモリ(ないしSDカード等のメディア)に焼き付けるのが適当でしょう。なんらかの Linux 環境 (もちろん Arch でもいいし、Ubuntu Debian 等でもよいです)で下記コマンドを実行するか KDE/GNOME付属のライタブルツールを使うなどし、USBメモリをブータブルにしましょう。
 +
 +<code bash>
 +$ sudo dd bs=4M if=archlinux-202X.XX.01-x86_64.iso of=/dev/sdx conv=fsync oflag=direct status=progress
 +</code>
 +
 +=== 仮想PCでEFI/BIOSブート環境 ===
 +
 +  * EFIにしたい場合、 VirtualBoxなら「システム」-「EFIを有効化」、VMware系ならvmxファイルに firmware="efi" なおまじない追加が必要です。
 +    * VMwareの場合、みだりにEFIの設定保存ファイルを消さないようにしましょう。OSが起動しなくなります。
 +  * 仮想PCの場合、メモリは1~2GB程度とっておきましょう。768MB などの適当な数字でメモリがたりない場合、インストールイメージの起動に失敗します。
 +    * インストール完了したら512MBでも起動はするようですが多めに越したことはありません。
 +
 +==== ArchISO ブート ====
 +
 +
 +設定が最小限すんだら、ISOイメージを起動しましょう。
 +<code bash>
 +archiso# passwd root
 +archiso# ip a
 +</code>
 +
 +パスワードを設定して IP アドレスをメモします。
 +
 +ここまできたら、DVDのブートイメージに外部からsshでアクセスできるので、ssh でアクセスするなりなんなり。
 +
 +=== 最小限の設定 ===
 +  * キーボードが英語、時間がグリニッジ時刻なので訂正します。
 +
 +<code bash>
 +archiso# loadkeys jp106
 +(日本語キー設定 実機用 / ssh の場合は特に不要)
 +archiso# timedatectl set-ntp true; timedatectl set-timezone Asia/Tokyo; timedatectl status
 +(NTP同期スタート + EFI/BIOS時刻を日本時間準拠に)
 +</code>
 +
 +=== パーティション確保 ===
 +
 +  * ディスクの確認
 +
 +<code bash>
 +archiso# fdisk -l
 +(ディスク構成確認: 仮想 PC の場合、 /dev/sda や /dev/vda 等が手つかずであるはず)
 +</code>
 +
 +  * 考え方 : ディスク (例えばsdaがターゲットとします) があったら、最初のパーティションを FAT32 の EFI に (1GB以上が適当)、残りの sda2 を ext4 のルートパーティションにするのが適当でしょう。
 +
 +== EFI起動/GPTパーティションの場合 ==
 +
 +<code bash>
 +archiso# gdisk /dev/sda
 +Command (? for help): n
 +Partition number (1-128, default 1): 1
 +First sector (34-268435422, default = 2048) or {+-}size{KMGTP}: (Enterだけ)
 +Last sector (2048-268435422, default = 268433407) or {+-}size{KMGTP}: +1G
 +Hex code or GUID (L to show codes, Enter = 8300): ef00
 +
 +Command (? for help): n
 +Partition number (2-128, default 2): 2
 +First sector (34-268435422, default = 2099200) or {+-}size{KMGTP}: (Enterだけ)
 +Last sector (2099200-268435422, default = 268433407) or {+-}size{KMGTP}: (Enterだけ)
 +Hex code or GUID (L to show codes, Enter = 8300): 8300    ※LVMを用いる場合は 8e00 といれること。
 +
 +Command (? for help): w
 +
 +Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
 +PARTITIONS!!
 +
 +Do you want to proceed? (Y/N): Y
 +OK; writing new GUID partition table (GPT) to /dev/sda.
 +The operation has completed successfully.
 +
 +archiso#
 +</code>
 +
 +== BIOS起動/MBRパーティションの場合 ==
 +
 +<code bash>
 +archiso# fdisk /dev/sda
 +Welcome to fdisk (util-linux 2.41.1).
 +Changes will remain in memory only, until you decide to write them.
 +Be careful before using the write command.
 +
 +Device does not contain a recognized partition table.
 +Created a new DOS (MBR) disklabel with disk identifier 0xdddddddd.
 +
 +Command (m for help): o
 +Created a new DOS (MBR) 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): p (以下この部分は省略するが、MBRはHDD/SSD上に最大4パーティションしかもてないことを留意すること)
 +
 +Using default response p.
 +Partition number (1-4, default 1): 1
 +First sector (2048-268435455, default 2048): (Enter)
 +Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-268435455, default 268435455): +1G
 +
 +Created a new partition 1 of type 'Linux' and of size 1 GiB.
 +
 +Command (m for help): t
 +Selected partition 1
 +Hex code or alias (type L to list all): ef
 +hanged type of partition 'Linux' to 'EFI (FAT-12/16/32)'.
 +
 +Command (m for help): n
 +( p 2 というように入力していく)
 +First sector (2099200-268435455, default 2099200): (Enter)
 +Last sector, +/-sectors or +/-size{K,M,G,T,P} (2099200-268435455, default 268435455): (Enter ないし +120G のように明示指示)
 +
 +Created a new partition 2 of type 'Linux' and of size 127 GiB.
 +
 +Command (m for help): t
 +(2 を選んで、もしもLVMにするなら 8e を入力しておく。ベタおきなら 83 のままでよい)
 +
 +Command (m for help): w
 +The partition table has been altered.
 +Calling ioctl() to re-read partition table.
 +Syncing disks.
 +
 +archiso#
 +</code>
 +
 +== 暗号化しない場合・LVM ==
 +<code bash>
 +archiso# pvcreate /dev/sda2
 +// pvs,pvscan,pvdisplay で確認できる。
 +archiso# vgcreate vgarch /dev/sda2
 +// vgs,vgscan,vgdisplay で確認できる。
 +archiso# lvcreate --size 48G  vgarch -n root
 +archiso# lvcreate --size 4G  vgarch -n swap
 +archiso# lvcreate -l 100%FREE vgarch -n home
 +// lvs,lvscan,lvdisplay で確認できる。
 +archiso# mkswap /dev/vgarch/swap
 +//スワップ形成 (lvcreateしてなければ省略可)
 +archiso# mkfs.ext4 /dev/vgarch/root; mkfs.ext4 /dev/vgarch/home; mkfs.vfat -F32 -n EFI /dev/sda1;
 +//マウントを一気に
 +archiso# mount /dev/vgarch/root /mnt; mkdir -p /mnt/boot; mount /dev/sda1 /mnt/boot; mkdir -p /mnt/home; mount /dev/vgarch/home /mnt/home
 +//swapがある場合だけ。
 +archiso# swapon /dev/vgarch/swap
 +archiso# mount | grep /mnt
 +これでマウントは完了。
 +archiso# df
 +ディスクの状況を確認する。
 +</code>
 +
 +== 暗号化する:1.共通実施 ==
 +<code bash>
 +archiso# 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.
 +
 +archiso# cryptsetup open --type luks /dev/sda2 cryptroot
 +cryptsetup open --type luks /dev/sda2 cryptroot
 +Enter passphrase for /dev/sda2: 
 +</code>
 +
 +== 暗号化する:2a.ベタ展開 ==
 +<code bash>
 +archiso# mkfs.ext4 /dev/mapper/cryptroot
 +(sda2 は cryptroot に転写されるのでそこをLinux ジャーナリングファイルシステムで初期化)
 +archiso# mkfs.vfat -F32 -n EFI /dev/sda1
 +ブートパーティションは FAT32。
 +archiso# mount /dev/mapper/cryptroot /mnt; mkdir -p /mnt/boot; mount /dev/sda1 /mnt/boot
 +(sda2 のかわりに暗号化済みのマッピングされたデバイスをマウント)
 +archiso# mount | grep /mnt
 +これでマウントは完了。
 +archiso# df
 +</code>
 +
 +== 暗号化する:2b.暗号化したその中にlvmを設定 ==
 +<code bash>
 +archiso# pvcreate /dev/mapper/cryptroot
 +// pvs,pvscan,pvdisplay で確認できる。
 +archiso# vgcreate vgarch /dev/mapper/cryptroot
 +// vgs,vgscan,vgdisplay で確認できる。
 +archiso# lvcreate ... (以下、sda2 とまったく同じなので省略するw)
 +</code>
 +
 +=== pacman / pacstrap で基本イメージをいれる ===
 +<code bash>
 +archiso# cat /etc/pacman.d/mirrorlist | cat <(curl -s "https://archlinux.org/mirrorlist/?country=JP" | sed -e 's/^#Server/Server/') - > /etc/pacman.d/mirrorlist
 +(jpのサーバー情報をもぎとってきてコメントアウトを自動解除する)
 +archiso# vim /etc/pacman.d/mirrorlist; vim /etc/pacman.conf
 +(設定ファイルを確認。pacman.confに関しては Color のコメントアウト解除するとカラフルになる)
 +archiso# pacstrap /mnt base linux linux-firmware
 +Linux本体を最小限だけ /mnt に放り込むおまじない
 +    * base Archの基本パッケージ
 +    * linux Linux コア部分、ブート構成用 (linux-lts にしてもよき)
 +    * linux-firmware 一般的なハードウェア関連
 +慣れてきたら pacman -S するであろうものは最初に放り込むようになる。例として下記のかんじ。(yay まで一気にいけますよ)
 +通常カーネル archiso# pacstrap /mnt base base-devel linux linux-headers linux-firmware grub os-prober efibootmgr lvm2 sudo openssh networkmanager nano vi vim dosfstools bash-completion git go zsh grml-zsh-config zsh-completions zsh-syntax-highlighting zsh-autosuggestions
 +LTSカーネル  archiso# pacstrap /mnt base base-devel linux-lts linux-lts-headers linux-firmware grub os-prober efibootmgr lvm2 sudo openssh networkmanager nano vi vim dosfstools bash-completion git go zsh grml-zsh-config zsh-completions zsh-syntax-highlighting zsh-autosuggestions
 +</code>
 +   
 +=== パーティション構成保存とか ===
 +
 +<code bash>
 +archiso# genfstab -U /mnt >> /mnt/etc/fstab
 +/mnt 内部の fstab を適切に設定
 +
 +//暗号化ドライブの自動解除設定はここでやる (脆弱になるので注意)
 +archiso# dd bs=512 count=4 if=/dev/urandom of=/mnt/etc/luks_keyfile
 +archiso# chmod 400 /mnt/etc/luks_keyfile
 +archiso# cryptsetup luksAddKey /dev/sda2 /mnt/etc/luks_keyfile
 +Enter any existing passphrase: (設定済みパスワードを入力して、キーファイルを登録)
 +
 +//以下共通実施。
 +archiso# arch-chroot /mnt
 +ルートが /mnt になる
 +chroot# passwd root
 +(rootパスワードを設定 : HDD/SSD上のパーティション上で)
 +chroot# chsh root
 +(root のシェルを変更 bash のままでよければ実行不要 /bin/zsh などにできる)
 +chroot# pacman -S grub efibootmgr lvm2 sudo openssh networkmanager nano vi vim dosfstools bash-completion
 +もしも pacstrap でいれてないのであれば、ここで最小限の追加ツールをいれる efibootmgr : EFIブート用のため BIOS なら省略可能  lvm2 : LVM2未使用なら省略可能
 +//実機なら下記も実施する、仮想PCなら省略してよい
 +intel実機 # pacman -S intel-ucode
 +amd  実機  # pacman -S amd-ucode
 +</code>
 +
 +=== LVM / crypt の反映 ===
 +
 +  * LVM / 暗号化実施してない場合はここは省略可能
 +
 +<code bash>
 +chroot# nano /etc/mkinitcpio.conf 
 +(この行を)
 +  HOOKS=(base udev autodetect modconf block filesystems keyboard fsck)
 +(こういうふうに追記する。block / filesystems のまんなかに encrypt lvm2 / 暗号化してないなら encrypt を、lvm未使用なら lvm2 を省略可能。)
 +  HOOKS=(base udev autodetect modconf block encrypt lvm2 filesystems keyboard fsck)
 +(暗号化の自動解除をしたい場合のみ設定変更する FILES=()を下記に変更)
 +FILES=(/etc/luks_keyfile)
 +
 +通常カーネル chroot# mkinitcpio -p linux
 +LTS カーネル chroot# mkinitcpio -p linux-lts
 +Image generation successful
 +
 +//暗号化してる場合はそれに加えて以下も。
 +chroot# 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/vgarch/root"       (sda2にlvm2をしいている場合)
 +</code>
 +
 +=== ブートローダの登録 ===
 +GRUB例。systemdのやり方もあるけど面倒なのでここでは省略。
 +
 +<code bash>
 +BIOS系 
 +chroot# grub-install --target=i386-pc --recheck /dev/sda
 +
 +EFI 系 
 +chroot# grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=archboot
 +
 +共通実施 
 +chroot# grub-mkconfig -o /boot/grub/grub.cfg
 +</code>
 +
 +rEFInd の場合のみ
 +<code bash>
 +rEFInd系
 +chroot# pacman -S refind; refind-install
 +</code>
 +
 +=== ユーザーを登録 ===
 +  * asaasa , arqtan , yayuser の 3 id を登録 (いずれも sudo 権限ありとする)
 +
 +== sudoグループ作成 (共通) ==
 +<code bash>
 +chroot# groupadd sudo
 +</code>
 +
 +== bash ==
 +
 +<code bash>
 +chroot# useradd -m -g users -s /bin/bash asaasa;  usermod -aG sudo asaasa;  passwd asaasa
 +chroot# useradd -m -g users -s /bin/bash arqtan;  usermod -aG sudo arqtan;  passwd arqtan
 +chroot# useradd -m -g users -s /bin/bash yayuser; usermod -aG sudo yayuser; passwd yayuser
 +</code>
 +
 +== zsh (pacstrap や pacman で事前導入中に限る) ==
 +
 +<code bash>
 +chroot# useradd -m -g users -s /bin/zsh asaasa;  usermod -aG sudo asaasa;  passwd asaasa
 +chroot# useradd -m -g users -s /bin/zsh arqtan;  usermod -aG sudo arqtan;  passwd arqtan
 +chroot# useradd -m -g users -s /bin/zsh yayuser; usermod -aG sudo yayuser; passwd yayuser
 +</code>
 +
 +== sudo権限付与 ==
 +
 +<code bash>
 +chroot# visudo
 +( %sudo ALL=(ALL) ALL  が # でコメントアウトされてるので有効にする)
 +</code>
 +
 +=== あとしまつ ===
 +
 +<code bash>
 +chroot# exit 
 +(または Ctrl+D で「arch-chroot」から抜ける)
 +archiso# shutdown -h now
 +(シャットダウンして終了、DVD/USBを引き抜くなどしてSSD/HDDから起動するようにしてブートしてみよう!)
 +</code>