My_Linux_Environment [on Arch Linux](インストール編)
Introduction - ほんの出来心だったんです... -
最近、ラップトップのLinux環境がぶっ飛びました...
(自分がpamいじってrootの権限持ってかれたのが原因です...)
最悪です...(僕はクソ野郎)
まぁ...ぶっ飛んだものはしょうがないので、(pamの修正しても良いのですが、めんどくさいので...)
心機一転!!自分の環境を更新しようと思います。
ついでの記録。
ほんとはAnsibleとかでインストールすらも自動化したいですが、自分の力量と根気がゴミクズなので、普通に手動インストール。
環境
あとはご想像におまかせします。
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がいらないようですね...
こんど検討しますね(追記あるかも...)
あと、フォーマットの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〜ファイルはディスクパーティションや様々なブロックデバイス、リモートファイルをどうやってファイルシステムにマウントするかを記述します。)
以下で/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
パッケージをマイクロコード更新したいのでインストール。
ブートローダをインストールする前準備として、、EFI System Partition を操作するための dosfstools パッケージと、.efiブータブルスタブを作成するためのefibootmgrをインストール※
# pacman -S dosfstools efibootmgr
※:EFI System Partition 〜 FAT32 でフォーマットされた物理パーティション (ディスクのメインのパーティションディスクで、LVM やソフトウェア RAID などとは異なります) でここから UEFI ファームウェアは UEFI ブートローダやアプリケーションを起動します。OS とは独立したパーティションであり、UEFI ブートには必須のパーティションになります。
※:.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編に続く...かも...!
参考:
「はい、僕はゴミクズです。」