追記

2020年01月16日 チェーンってあんなふうになるとは.. [長年日記]

_ チェーンってあんなふうになるとは..

自転車

自転車ではげしくこける.
クランクにチェーンがまがって噛む、しかも抜けない...
チェーンカッター探すがみつからず. これどうなおすんだ.

お仕事

周辺のコードが接続できなくて進んでいなかった通信層コーディング
がようやく進みはじめる.
なんというか、作る以前の整備に手間取ると進捗がなくて正直焦る.

uefi

すきま時間ですこしヘッダを作成.
うーむ、こんなのどっかからもってきたいのだけどなぁ.
依存関係とかあるやつだと面倒だし. 厳密な型サイズの保証がえられる
というだけで C++ に移行したい気分になってきた.
C++ の場合の ELF の section とロードの規約とかってどこかないかしら.
朧げにはしっているんだけど..


2020年01月15日 眠い.. [長年日記]

_ 眠い..

生活

どうも睡眠不足. 夜, 寝るには時間がもったいない、とか思いつつ
成果がなにもなくて、遅くなってあせって睡眠薬代わりに酒をのみ、
睡眠時間をけずる、というパターン.
どっかで仕切り直しが必要なのだが、それをやるにも一段落が欲しい、
と思ってしまうのはどうしたもんか.

お仕事

読んでいるかぎりそんなにむずかしくはないと思ったのだが, build
の時間等であまり try&error ができていないのか進捗は激甚
に悪い. どうしたもんか.

飲み

一日コーヒーがぶがぶである意味力押ししているので睡眠不足のはず
だが, 帰宅しても眠れない. 酒のパワーで無理矢理ということで行き付け.
いつもの酉乃屋.
ホッピーx3/日本酒は泉橋のこの時期二種. ちょっといつものペースに
比べて多いのだが, どうもこれでようやく、という感じ.


2020年01月14日 ぽんぽんぺいん。 [長年日記]

_ ぽんぽんぺいん。

お仕事

どうも激烈にお腹の調子が悪い. 何か悪いもの食べたかな、と最近
たべたものを思いかえすが.
睡眠不足と相俟ってへろへろ.
パフォーマンスは悪いのに進捗がよくないので時間押ししているが
あまり結果がでないという最悪のパターン.


2020年01月13日 初詣とか [長年日記]

_ 初詣とか

初詣

ようやく初詣。というか今日を逃すとちょっと次いつ動けるかわからんので
uefi とかいいところだが注連縄飾り収めにいって, 初詣も済ませる.
どうも社務所が閉まる時間に微妙に間にあわなかったぽいので収めるのはまた
ということで初詣だけして帰宅

uefi

もくもくと IF 追加.
なんというか, header 自作めんどい.
filesystem の parser とか elf の loader とか身のあるのをやりたいが
まだちょっと仕様書とかみつつちまちま、という感じ.

読書

ハクメイとミコチ#8
なんというか作者のスタイル変わったのかと思いつつこれはこれでありか.


2020年01月12日 一人もくもく. [長年日記]

_ 一人もくもく.

UEFI

へにゃぺんて氏の同人誌 UEFI を斜めに読んでちょっと知識を補充してから
bootloader まわりの FileSystem parser とか書いていこうか、とおもったら
なんか色々細かいところが違うような.
example の関数ポインタを時前で宣言しているのとか色々変では、と思いながら
efi-gnu の書き方なのか、と思いつつ edk2 を見直すとどうも, UefiMain に
振れないっぽい. Entry を降ってもなぜか build でこけてしまう.
変わりに ShellCEntryLib とかいうところに振られており, main か ShellAppMain
にいっているっぽい. libc 関連のサポートと, edk2-libc で分離されちえる側に
AppPkg がいるのでそういうことなのかも、と思わんでもないが..

読書

"蜘蛛ですが、なにか#12"
kindle で配信されていたのだがようやく読む. web 版が最近更新されていないが基本再構成なので
話はまあ、既視感が強い. 記憶より口語調が強いように感じるがこんなもんか.

UEFI

結局 現行の EDK2 の Hello を参考にしていくか、ということにしたがその前に
実機確認、ということで昨日入手してきた thinkpad に ubntu の bootx64.efi を差し替え
る形でやってみるがどうも出ない. こまった.

お片付け

しようと思いつつ手をつけてさらに汚すという..
本って整理しようとすると読んでしまうのよね.

UEFI

目先を変えて uefi を google 先生に聞いていると, 色々衝撃的なものがひっかかる.
極めつけは https://github.com/hikalium/liumos か.
Makefile を斜めに読むと llvm には subsystem が定義してあって、云々と読める.
ついでに引数でとっているのを見るに, UEFI はおそらく仕様レベルで stack に API
というか ABI というかのアクセサを積んで call してくる、という仕様ではないか
と勝手に仮説を立ててみる.
まあ、ここまでの知見でバイナリそのものは primitive な PE で EFI filesystem
に固有名称で指定されたのを直打ちで叩きにくる、なのでたぶんこれで良いとおもうのだが.

UEFI

UEFI Specification 2.8 sec 2.3 あたりを読むとスタックを規定しての呼出しという
ある種の calling convention が仕様では、という仮説は正しそう.
ということは, SYSTEM_TABLE とかの仕様を, 先頭ポインタを stack +N にして offset
を mapping すれば IF にアクセスできる、というような挙措になると考えられる.
実際いくつかの llvm ベースのコードを見ると, efi.h のでどこがよくわからんが
そのような感じにみえるので正解っぽい.
とりあえず, 依存関係少なそうな netbsd から拝借して適当に minimal example を作成.

UEFI

ちょっと実機の動作実績みつけられなかったが subsystem を参照にした hello world
を作成。
netbsd からの header だとどうも色々最小限しかないのとか依存関係解決するのが面倒
なので腹くくって UEFI specification から作成する.
とりあえずうそっこ definition はって, 必要そうなのをコピー.
build が通る程度に改変する. 細かい厳密性とかは考えないで hello world.
どうやら無事に出るっぽい. 実機がちょっと悩んだが, while で無限待ちさせると表示で
止まったのでたぶん大丈夫.
ようするにまとめとしては, PE/COFF で, stack がある種の calling convention に
のっとている binary を作成しろ、ということに尽きるのだと思う.


2020年01月11日 新年会!? [長年日記]

_ 新年会!?

コーヒー豆

補充. イルガチェフェ, ゴールデンマンデリン, ボリビア アンドレス ウルリ.
アンドレス ウルリは新顔か.
時間が取れそうにないのでちょっと多めに買っておく.

お片付け

雑誌関係とか色々ばっさばっさと.
UNIX MAGAZINE 関係捨てるのは抵抗があるが, DISC版買ってあったので捨てることにする.

たん清

新年会、朝 twitter でたん清さんが席まだある、というつぶやきを見て
急遽いつもの有志で新年会。 去年はめずらしく予約が取れなくて忘年会が
なかったので新年会をやろう、という話をしていたので丁度良い.
ちょっとの OS 話と, 3D プリンタの話でもりあがり.

二次会w

研究室で二次会w 3D プリンタ話の続きとか.
なんというかアイデアが色々で楽しいが, 実現性とかやりたいことを考えると
アイデアで止まりかな.

UEFI

ちょっと環境変わったので別マシンでセットアップ. 改めてみると, BaseTools と VfrCompiler が
toolchain で残りが build 対象の file ということか. 時間があれば分離できるかもしれないが.
https://ja.wikibooks.org/wiki/UEFI%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E6%9B%B8%E3%81%8D%E6%96%B9/Hello_World%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0
見ると, crt0 とライブラリ, lds 関係いじって最後 objcopy で変換なのでそんなに難しいこと
を、というようにも見えないが.
どうも以前動作しない, といっていた Hello.efi は新環境では動作する.
というか machine が変更しただけなので, qemu + OVMF は変わらないはずなのだが...


2020年01月10日 肉は全てを解決する [長年日記]

_ 肉は全てを解決する

日々

ヒューガルデンホワイト常備するようにしたが瓶から直接やってるようじゃ
シャレオツさの欠片もない.
飲み行こうとして出掛けにトラブル. ちょっとかなりイラっときたので肉で
解決. 冷蔵庫に残っていた豚小間やいてビールと無理矢理合わせる.

UEFI

UEFI が PE のローダを兼ねてるとか色々衝撃的なことがわかりはじめている昨今.
まあ冷静に考えればそうなんだろう、というのは分かるんだが... デバッグのやりやすさ
考えると PE->Elf Loader->Elf にしないと嫌だよなぁ, やっぱり.
ちょっと気力が萎えかける.

fgo

とりあえず一年分御布施をする.
何引くが悩んだが, 手薄なアサシン. まさかクレオパトラx2. 一番いらん子
と思ってたのをx2 とか何の嫌がらせだよ. 厄落としにあまってた石でピックアップ
引いて玉藻がでたので良しとする.

お仕事

粛々と Debug 環境作成.
C++ のあまりの進化というか変更ぷりに色々戸惑う.
変化している、とは聞いていたのだが... 本何冊か確保してあるので読まなきゃ.
また積読が...

UEFI

半分くらい誤解していたが, EDK2 は UEFI binary の cross toolchain という
より OVMF firmware + α のコード配布+API+Build 用のスクリプトとか, という
ものっぽい. hello world をこの上で作成というのは要はこの環境の拡張で UEFI
application という形でもともとアプリというか拡張が乗るのでここに、という話
の模様.
とりあえず, 標準の EmulatorPkg を build すると HelloWorld.efi できるっぽい
のだが, qemu の下にもっていっても無反応. なんか dll とかいう文字列つき
ファイルとかもいるので一緒にもっててるがダメっぽい.

UEFI

どうも, osdev-jp とか bare-metal な UEFI App が元にしている AppPkg.
edk2-libc という形で別ブランチに分けられたらしい.
自前で作るにしては設定項目多いし, 適当にコピってやってみたら上手くいかん
のでどうしたもんかと思っていたがなんとかなりそう.
しかし AppPkg/Applications/Python とかあるっぽいのだが.
なんというか, DoNotUse とか書いてあるのも含めて全コピーして Conf を
AppPkg にすると普通にビルドはする.
ただ, x64 のバイナリ作って, qemu に喰わせてみたがどうもうんすんで反応
しない. 一応 PE の binary っぽいのだが..

温泉

ひさしぶりに志楽の湯.
やはりここはいい. ちょっとまったり.

飲み

いつもの飲み屋. 今日は酉乃屋. レバx2/ニラ/エノキ/砂肝/皮 で煮込みとポテサラ.
ホッピーx3 である.
二杯で、と決めていったのだが, 大将酒の盛りが良いので三杯になってしまうのが
御愛嬌.


2020年01月09日 時間が早速狂ってしまった. 午前は直すのと最近の妙な体調の悪さで午前半休 [長年日記]

_ 時間が早速狂ってしまった. 午前は直すのと最近の妙な体調の悪さで午前半休

VM

windows のライセンスは結局, もともと付属していた SSD を発掘して
windows をセットアップ, microsoft アカウントを使用してセットアップすると
どうも勝手に microsoft アカウントに紐付けた形で アカウント-デジタルライセンス-プロダクトキー
と作成してくれるっぽいのでこのプロダクトキーを wmic コマンドで読んで控えて
再度 vm にいれなおしたときに使用する、という間の抜けたことをやる羽目になった.
どうせ増設するというか差し替えるだろう、ということで 128GB の SSD に
していたのでたまたま手元に残っていたのが功を奏した感.
もう, note を買ってきたらそのまま一回もあげないで linux にして最後は
windows のロゴマークをひっぺがして撃墜マークにする、というのは成り立たないらしい.

お仕事

昨日盛大にコードがぶつかってるのが発覚して, 泣きながら直している.
くぅーん.

UEFI

Hello.c が osdev-ja にあるのでとりあえずこれを、と思ったがどうも
記事の日時と edk2 がズレているっぽく, directory とかそのまんまはなさげ.
とりあえず, manual 読みながらなんとなく build. なんというか難しくはないが
めんどい. とりあえず Conf 下をいじって default の EmulateXX を build.
IA32 なので compat とか Vfi? とか build したりする必要があるが, メッセージ
見れば推定がきくので難しくはない.

fgo

なんか課金やめようとおもっていたら沼に落ちた親友Sからひけひけコール.
自分がイリヤ引いたからってw. 沼の同士として引かんといかんかなぁ...
沼に落とした人間の一人だろうし.. 正直型月厨は型月厨でも原作と文字を
愛する人間なのだが...

おうち

なんというか盛大にぶつかったコードとかを直していて日が変わるくらいに帰宅.
ディスポーザとか車検とかいろいろぶつかって正直にっちもさっちも.
ということで飲みにいこうとして更にトラブル. なんというか全てうまくいかない.


2020年01月08日 長時間寝付けない問題はあるがそれでも総睡眠時間がなんとかなってきた. [長年日記]

_ 長時間寝付けない問題はあるがそれでも総睡眠時間がなんとかなってきた.

VM

ライセンスの件. どうもデジタルライセンス->一回 MS アカウントに紐付けると
プロダクトキーが発行される, これを入力しろ、というのが流れのような.
一回も windows 上げないでいきなり linux 入れているのはどうしろと.

UEFI

EDK2 を落してきて build 環境作成.
partition とかはまあ分かるとして, UEFI -> 最初の boot loader の
設定はたぶん NV にいる、という認識なのだがどう設定することになるの
かよくわからん.
とりあえず file system イメージとか作ってみたが EDK2 の中身を見て
正直これで build するのか、と思うとかなり萎えてきた. gnu-efi とか
にいった方が幸せかしら.

お仕事

どうも build 環境壊してしまったぽい. 奇妙な事象に遭遇してしまい
結局再度構築しなおす. うーん起動関連が壊れるようなところではない
と思うので sync 関連の問題だと思うんだが..

おうち

どうもディスポーザ壊れたっぽい. なんというかモノがモノだけに密閉されて
いて構造もわからんがそれ以前に分解できるもんなのかも分からん.
あきらめてさっさと業者の人にお願いかな...


2020年01月07日 どうも睡眠時間がずれているのか長時間寝れていない. [長年日記]

_ どうも睡眠時間がずれているのか長時間寝れていない.

ender-3

ABL (Automatic Bed Leveling) の一環で blTouch を買ったが取り付け.
どうもネジ山がなめてしまっているのか六角のくせに上手く廻らない. たぶん M3 だと思うのだが
なんかレンチがうまくあたらない.
微妙にサイズがおかしいのではないかと。

お仕事

昨日にくらべていくぶんマシだが睡眠不足と妙な寒気でへろへろ.
ひさしぶりに通信関係のコード書いたりしている.

repository

整理しはじめる. 去年いじったのは色々失敗だったかも.
とりあえず, works につっこんだ study を外に出してみるがどうも去年つっこんだ
ときに履歴関係が消えたかなんかごっそり履歴が落ちている.
別段見返すほどもないか、ということでそのまま放置.

UEFI

どうも資料とかを斜めにみるが実は BIOS にくらべて恐しくリッチという気がしてきた.
以前だれかにアレはもう小さいOS 的なことを言われてたがそうかも.
とりあえず, IO と H/W の初期化, memory jump 関係を弄って PC を kernel の先頭に
飛ばせるような minimal なものをトライする.

VM

ender-3 で blTouch 使用するためには firmware 更新が必要, firmware 更新の
ツールはどうも windows のものしかないっぽい と風が吹けば桶屋が、という流れで
ノートの vm を復旧させることにするがどうも上手くいかない.
てか, ノート用の vm として一台用意していたものはサーバにもっていってしまった
が元からノートにはいっているのが使用できるはず, というはなしで今のノートに
したのだが, どうもこれがデジタルキーとかいうものっぽくて clean install の
ライセンスキーと合致していないような.. このあたりの対応関係がよくわからん。

生活

体調微妙なのと時間ずれを解消のためさっさと寝る