30日でできる!OS自作入門の環境構築をする
from 30日でできる!OS自作入門
環境
macOS 10.15.2
virtualboxで Ubuntu Desktop 18.04.3 LTSを動かす
GUIがなとQEMUが動かないので https://app.vagrantup.com/ubuntu/boxes/bionic64 は使えない
Windows 10の場合
30日でできる! OS自作入門 | マイナビブックスでイメージをダウンロードする
マウントして中のファイルを取り出す
https://gyazo.com/298b67d231c72aae2cc679070722b2ac
http://hrb.osask.jp/ から「はりぼてOS」アプリ開発対応のtolset(tolset_h)をダウンロードして置換する
tolset_hにprojects/XX_day/helloosXXを入れて実行すればいい(本文と同じ)
macOSの場合
追記:Catalina以降では2020/02/10現在動かすことができません
32 ビット App と macOS High Sierra 10.13.4 以降の互換性 - Apple サポート
macOS Catalina 以降では、32 ビットの App は macOS との互換性がなくなります。
有志作成のバイナリは32bitなので、つかえません!
過去にmacOSでやった人の記事を見ると、Catalina以前
GitHub - tatsumack/30nichideosjisaku: 『30日でできる! OS自作入門』のmacOS開発環境構築
macOS Mojave 10.14
GitHub - sandai/30nichideosjisaku: 『30日でできる! OS自作入門』川合 秀実氏(著)のMacOSX開発環境を整えることができますがベースらしい
Lion 10.7.4
https://github.com/sandai/30nichideosjisaku や https://github.com/HariboteOS/z_tools_osx を試してみると
code:macOS 10.15.2
z_tools_osx $ ./nask
zsh: bad CPU type in executable: ./nask
https://github.com/HariboteOS/z_tools_osx のコマンドを実行
トラブル
qemuを入れたらtmuxから参照されたdyldが見つからない
Ubuntu(on VM)の場合
追記:最初Ubuntuでやろうとしたが、VM使うと電池の減りが早すぎる&シェルが(カスタマイズしたものと比べて当然)使いづらいのでmacOSに移行した
追記2:Catalinaではできなかったのでまた戻ってきた
追記3:VirtualBox上のLinuxではりぼてOSを動かしてみたらマウスカーソルの入力がハンドリングされずにVMにカーソルがいかなくなってしまった(なぜ?)
Ubuntuの準備
VirtualBoxでUbuntuを動かす
コピペの設定をする
VirtualBoxでホスト⇔ゲスト間でコピペができるようにする。 | 己で解決!泣かぬなら己で鳴こうホトトギス
VirtualBoxのShared folderの設定をする
HariboteOSの関連ファイルをUbuntuにコピー
VirtualBox > Machine
ダウンロードしたファイルを読み込む
https://gyazo.com/4400c20de9a1655991067d5ce41da457
projectsをDesktopとかにコピーしておく
tolset(の改良版)の準備
tolsetとは本書で著者が作成した便利なtool setのこと
2006年の本でgccが古い(執筆が2006年)
Mac OSX におけるはりぼてOSの開発環境を(再)整備した話(2016/12)によると
main関数の宣言が仕様と異なる
三項演算子を代入式の左辺に使用している部分があった
__builtin_stdarg_startがリンクできない(昔のgccの仕様)
一部のプログラムは32bit向けにコンパイルされることが前提となっていた
上の記事の著者hikaliumさんがこれらを解決したツールセットを配布しているのでそれを利用する
MacでcompileできるようにしたAkkie/tolsetをベースに
compile errorを潰して
win/mac/linuxのコマンド際を吸収するharitolを作成している
前提知識
hariboteOSのproject(読者は基本的にこれをコピペしたりして学習していく)の構造は次のようになっている
code:project
01_day
helloos0
!cons_9x.bat
!cons_nt.bat
helloos.img
install.bat
run.bat
TRANS.TBL
helloos1
helloos2
02_day
helloos3
helloos4
helloos5
...
Makefileが出るのはhelloos5から
使い方
「書き換え済みharib27f」と、各環境にあわせた「z_tools」をダウンロードして、z_toolsはz_toolsに名前を変更すれば、あとはharib27f/に移動し、make runするだけです!簡単でしょ?
書き換え済み harib27f https://github.com/HariboteOS/harib27f
haribote_os/harib27f
code:HariboteOS_ROM_DIR
tolset
z_tools
Linux向け https://github.com/HariboteOS/z_tools_linux
Ubuntu環境下でこのコマンドを実行すればよい
Ubuntu側のshared folderに https://github.com/kadoyau/shakyo-os-full-scratch-in-30-days がある状態を仮定
code:/vagrant/haribote_os/harib27f(shared folder)
$ sudo apt update
$ apt install make
HariboteOS/z_tools_linuxのコマンドを叩く
code:/vagrant/haribote_os/harib27f
$ sudo make full