†ブログ†

~限界陰キャの生活~

Raspberry Pi 1 model AにHaiku OSを突っ込もうとした

まえがき

これはmstdn.maud .io Advent Calendar 2018の15日目の記事です。
今回はあっきぃさん( @akkiesoft )にいただいたRaspberry Pi 1 model Aに Haiku OSを入れようとした話です。末代っぽく言えば#haikuinstallbattleです。
昨日はえあいさんでした

Q.それRaspbianで良くない?

A.全くもってその通りです。

そもそもHaiku OSは公式でARMをサポートしていないし、2009年のアルファ版が出てから、3か月程前にやっとbeta版が出たくらいの更新頻度です。 一応こちらにARM用にビルドされたものがありますが、Raspberry Pi 2用です。かなり厳しいです。

でも、でも......

serial experiments lainの玲音ちゃんが使ってたBeOSっぽい何かがすごくかっこよかったから真似してみたい(小並感)

いやあの描写すごくかっこよくないですか??
中学生にしてCommon Lispで記述されたライフゲーム弄ってるんですよ??中二心をくすぐられるに決まっています。少なくとも僕はすごく興奮しました。中学生の時見てたらドハマりしていた事でしょう。しかも物語の始まりとなるサイベリアではサグいTranceが流れています。Shpongleとはちょっと毛色が違いますが、まぁいいでしょう(は?)。
そしてこんな胡乱な事はまず誰もやりません。Advent Calendarみたいな企画でも無いと、生涯取り組むことは無かったでしょう。

f:id:j1nsuke:20181210201701j:plain
投げられるマサカリへの応酬

雑に調べる

まずはラズパイの仕様とかを確認してみましょう初期モデルなのでかなり情報が少ないので、Wikipediaから引っ張ってきました。
* SoC: Broadcom BCM2835
* CPU: ARM1176JZF-S
* GPU: Broadcom VideoCore IV
* RAM: 256MB
* SDカード: 8GB * インターネット: 頂いたときに付いてきた無線LANモジュール(USBに挿すやつ)
そしてHaiku OS betaの最低要件はこちらを見る限り、
+ CPU: Pentium
+ RAM: 256MiB
+ 空き容量: 1.5GiB
とされています。推奨環境としては
+ CPU: Pentium4
+ RAM: 512MB
+ 空き容量: 2GB
のようですが、最低要件は満たしていると見ていいでしょう。
 そしてHaikuリポジトリ

github.com

を見てみると、ReadMe.Compling.mdなる記述があります。題名的にもコンパイルするためのサムシングが書かれていると思うので、開いてみると、コンパイルに必要なソフト一式が開示されているのでそれらをLinuxなりなんなりにインストールしていきます。今回はLinux機を用意するのが面倒だったのでWSL(GNU/Debian)でやります。

インストール

依存するライブラリとかその他諸々をインストールします。
$ sudo apt install git g++ gcc bison flex texinfo autoconf automake gawk nasm wget zip unzip u-boot-tools mtools
で、ReadMe.Compling.mdに書いてある通りに、適当にHaikuのソースとビルドツールを落としてきて.....?あれ?ダウンロードされない?まぁ鯖がヨーロッパっぽいし仕方ないか....と思ったけど5分経ってもダメなので

github.com

からダウンロードしました。中身は同じっぽいし。

hoge@hoge ~/ $ git clone https://github.com/haiku/buildtools

その後、buildtools/jam/に移動し、

hoge@hoge ~/buildtools/jam $ make
hoge@hoge ~/buildtools/jam $ sudo ./jam0 install

ビルドツールのjamをインストールします。
jamをインストールした後は、

Compiling Haiku for Arm | Haiku Project

を参考にしながら、ビルドの設定、ビルドをしていきます。
今回は

hoge@hoge ~/haiku/generated.arm $ ../configure -j4 --build-cross-tools arm ../../buildtools
hoge@hoge ~/haiku/generated.arm $ jam -j4 -q @minimum-mmc

みたいな感じでビルドします。
が、ビルドの設定でコケてしまったようです。どれどれ.......

/home/azalea/haiku/build/scripts/build_cross_tools_gcc4: 221: export: Files/WindowsApps/TheDebianProject.DebianGNULinux_1.1.5.0_x64__76v4gfsz19hv4:/mnt/c/Python37/Scripts:/mnt/c/Python37:/mnt/c/Program: bad variable name

.......あ、デフォルトのWSLではWindows側のPATHも引き継がれるんでした。引き継がれないようにするには、WSLに/etc/wsl.confを作り、そこに

[interop]
appendWindowsPath = false

と書いて再起動した後、../configure -j4 --build-cross-tools arm ../../buildtoolsから再スタートです。

/home/azalea/buildtools/gcc/gcc/lto-compress.c:34:18: fatal error: zlib.h: No such file or directory
 #include <zlib.h>
                  ^
compilation terminated.
Makefile:1101: recipe for target 'lto-compress.o' failed
make[2]: *** [lto-compress.o] Error 1
make[2]: *** Waiting for unfinished jobs....
rm fsf-funding.pod gcov.pod gpl.pod cpp.pod gfdl.pod gcc.pod
make[2]: Leaving directory '/home/azalea/haiku/generated.arm/cross-tools-arm-build/gcc/gcc'
Makefile:4233: recipe for target 'all-gcc' failed
make[1]: *** [all-gcc] Error 2
make[1]: Leaving directory '/home/azalea/haiku/generated.arm/cross-tools-arm-build/gcc'
Makefile:897: recipe for target 'all' failed
make: *** [all] Error 2
ERROR: Building gcc failed.

あ、githubの方を確認したらzlibも必要みたいです。おもいっきりzlib.hが無いと言われてるのでsudo apt install zlibcとか入れてみます。今回もダメだったよ
こうなったらそれっぽいやつを2つほど入れてみます。おりゃ!

$ sudo apt install zlib1g-dev libz3-4
binutils and gcc for cross compilation have been built successfully!
Configured successfully!

YATTA! これでjam -j2 -q @minimum-mmcができるようになりました。

download/icu-4.8.1.1-1-arm.hp  33%[===============>                                  ]   3.15M   414KB/s    eta 20s    fatal: No names found, cannot describe anything.
Error: you are using a Haiku clone without tags, please set
       the revision tag to use (e.g. HAIKU_REVISION=hrev43210)

う....指定ミスのようです。そろそろつらくなってきたのでe.g.で表示されているやつを指定してみます。

discuss.haiku-os.org

同じようなエラーを吐いてくれた方がいるのでやってみましたが......上手く行きません。

別れは突然に

なかなか上手く行かずに悩んでたところ、ふと

Compiling Haiku for Arm | Haiku Project

を見てみると重大な見落としをしていました。 f:id:j1nsuke:20181212012557j:plain
f:id:j1nsuke:20181212012629p:plain

「ARM11って7より大きいし大丈夫やろHAHAHA」とか言ってたらどうやらARM11はARMv6の事を指すみたいで、そもそもコンパイルが出来ない(というよりARMv7ことARM Cortex以上のバージョンでのみコンパイルできる)事に気づく。

無事、今回やろうとした「ラズパイにHaiku OSを入れる」試みは終わりを迎えたのでした。現場からは以上です。

あとがき

この後滅茶苦茶Gentooしようとしましたが、「SDカードでビルドとかするのは寿命縮める」と教えていただいたので「たし蟹......」と考え、素直にNOOBSします。  今までありがとうございました。   Haiku OSが入らなかったのめちゃくちゃ悔しいので機を見てRaspberry Pi 3でも買おうと思います。 明日はhiyukiさんです。