カーネルをソースからコンパイルして起動するブートローダー 98
ストーリー by Oliver
gentooユーザ狂喜 部門より
gentooユーザ狂喜 部門より
yosshy 曰く、 "Linux Kernel ML に、Linux カーネルをソースからコンパイルして起動する特異なブートローダー「TCCBOOT」がアナウンスされています。 TCCBOOT は最新版の Tiny Cコンパイラ(TCC)、アセンブラ、リンカを含んでおり、小さなパッチの当たった Linux カーネルソースからカーネルをコンパイルして起動するそうです。2.4GHz の Pentium 4 でカーネルコンパイルに 15秒以内というから驚かされます。 しかし…毎回カーネルをソースからコンパイルして起動する事に何の意味があるのでしょう?"
組み込み分野はウェルカムじゃないかなぁ (スコア:4, 参考になる)
デバイスの組み合わせって順列組み合わせで増殖して行くわけで、それに対応
するためには『とりあえず入れられるだけ入れておけ!』というのが現在の
実装でしょ。
このコンセプトならデバイスを追加したときにドライバのソースを追加して
やればよろしいわけで、資源的な効率がいいよね?
--- Toshiboumi bugbird Ohta
Re:組み込み分野はウェルカムじゃないかなぁ (スコア:4, 興味深い)
ライセンスの関係上ソースは公開できてもバイナリを配布できない場合にも応用できますね。
Re:組み込み分野はウェルカムじゃないかなぁ (スコア:1)
#作者のページは仕事中に覗くには恥ずかしいので。。。
Re:組み込み分野はウェルカムじゃないかなぁ (スコア:2, 参考になる)
実際にインストールしてみればわかりますが、途中でDOS窓が開いてコンパイルしています。
#というように見えているだけなのかもしれませんが。
そのためか、非力なマシンにインストールしようとすると、結構な時間がかかります。
Re:組み込み分野はウェルカムじゃないかなぁ (スコア:2, 参考になる)
あれはマジでコンパイルしてます。
なので、インストーラを起動してからコンパイルが開始されるまでに
1)ライセンスの承認
2)インストール先の選択
という2つのステップをふむことになりますが、この間にテンポラリディレクトリに展開されているコンパイラを入れ替えたり、Makefileを書き換えることが可能です。
ちなみに、インストーラに入ってるコンパイラはMinGW [mingw.org]のgcc-2.95.3です。
Makefileのコンパイルオプションを色々といじってみたのですが、差は感じられませんでした。
差が感じられなくて、本当にコンパイルしてるか分かるのかって?
gcc-2.95.3が対応してないオプション"-mcpu=athlon-tbird"を指定してコンパイルがこけてインストールに失敗しました。
そこでgcc-3.3.1に入れ替えるという手を思いついたわけです。
Re:組み込み分野はウェルカムじゃないかなぁ (スコア:2, 興味深い)
Re:組み込み分野はウェルカムじゃないかなぁ (スコア:1, 興味深い)
ハード毎にバイナリの動作確認をしないことには製品の出荷なんぞできません。
なにも知らんアマチュアがおおいんですな。
Re:組み込み分野はウェルカムじゃないかなぁ (スコア:1)
Re:組み込み分野はウェルカムじゃないかなぁ (スコア:1)
Pentium4のような速いプロセッサを積むだろうかねぇ。
「午後のこーだ」みたいに、バイナリ配付ができない特殊な状況で、
コンパイラをセットにして配付というのは聞いたことがあるけれど。
Re:組み込み分野はウェルカムじゃないかなぁ (スコア:1)
Re:組み込み分野はウェルカムじゃないかなぁ (スコア:1)
その手のアプリではコンパイルする必要のあるソースも増えるのではないでしょうか?
Re:組み込み分野はウェルカムじゃないかなぁ (スコア:1, すばらしい洞察)
Re:組み込み分野はウェルカムじゃないかなぁ (スコア:1)
やっぱソースからコンパイルできる環境の方が効率良いんじゃない?
--- Toshiboumi bugbird Ohta
Re:errorが発生したら (スコア:1)
まぁ、エラーが出たらその時点でデバイスとそのドライバのソースを外して
やればリカバリはできるはずなわけで。
また、エラーの内容がターゲットの環境に依存していて比較的簡単なものなら
その場で修正して対応できるというのもありますな。…普通のエンドユーザ
には、まず絶対に無理でしょうけど ^^;;
--- Toshiboumi bugbird Ohta
オタクで済みません (スコア:4, おもしろおかしい)
-- 哀れな日本人専用(sorry Japanese only) --
Re:オタクで済みません (スコア:1)
『レッツ、コンパイル!!』
# v,v,v, victory... 古い?
Re:オタクで済みません (スコア:1, おもしろおかしい)
vi, vi, vi, ビクトリー!
# 我らの、我らの、コーンパイラー vi! (いや、だからコンパイラじゃないってば……
Re:オタクで済みません (スコア:1, 興味深い)
Windowsのデフラグが流行ったのも、ファイルを一生懸命移動してるグラフィックにあったと言われてるからありかもしれん。
BIOSの中に入れておいてほしい (スコア:2, 興味深い)
4Mbit(512KB)も有ったりするから、
BIOSの中に高機能なブートローダーも入れといて欲しいなあ。
というか、最初から、BIOSのROMチップを刺すICコネクタの代わりに
スマートメディアが刺せるよーになってるマザーボードだったら良いのにな。
スマートメディアなら、SDカードやコンパクトフラッシュと違って、
生のメモリチップ直結だからコントローラが単純で低コストだったはず。
せっかくだから、
FAT32とNTFSとextファイルシステムのHDDが読み書き出来るミニミニカーネルと、
日本語ファイル名表示用の日本語フォントビットマップデータまで詰め込んでください
Phoenix/Awardの人。
Re:BIOSの中に入れておいてほしい (スコア:2, 参考になる)
HDD起動メニュー (スコア:1)
How many files(0-15) ?
だから、BIOSじゃなくHDDのブートローダーの仕事ですね
スマートメディア?? (スコア:1, 参考になる)
> 生のメモリチップ直結だからコントローラが単純で低コストだったはず。
スマートメディアは、たしかに生だけど、生過ぎてメモリに見えないですよ。
コマンドをやり取りして、ページ単位でリード/ライト、ブロック単位で消去だから。
つまり、CompactFlashやSDのように、ストレージ的な扱いを行う必要がある。
さらに、CompactFlashやSDと違って、代替ブロック処理もやってくれない。
Re:BIOSの中に入れておいてほしい (スコア:1)
>BIOSチップにブートストラップをのっけた方式だったと思うけど・・・
OpenFirmware [openfirmware.org]だっけ?
DECのAlphaマシンだけでなく、PowerMac(初期型を除く)やSunのSPARC、Itaniumマシンにも実装されてるみたいだけど。
・・・・・そこで気付いた。PCのBIOSにgrub [gnu.org]まで入れろと言ってるのか?
でも… (スコア:2, すばらしい洞察)
Re:でも… (スコア:1)
$ sudo make menuconfig
(設定変更、".config"に保存)
$ sudo /sbin/reboot
-- やさいはけんこうにいちば〜ん!
ネットワークスクリプト代りにいいかも (スコア:2, 興味深い)
ユーザーリクエストに基づいたソースがクライアントから送付されて、サーバそれぞれのマイコンやバーチャルマシンでコンパイル実行される。
CPUの種類や規模に左右されないから色々できそう。
そりゃ決まってるでしょ (スコア:1, すばらしい洞察)
Re:そりゃ決まってるでしょ (スコア:1, おもしろおかしい)
マウンテン [wakwak.com]に行く?
実験用 (スコア:1)
カーネルを再構築する時の実験用とか?
実験用マシンがある人(使い分ける人)には良いかも。
プロファイルベースで (スコア:1, 興味深い)
関連性のあるコードを近くになるように再配置するとか(これはリンクだけで済む?)
どれくらい効果あるか知らんけど...
Re:プロファイルベースで (スコア:1)
ソースコードが公開されていないms windowsじゃ絶対出来ない
究極の最適化ですね.
Re:プロファイルベースで (スコア:1, 参考になる)
#CrusoeはWin2000に、EfficeonはWinXPに最適化済み~
Re:プロファイルベースで (スコア:2, 興味深い)
Efficeon で動かせば、そのうち
「WinXPに最適化したCPUでの動作に最適化したカーネル」
になるんじゃないでしょうか。
Re:プロファイルベースで (スコア:1)
次は当然 (スコア:1, おもしろおかしい)
Re:次は当然 (スコア:1)
やっぱり (スコア:1)
#いや、もちろん好きだけどさ
Re:やっぱり (スコア:1, 興味深い)
dev-lang/tcc/tcc-0.9.20.ebuild
で、tccそのもののソースは200kなかったので、ebuild使ってインストールしてみました。
C++はコンパイルできないということなので、gentooにおけるgccの代替にはなりませんね。
でも、こんなことができるということで、試してみました。
これをシェルから実行すると、tccがソースをコンパイルしてくれて、コードが実行されます。
俺はスクリプト言語が嫌いなんだ!という人にはお勧めかもしれません。
---- 末は社長か懲戒免職 なかむらまさよし
Re:やっぱり (スコア:2, 参考になる)
ソースファイルの先頭にこういう感じ [srad.jp]のものを入れて使っています。
"スクリプト言語が嫌い"というよりも、ソースが1ファイルなのでわざわざMakefile書くほどじゃないけれど、でも多くのライブラリとリンクしなければならなくてコマンドラインから毎回打ち込むのは面倒、っていうときに便利です。
Re:やっぱり (スコア:1)
use Test::More 'no_plan';
Re:やっぱり (スコア:1)
前にポストしたスクリプト(?)は、#include文なしで動きました。
---- 末は社長か懲戒免職 なかむらまさよし
さすがに遅いか (スコア:1)
ヴィルス対策か? (スコア:1)
素の状態=非ヴィルス感染カーネルと言うことであって。
Re:生成されたカーネルは素の状態=非ヴィルス感染 (スコア:1)
毎秒何ライン? (スコア:1)
毎秒何ラインくらいのスピードでしょうか?
昔、MS-DOS ターボパスカルは 毎秒500行程度はできてました
Turbo LinuxKernel (スコア:1)
夢のようなカーネル開発環境だね。
Turbo LinuxKernelつう名前にして、システムプログラミング学習用に出したら、ヒットするんではないか、と。
#数年後に開発部門の中心人物がM$に移籍して、
#どんなハードでも自動移植・自動コンパイル・自動起動する
#「自動マイグレーション型Windows」を開発するとこまで折込済みで
次は (スコア:1, おもしろおかしい)
コンパイルしてから起動するようになるんですね? (Y/y)
# それって昔懐かしいROM BASICの時代そのままじゃないか
# という気もするのでAC
Re:次は (スコア:1)
いっそのこと tcc - とか tcc kbd とかで,
編集なしで直接ソースを入力するとか...
# tcc には,ソースを標準入力に指定するオプションが
# 無いようだが...
make modules_install (スコア:1)
# はっ すべて組み込みかー
---にょろ~ん
Re:悪さしようとするなら (スコア:1, フレームのもと)
ことができているわけだから、ウィルスとか寝ぼけたこと言ってないで
何でもできてしまうのが分からないんかな。
ウィルス言いたいだけちゃうんかと。