2022年8月29日月曜日

自分好みにArch Linuxを入れる時の手順

 自分好みのArch Linuxのインストール方法です。
自分好みですので余計と判断したものは全て切り捨てています。必要なら各自導入してください。
この記事の作成には下記のサイトを参考にさせていただきました。
Arch Linuxのインストールメモ | minetaro12
Arch Linux インストール
この場でお礼を申し上げます。ありがとうございました。

今回使用するPCにはUEFIモードにてWindowsがインストール済みでArchとのデュアルブート環境を構築するものとします。
一応ちょくちょくUEFIモードだけどシングルブートで作る人向けにも書いてあります。
その場合は上記サイトを参考に先にEFIパーティション等を作って下さい。

また私は先にGPartedでArch用の領域を作っています。多分先に作った方が楽です。パーテイション操作でその辺はちょこっと書いています。GPartedで調べて先に作りましょう。

既にArchのインストーラーから起動しているものと仮定します。


~キーボード設定~
loadkeys jp106



~インターネット設定~
有線LANの場合は多分大丈夫なのでpingまで飛ばして下さい。
無線LANの場合はiwctlを使います。下記を入力します。
iwctl

無線LANのデバイスが分からなければ下記を入力。多分wlan0でしょう。
device list

周囲のWi-Fiをスキャンをします。wlan0ではないデバイスならその都度device listで出てきたものに置き換えて下さい。
station wlan0 scan

スキャンしたSSIDを表示。
station wlan0 get-networks

接続。SSID名は繋ぎたいWi-FiのSSIDに置き換えて下さい。
station wlan0 connect <SSID名> 

例:SSIDがarchwifi0001の場合
station wlan0 connect archwifi0001

パスコードを入力後にEnter。接続成功の場合は何も起こりません。
exitを入力してEnterでiwctlを出ます。

正しく繋がっているか確認。下記を入力。
ping archlinux.jp

何回か繰り返して大丈夫そうならCtrl+Cを押して抜けて下さい。



~パーティション~
詳細は省きます。各自GPartedやBIOSならfdisk、UEFIならgdiskを使って作って下さい。
私はGPartedで先に作りました。その方がfdiskやgdiskを使わなくても楽に作れるので。

ちなみにGPartedもfdiskもgdiskもですが、操作を間違えるとWindowsが起動しなくなります。
特にリカバリパーティション等は消すと難儀なことになります。
なのでできるだけ先にリカバリDVDやUSBを作りましょう。

もしGPartedを使う場合の使い方は公式よりlive CDのISOをダウンロード後にUSB等に焼いて起動。
最初のCDが並ぶ画面はそのままEnter。KeyMapがどうのこうのという青画面もEnter。
次の言語選択はJapanなので15を入力してEnter。次は0を入力してEnter。
GPartedが起動したら適当なパーティションをリサイズして領域作成。
この際、必ずWindowsパーティションの後ろに作って下さい。
作成できたらext4でフォーマット。その際にラベルを付けておくと見分けがついて楽なので「Arch」とでも入れておきましょう。

今からは下記のパーテイション構成でインストール等を行います。
実際はsdaがmmcblkだったりnvmeだったりします。その都度読み替えて下さい。
/dev/sda1:EFIパーティション
/dev/sda2:Windowsのパーティション
/dev/sda3:arch(ext4でフォーマット済み)
/dev/sda4:Windowsリカバリパーティション

ちなみにシングルブートであればEFIパーティションも必要です。
archのパーテイションを作る前に500MB程の領域を作ってFAT32でフォーマットします。
その際にフラグをbootで設定しておきまししょう。そうしないとEFIパーティションとして使えません。
そうするとsda1にEFIパーテイション、sda2にArchパーテイションとかになるはず。これもまたその都度読み替えてくださいね。

なお、最近のPCならスワップ領域は作りません。もし古いPCで気になる人はスワップ領域も作りましょう。



~ファイルシステムのマウント~
もし既にパーテイション操作をGPartedで行っている人は先にlsblkと打ってパーテイションを確認しましょう。
今回は上記のファイル構成を元にマウントを行います。
mount /dev/sda3 /mnt
mkdir /mnt/boot/efi
mount /dev/sda1 \mnt/boot/efi

もしシングルブートの場合は下のものを入力しましょう。sda1がEFI、sda2がarchのパーテイションとします。
mount /dev/sda1 /mnt
mkdir /mnt/boot
mount /dev/sda2 \mnt/boot



~サーバーのミラーリスト設定~
reflector --sort rate --country Japan --latest 10 --save /etc/pacman.d/mirrorlist



~パッケージのインストール~
pacstrap /mnt base base-devel linux linux-firmware nano dhcpcd

もしここでコケるならマウントかネットの設定がおかしいかもしれません。pingを打つなりマウント状態を確認しましょう。
baseは必須、base-devel、linux、linux-firmwareも入れておいた方が良いです。
あとnanoは後で使いますのでこれも実質必須です。vimがいい人は代わりにvimを入れましょう。
dhcpcdは有線LANは絶対に使わない!無線LANしか無い!って言うなら不要ですが、入れておいた方が後々楽です。
もしここでnew rootとか言われてエラーが出るならISOイメージが最新のものか公式サイトで確認しましょう。
古いならISOを焼き直して最初からやり直しです。その際はトラブル防止の為にarchのパーテイションを再フォーマットしましょう。



~fstabの生成~
genfstab -U /mnt >> /mnt/etc/fstab



~chrootで中に入ろう~
arch-chroot /mnt
何もエラーが出なければ大丈夫。



~タイムゾーン設定~
ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
hwclock --systohc



~ローカリゼーション~
言語設定です。まずはnanoで使う言語を指定します。下記を入力します。
もしpacstrapでnanoを入れなかった人は先にpacman -S nanoと打って入れましょう。
vimの人はnanoの部分をvimに置き換えましょう。
nano /etc/locale.gen

言語がアルファベット順に並んでいるので矢印キーの下を押しながら#en_US.UTF-8 UTF-8の行を探しましょう。
見つけたら先頭に付いている#を消します。
次に同じようにして#ja-JP.UTF-8 UTF-8を探し、同じように#を消します。
終わったらCtrl+Xを押し、Yを押してからEnterを押すと設定が保存されてnanoが閉じます。
次に下記のコマンドを打ちます。
locale-gen

先程#を消したものが2つ出てきたら大丈夫です。
次に下記のコマンドを打ち込みます。これはデフォルトロケールとキーマップを決めるものです。
echo LANG=en_US.UTF-8 > /etc/locale.conf
echo KEYMAP=jp106 > /etc/vconsole.conf

ここではLANGをまだja_JPにしないでください。文字化けを起こして読めなくなります。
またキーマップはキーボードが英字キーボードならその都度替えて下さい。普通の日本語キーならjp106でいいです。



~ホスト名の設定~
echoの後のhostnameの部分は好きな名前に変えて下さい。
自分のPCのシリーズ名(ThinkPadとかLavie)とか。
echo hostname > /etc/hostname



~rootパスワードの設定~
passwd

パスワード入力中は何も表示されませんがそれが正常です。焦らず入力して下さい。
再度パスワードを入力して問題無ければ大丈夫です。パスが違うよ!って言われたらもう一度打ちましょう。



~無線LANの設定~
今はiwctlで最初に設定したので繋がっていますが、再起動後は繋がっていません。
ここを飛ばして再起動をすると、有線LANが繋げる人は最後に書かれていることさえしていればネットに繋がりますが、無線LANの人は無理です。
ここで設定しないと再起動後にネットに繋がらず詰みです。
なので普段は無線LANで繋ぐ人や無線LANでしかネットに繋ぐ方法が無い人は必ずここで設定を済ませて下さい。
ここではiwdを使います。ですが起動時に毎回手動で接続作業を行う必要があるので、後で別のものに変えます。
もしそれが面倒ならnetctlを使います。
ここはお好きな方を使って下さい。両方とも設定方法を書いておきます。私はiwdを使いました。
iwdを使うなら下記を入力していきます。
pacman -S iwd
systemctl enable iwd
systemctl enable systemd-resolved
mkdir /etc/iwd
nano /etc/iwd/main.conf

nanoが開いたら下記を入力して下さい。
[General]
EnableNetworkConfiguration=true

終わったらCtrl+X→Y→Enterで保存しましょう。
再起動後に接続設定を行います。


netctlを使うなら下記を入力していきます。
pacman -S netctl openresolv dhcpcd wpa_supplicant

dhcpcdはpacstrapで入れた人は不要です。
次にサンプルデータをコピーします。
cd /etc/netctl/examples/wirelesss-wpa /etc/netctl/wireless
ip link

ip linkではインターフェイス名を確認します。wlan0とかそういうやつね。
次にプロファイルを編集します。
nano /etc/netctl/wireless

開いたファイルにある以下の部分をそれぞれ編集します。
"Interface"に先程確認したインターフェイス名
"ESSID"にWi-FiのSSID名
"Key"にWi-Fiのパスワード

Ctrl+X→Y→Enterで保存しましょう。
最後に起動時に先程のプロファイルで接続するようにします。
netctl enable wireless

これでOKです。

有線LANの人はdhcpcdが再起動後に有効になるようにしておきましょう。
systemctl enable dhcpcd



~マイクロコードのインストール~
これはお使いのCPUがIntelかAMDかで変わります。CPUの型番を見て判断しましょう。
分かったらどちらかを入力します。
pacman -S intel-ucode
pacman -S amd-ucode



~ブートローダーのインストール~
ここまで来たらもうちょっとです。
今回はUEFIのシングルブートとデュアルブートの両方を書いておきます。BIOSの場合は参考にしたサイトを見て下さい。
まずはUEFIでWindowsとデュアルブートする場合です。下記を入力します。
pacman -S grub efibootmgr
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB
grub-mkconfig -o /boot/grub/grub.cfg

次にUEFIでシングルブートする場合です。下記を入力します。
pacman -S grub efibootmgr
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB
grub-mkconfig -o /boot/grub/grub.cfg

これでF12を押すと起動メニューにGRUBという項目があるのでそこから起動できます。
Windowsを起動したい場合は起動メニューのWindows Boot Managerを選択します。
起動メニューを呼び出すキーがF12かどうかはPCによって変わるので調べて下さい。

もし32bit版UEFIの記事から飛んできた人はx86_64をi386に置き換えて下さい。

何も無ければdone.等が出て終わります。
尚、GRUB上からWindowsを起動できるようにはしていないので、os-proberがどうのこうのって出るかもしれません。
今回は問題ないので無視します。



~再起動~
下記コマンドでchrootから抜け、アンマウントして再起動しましょう。
exit
umount -R /mnt
reboot

USBメモリを抜いて再起動するとGRUBから立ち上がるはずです。

これ以降は別の記事に書きます。ここらで一回お茶でも飲んで休憩しましょう。

32bitなUEFIを持つPCでArchがブートしない時

どうも、華凜です。
UEFIが32bitだけどOSは64bitなPC(ThinkPad 10とか)にArchLinuxを入れたは良いけど、GRUBが立ち上がらずブートしない人が多分これを見ているのでしょう。

ここには私が「ThinkPad 10にArchLinuxを入れる際にGRUBがブートせず、色々試行錯誤して上手くいったもの」を書いています。
なので他の機種で上手く行くかは分かりません。ドが付く程の初心者ですので質問されても分かりません。
それを御理解の上で見てください。


まずはArchの公式サイトよりArchのISOをダウンロードしてUSBメモリに焼きます。自分はRufusでGPTモードのUEFI(CSM無効)で焼きました。
ちなみにMBRで焼いたらカーネルパニックを起こしました。UEFIでブートしているので当たり前ですね。


次は「bootia32.efi」を用意します。ArchのISO内に既にありますが、自分が試した限りではこれは使えませんでした。
ファイルは有志が作って公開している物を使います。以下からダウンロードします。
もしgithubで見つからなければdebianの32bit版netinstイメージ内にある「bootia32.cfg」でも代用できるらしいです。試していないので使えるかは知りません。


次にEFIフォルダを開いて中にあるBOOTフォルダも開き、中に入っている「BOOTIA32.EFIを」ダウンロードした「bootia32.efi」に置き換えます。
ついでに同じフォルダにある「grub.cfg」をデスクトップ等にコピーしましょう。
後で中に記載されている文章を使います。


書き換えたらThinkPad 10に挿してF12を連打、USBから立ち上げましょう。もしF12で起動メニューが出ないなら音量の上を押しつつ電源を入れましょう。BIOSに入れるのでStartupから起動順序を変えればOKです。
ちなみに起動メニューは出るように設定を変えておきましょう。
今回入れるArchのGRUBは、Windows Boot Managerを起動の選択肢に追加していないのでGRUBからは立ち上げできません。
ごにょごにょすれば追加できるらしいですが、それはググってね。


USBから起動すると「GRUB >」で停止していればOKです。


まずはディスクの確認。下記のコマンドを打ちましょう。

ls(小文字でエルとエスです)

そうするとhd0等色々と出てきます。今繋がっているストレージを表示しています。
USBメモリはhd(x)とhd(x).gpt(y)とかで出てきてるはず。(x)や(y)は任意の数字が入ってます。
ここの見分け方?調べるしか無いね!


USBメモリがどの数字か分かったら下記のコマンドを打ちます。0や1は適時置き換えてください。

set root=(hd0,gpt1)

カッコはShift+9or10、イコールは”へ”のキーだぞ。ハイフンの横。管理人はネットで探した。


次のコマンドは先程デスクトップにコピーしたファイルを見ます。
メモ帳やEmEditorで開こう。
Menu entriesの下にmenuentryから始まるものがあるはずです。
そのもう少し下にLinuxとinitrdというのがあるはず、それを入力しましょう。
何も無ければGRUB >しか出ないはずです。


最後は下の文字を入力後にEnterです。

boot

これでarchのインストーラーが立ち上がるはずです。
後は普通にインストールしましょう。

GRUBのインストールまで来たら必ずx86_64と書いてある部分をi386に変えて下さい。変えないと64bit用で構成されて起動しません。



最後に私が入力したコマンドを貼り付けておきます。
2022/08/05のArchのインストーラーを使い、USBメモリがhd0,gpt1だと仮定。
USBメモリ名はRufusで書き込んだ際のもの(ARCH_202208)です。
ご使用の環境に応じてUSBメモリ名やhd、gptの後の数字は変えましょう。
(GRUB >は無視してください。分かりやすいように付けているだけです。)

GRUB >set root=(hd0,gpt1)

GRUB >linux /arch/boot/x86_64/vmlinuz-linux archisobasedir=arch archisolabel=ARCH_202208

GRUB >initrd /arch/boot/intel-ucode.img /arch/boot/amd-ucode.img /arch/boot/x86_64/initramfs-linux.img

GRUB >boot


※2022年12月20日 一部修正

2022年8月28日日曜日

ThinkPad 10とArchLinux

 箇条書きで書いておく。まとめは後日。

bootia32をダウンロード後に/EFI/BOOT内のBOOTIA32と置き換える。

そのまま起動。GRUBが出てきたらlsコマンドでUSBメモリを確認。

パーティションの区切り的にhd0とhd0,gpt1しかないやつがUSBメモリなはず。これはその時毎に確認する。

set root=(hd0,gpt1)で指定をかける(イコールは”へ”のキーを押せ)。

bootia32を置いたフォルダにあるgrub.cfgをEmEditor等で開く。

Menu entriesと書いてある下の方にlinuxとinitrdから始める文字がある。それを丸々パクってGRUBに入力。

最後にbootと入力してEnterでarchが起動する。


コマンドとしてはこんな感じ。

set root=(hd0,gpt1)

linux /arch/boot/x86_64/vmlinuz-linux archisobasedir=arch archisolabel=ARCH_202208

initrd /arch/boot/intel-ucode.img /arch/boot/amd-ucode.img /arch/boot/x86_64/initramfs-linux.img

boot