LoginSignup
9
1

ネットワークが繋がらない最小構成のままElixirをインストールして実行してみる〜Arch LinuxをT2チップを備えない古いIntel Macにインストールしようとする日々その6

Last updated at Posted at 2023-12-26

この記事は,Ubuntuはよく使うが,Arch Linuxは初めてという私 @zacky1972 が,まずは手近なT2チップを備えていない古いIntel MacにArch Linuxをインストールして習得していく過程を記録する駄文の6回目です.前回まででMac Pro(Mid 2010)へArch Linuxをインストールできたものの,ネットワークも繋がらない最小構成でした.今回は,この状態でもElixirをインストールして実行することができるのかを検証してみたいと思います.

シリーズ

  1. Arch LinuxをブートできるUSBメモリを用意する
  2. デュアル・ブート環境にするためにパーティションを区切る
  3. いよいよArch Linuxをインストールする
  4. ネットワークの設定を見る(本記事)
  5. Mac Pro (Mid 2010)にArch Linuxをインストールする
  6. ネットワークが繋がらない最小構成のままElixirをインストールして実行してみる(本記事)
  7. ネットワークが繋がらない最小構成のままElixirをasdfではなくソースコードビルドしてインストールする

fdisk -lの結果

Mac Pro (Mid 2010)の2023年12月現在のfdisk -lの結果は次のとおりです.

Device Size Type
/dev/sda1 200M EFI System
/dev/sda2 488.9G Linux filesystem

再度USBメモリブート

  1. Arch Linux live USBメモリをMac Pro(Mid 2010)に挿す
  2. optionキーを押しながら起動する
  3. USBメモリを選択して起動する
  4. mount /dev/sda2 /mnt
  5. arch-chroot /mnt

その後,pacman -Syyu として,パッケージをアップグレードしておきます.

asdf で Arch Linux に Elixir をインストール

pacman -S curl git
cd
git clone https://github.com/asdf-vm/asdf.git $HOME/.asdf --branch v0.13.1
. $HOME/.asdf/asdf.sh

$HOME/.bashrcに次を追記します.

.bashrc
. $HOME/.asdf/asdf.sh
pacman -S base-devel ncurses glu mesa wxwidgets-gtk3 libpng libssh unixodbc libxslt fop

インストールするJDKについて聞かれるので,好きなものを選びます.私はjdk-openjdkを選びました.

asdf plugin add erlang
asdf install erlang latest

ビルドされるまでしばらく待ちます.ビルドは成功したと出ています.

asdf global erlang latest

ここで,インストールされていない旨,エラーが出ました.root権限に対応していないのか?

$HOME/.asdf/installsを見てみると,空です.本来だと,ここにビルドしたファイルが入っていないといけません.

ただし,Erlangのビルド自体は成功したようなので,あとでソースコードインストールを試みます.

続けて,Elixirのインストールを試みます.

pacman -S unzip
asdf plugin add elixir
asdf install elixir latest
asdf global elixir latest
asdf list

Elixirはインストールできました.

Erlangのソースコードビルド

Erlangのダウンロードの公式ページはこちらです.

最新版の26.2.1のソースコードをダウンロードします.

curl -OL https://github.com/erlang/otp/releases/download/OTP-26.2.1/otp_src_26.2.1.tar.gz

続けて展開してディレクトリに入ります.

tar xfz otp_src_26.2.1.tar.gz
cd otp_src_26.2.1

次のようにして,./configureを実行したログを記録します.

./configure > configure.log

ログを眺めます.

lessがなかったので,インストールします.

pacman -S less

ログを眺めた限り,依存ライブラリを一通り認識しているようですので,このまま進めます.

make

ビルドが終わるまで,しばらく放置します.ビルドが終わったら次を実行します.

make install

これで,/usr/local/binにErlangがインストールされました.ライブラリは/usr/local/lib/erlangに入っています.

USBメモリ環境での実行の確認

Elixirの実行を確認します.

iex
1..10 |> Enum.map(& &1 * 10) |> IO.inspect()
Mix.install([:flow])
1..10 |> Flow.from_enumerable() |> Flow.map(& &1 * 10) |> Enum.to_list() |> IO.inspect()

動きました.

SSD環境での実行の確認

再起動して,SSDから起動します.

  1. exit
  2. reboot
  3. rEFIndの起動で,F2またはInsertを2回押して,カーネル・パラメータの編集画面に移行する.
  4. 末尾にreboot=pciを足して,Enterキーを押す.
  5. ユーザーでログインする

あれ,起動すると次のようなエラーが出ますね.

ERROR: Firmware file "b43/ucode16_mimo.fw" not found
ERROR: Firmware file "b43-open/ucode16_mimo.fw" not found
ERROR: You must go to https://wireless.wiki.kernel.org/en/users/Drivers/b43#devicefirmware and download the correct firmware for this driver version. Please carefully read all instructions on this website.

読むと,無線LANに関する設定でした.現在,まだ無線LANを設定していないのですが,ファームウェアが欠落しているということは,無線LANを認識しない恐れがありそうですね.これは将来課題とします.

ともあれ,次のように,root権限になります.

sudo su

先ほどのElixirのテストをしてみます.

iex
1..10 |> Enum.map(& &1 * 10) |> IO.inspect()
Mix.install([:flow])
1..10 |> Flow.from_enumerable() |> Flow.map(& &1 * 10) |> Enum.to_list() |> IO.inspect()

既に読み込んだHexパッケージFlowであれば,実行できました.

一旦 iex を終了して,再度iexを立ち上げ,次のようにしてみました.ここで,NxはUSBメモリブート時に読み込んでいないHexライブラリである点に注意してください.

Nx.install([:nx])

予想通り,ネットワークにつながっていないことに起因するエラーになりました.

まとめ

以上を踏まえると,Arch Linuxの最小構成にあっても,ネットワーク接続の問題のほかは,Arch Linux live USBメモリブートしてElixirをインストールし,その後,再起動してElixirを実行できることがわかりました.

ただし,Erlangはasdfではインストールできず,ソースコードインストールが必要です.Elixirはasdfでインストールできます.

Mix.installによって,Arch Linux live USBメモリブート時にあらかじめHexパッケージを読み込んでおくことが可能だということもわかりました.

9
1
1

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
9
1