この記事はウェブクルー Advent Calendar 2023 22日目の記事です。
昨日は @kalzit さんの「Effectの紹介」でした。
はじめに
去年、自宅ThinkPadにArch Linuxを導入してから1年以上経ちました。最近、不用意にブートローダーをいじったせいでArch Linuxが起動できなくなったことがあったので、備忘録として残します。
Arch Linuxとは
公式サイトから引用させていただきました。
Linuxのディストリビューションの1種でシンプルという点に重きが置かれています。
Arch Linux は、x86_64 向けに独自に開発された、あらゆる用途に対応できる万能 GNU/Linux ディストリビューションです。Arch はローリングリリースモデルをベースとしており、常に最先端であるように努め、ほとんどのソフトウェアは最新の安定バージョンが提供されます。Arch は最小限の基本システムの状態でインストールされ、ユーザー自身が、ユーザーの理想とする環境のために必要なものだけをインストールして構築することができます。
ブートローダーとは
最近、ChatGPTに課金したので聞いてみました。
ブートローダーは、コンピューターの起動時にオペレーティングシステム(OS)をメモリにロードするための小さなソフトウェアプログラムです。コンピューターの電源が入ると、ブートローダーが動作を開始し、ストレージデバイス(ハードドライブやSSDなど)に保存されているOSを見つけてメモリに読み込みます。これにより、OSが起動し、コンピューターを使用することができるようになります。ブートローダーはコンピューターの起動プロセスの最初のステップであり、システムが正常に動作するために非常に重要です。
とのことです。
話の流れ
- ログイン時に表示されるエラーを直したい
- ブートローダーの再インストール
- USBに最新のISOをインストール
- USBを使ってThinkPadでArch Linuxを起動する
- ThinkPadのSSDにマウントしてブートローダーの設定変更
- 直った!!
1. ログイン時に表示されるエラーを直したい
Arch Linuxのログイン画面で数秒間ログインせずに放置していると以下エラーがでます。
Invalid ELF header magic: != △ELF
このエラーは放置しても特に問題なくログインできるので普段は放置していましたが、ふとこれ邪魔だなと思い直そうとしたのがこの話の始まりです。
2. ブートローダーの再インストール
このエラーを修正しようとして調べていて、利用していたGRUBというブートローダーのせいではという情報がでてきたので再インストールをしました。
これのせいで既存のブートローダーの設定が上書き?されてしまい、ThinkPadの電源を落とした後に起動させようと電源ボタンを押してもOSが起動せずにThinkPadのBIOSに飛ぶようになってしまいました。。
3. USBに最新のISOをインストール
ThinkPadのBIOSでOS起動ができないか色々といじって頑張りましたが、無理でした。
こういうときはインストールメディアを用意する必要があるので、バッテリーが死んでいてほぼ使っていないMacBookを押入れから出してUSBにArch LinuxのISOをインストールしました。
やり方は以下記事を参考にすればできます。
4. USBを使ってThinkPadでArch Linuxを起動する
3.で用意したUSBをThinkPadにぶっ刺してBIOSで起動するArch Linuxを選択します。
そうすると、でかいビープ音とともにOSが起動します。
このときにThinkPadのセキュアブーストを無効化しました。これをし忘れると永遠に起動してくれません。
5. ThinkPadのSSDにマウントしてブートローダーの設定変更
OSが起動できたらあとはインストールガイドに沿って作業を進めました。
パーティションはすでにあるやつを使いたかったのでスキップして、すでにあるパーティションにマウントをしてThinkPadのSSDに入り込みました。
ここまで作業をしてようやくブートローダーの設定変更ができるようになります。
ブートローダーにはGRUBを使っていましたが、今回はsystemd-bootに変更しました。
GRUBのせいでログイン画面のエラーになっているかもしれないということがあったのとsystemd-bootの方がシンプルでsystemdと一緒に最初に入ってくるらしいのでこちらを選択しました。
あとはsystemd-bootの設定を公式サイトに沿ってやりました。
6. 直った!!
ブートローダーの設定が終わったら、ThinkPadのSSDをアンマウントしてThinkPadを再起動させました。
起動時にブートローダーが正常に動作したおかげで、USBがなくてもOSが起動できるようになりました!!
ただ、ログイン画面で発生していたエラーはそのままでした。。ブートローダーが悪さをしていたわけではなさそう、、どなたか詳しい方いれば教えていただきたいです。。
おわりに
話の流れをまとめて書いたら各作業をさくさく進められたみたいに思えますが、かなり色々とはまりました。。
自分が低レイヤに対する知識が薄いのと久しぶりにBIOSとかの操作をしたのでまったく覚えてなくて結構時間が溶けました。。
普段はWEBアプリに関連した仕事をしていますが、OSとかにも強くなりたい。。
明日は、@ee4839 さんの投稿です。よろしくお願いします。