2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

その2 buildrootをビルドして起動する〜Arch Linuxを元にT2チップを備えない古いIntel MacをNerves化しようとする日々

Last updated at Posted at 2024-01-05

「Arch Linuxを元にT2チップを備えない古いIntel MacをNerves化しよう」という構想の実現に邁進する駄文シリーズの第2弾です.今回は,素のx86_64 PC向けのbuildrootを古いIntel MacであるMac Pro (Mid 2010) に入れて起動を試みてみました.

シリーズ

  1. Nerves化構想を思い立つ
  2. buildrootをビルドして起動する(本記事)

Nervesの移植方法について

Nervesの移植方法については,下記にドキュメント化されています.

2024年1月現在では次のことを最初に行うと書かれています.

Create a minimal Buildroot defconfig that boots and runs on the board. This doesn't use Nerves at all.

というわけで,Buildrootに取り組んでみます.

buildrootの作成

buildrootの作成ですが,まずは試しなので,適当なUbuntuマシンでサクッと作ってしまいました.後で,ArchLinuxでの構築を試そうと思っています.

まず,下記にあるパッケージを全てインストールしました(必須もオプションも).

そして,下記のGit Repositoryからダウンロードしました.

試したブランチはLatest Stable Releaseである2023.11.xです.

git clone https://gitlab.com/buildroot.org/buildroot.git
cd buildroot
git checkout 2023.11.x

下記を眺めてみました.

make list-defconfigs

多いので,x86_64がないかを探します.

make list-defconfigs | grep x86_64

すると下記がありました.

  mender_x86_64_efi_defconfig         - Build for mender_x86_64_efi
  pc_x86_64_bios_defconfig            - Build for pc_x86_64_bios
  pc_x86_64_efi_defconfig             - Build for pc_x86_64_efi
  qemu_x86_64_defconfig               - Build for qemu_x86_64

たぶん,pc_x86_64_efi_defconfigなんだろうと思います.そこで,次のコマンドを実行します.

make pc_x86_64_efi_defconfig
make menuconfig

ざっと眺めた後,何も変更せずにExitをして,下記コマンドを実行します.

make

かなり待った後で,次のファイルができていることを確認しました.

ls output/images/disk.img

SSDの用意

Mac Pro (Mid 2010) の良いところは,ストレージを着脱しやすい点です.そこで,Mac Pro (Mid 2010)にArch Linuxをインストールするまでで構築したArch Linuxを用いて,前述のdisk.imgを焼きます.

SSHの準備とdisk.imgのコピー

まず,Live USBでブートします.

起動したら,下記コマンドで編集して,PermitRootLogin yesとします.

vim /etc/ssh/sshd_config

下記コマンドでrootのパスワードを設定します.

passwd

下記コマンドで,接続されているネットワークインタフェースのデバイスとMACアドレスを取得します.

ip link

下記コマンドでdhcpcdを起動します.

systemctl start dhcpcd@(ここにネットワークインタフェースのデバイスを入れる).service

下記コマンドでsshdを起動します.

systemctl start sshd.service

disk.imgのある外部のマシンから次のコマンドを実行して,MACアドレスに対応するIPアドレスを得ます.

arp -a

下記のようにして,SSHでログインできることを確かめます.

ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null root@(IPアドレス)

現在だと,USBメモリしかマウントしていないので,Arch LinuxのSSDをマウントします.私の環境だと,下記でマウントできました.

mount /dev/sda2 /mnt

次に,disk.imgのあるディレクトリで,scpを用いてコピーします.

scp -o "StrictHostKeyChecking=no" -o "UserKnownHostsFile=/dev/null" disk.img root@(IPアドレス):/mnt/root/

Arch Linuxの起動とbuildrootのSSDへの書き込み

Mac Pro (Mid 2010) の電源を一度切って,新しいSSDを装着し,Arch Linuxを起動します.

下記のようにrootになります.

sudo su
cd
LANG=C

fdisk -lをすると,下記のようになっていました.

Device Size Type
/dev/sda1 200M EFI System
/dev/sda2 488.9G Apple APFS
/dev/sdb

そこで,次のコマンドをうちます.

dd if=disk.img of=/dev/sdb conv=fsync oflag=direct status=progress

fdisk -lをすると,下記のようになっていました.

Device Size Type
/dev/sda1 200M EFI System
/dev/sda2 488.9G Apple APFS
/dev/sdb1 16M EFI System
/dev/sdb2 120M Linux root (x86)

buildrootの起動

Mac Pro (Mid 2010)を再起動して,optionキーを押し続けて待機します.

すると,下記の写真のように,SSDが2つ見えているじゃないですか!

optionキーを押して起動した時の画面

右キーを押して,Enterキーを押します.

右側のEFI bootを選択

すると,buildrootと銘打ったGRUBが起動してくれます!

buildrootのGRUB

しかし,起動すると,ブートログが途中で止まってしまいます.

buildrootのブートログ

必要なデバイスドライバが足りないとか,何かのデバイスドライバが起動に失敗しているとか,とにかく,素のx86_64のbuildrootの設定では,Intel Macは起動しないということがわかりました.

本記事は,ひとまず,ここまでです.

追記その1

デバイスドライバが足りないのであれば,Arch Linuxのdmesgの出力結果が参考になると思いました.

また,Nerves Project代表のFrank Hunlethさん曰く,

It looks like the root filesystem isn't showing up. I didn't look hard enough to see whether it was due to a device driver missing or the the hard drive that it's looking for having a different name.
When Linux hangs like your screenshot shows, it usually has to something to do with mounting the root filesystem.

ということ,つまり,SSDが想定されているドライブの位置に接続されていないので,ドライブ名違いでrootをマウントできない可能性があることを指摘してくださいました.

Mac Pro (Mid 2010)の特に気に入っている点の1つは,ドライブの交換がとても簡単であるという点です.早速,あとで試してみたいと思います.

追記その2

というわけで,SSDを入れ替えて起動してみました.

SSDを入れ替えた時のbuildrootのブートログ

前より少し進んだかな?

でもブートログはこれ以上進みませんでした.そうすると,デバイスドライバを調整してbuildrootを構築し,さらにSSDを入れ替える,もしくはデバイスドライバの調整に加えてSSDに関する設定をした上でbuildrootを構築する,という感じでしょうか.

つづく

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?