Linuxのドライバはカーネルに組み込むこともカーネルモジュールとして分離することもできるけど、なにを主張したいのでしょうか。 Andoroidメーカーごとにビルドしなきゃいけないのは、メーカー各社がハードを揃える気がないからです。 PC LinuxはどのメーカーのPCでも関係なく動きますよね。 PCみたいに仕様が揃っていればカーネルをビルドする必要はないです。
Androidが実際どうやってるかしらんが、PC(x86系)だったらPlug and Playとか各種アドレスのスキャンでデバイスの種類や状態が判別できるからデバイスドライバの処理レベルで対応できる。ARM系はほぼハードウェア定義ファイル(DTB)必須だし、ボードメーカ提供のドライバでもソースレベルで定義変えないと動作しないものがざらにある。
Linuxはクソださい三流OS (スコア:-1)
デバイスドライバを分離できず、各ベンダーのハードウェアのドライバが全部Linuxカーネルのソースツリーに含まれてる、なんてクソださいOS誰が喜んで使うんだよ。
このクソ仕様のせいで各Androidメーカーが独自にカーネルをビルドせざるを得ず、
Androidのハードウェアがセグメンテーション化されてろくにセキュリティパッチも適用されない惨状を生み出してるんだろうに。
このダサさを理解できないのは、エンジニアとして無能としか言いようがない。
Re:Linuxはクソださい三流OS (スコア:2, 参考になる)
https://www.kernel.org/doc/Documentation/process/stable-api-nonsense.rst [kernel.org]
多分この辺の話かな
要はカーネル内で固定されたAPI/ABIが定義されてないからカーネルのバージョン毎、ビルド時のオプション毎、ビルドに使ったツールチェーンのバージョン毎その他諸々いつでもカーネルモジュールのソース/バイナリの互換性が破壊されうるのよね
だから中の人も「カーネルのバージョン、ディストリビューション毎にそれぞれバイナリを用意するなんて悪夢だし更にアプデに追従するのも無理ゲーでしょ、だからGPLでソースを公開してカーネルツリーに取り込まれるように働きかけてね、嫌なら自分で頑張って」って言ってる
Re: (スコア:0)
最近これで苦労したけど、ドライバ公開させるためにわざとやってるのかー
Re: (スコア:0)
その話聞くとやっぱりクソダサOSなのではと思える
Re: (スコア:0)
読んだ。
分かるけど…クソだなぁ。
そりゃ個人プロジェクトなら何も考えずリファクタリングで破壊的変更とか普通にするけど、カーネルでそれはないでしょ。
あとCだからコンパイラによってインターフェースが壊れますってのも引くわ。
アラインメントを固定する方法くらいないの?
古いインターフェースを開発者に警告するとかもできるでしょ。C#でいう[Obsolete]。
そっか…本当にC言語なんだなとしみじみと思った。
Re: (スコア:0)
コンパイラによる破壊は、C言語規格がABIを規定できないので無理。
コンパイラ拡張機能でアライメントを揃える程度はできるが、呼び出し規約やシンボル名生成等まで壊さないのは非現実的。
これはカーネルの問題ではないし、C言語に限った話でもない。
Re:Linuxはクソださい三流OS (スコア:1)
Re: (スコア:0)
ダサくてセンス悪いのが生き残るのは実に良くある事
Re: (スコア:0)
CとかC++とかWindowsとか
Re: (スコア:0)
どなたか親コメントにすば洞お願いします。
※ C++はなんであんな大魔境になってしまったのでしょうか。
Re: (スコア:0)
えー、Cも含めるのー
Re: (スコア:0)
.c と .h を分けなければいけないとか、開発環境がボロだった時代の遺産だよな。。
VSのような開発環境でフォローしないといけなくなってる。
Re: (スコア:0)
「読みやすいアセンブリ言語」にみんな色々期待しちゃって
よってたかってあれこれ付け加えちゃった末路なので
そっとしといてあげて
Re: (スコア:0, 荒らし)
すごい妄想ですね。あなたのLinuxカーネルの知識は全部間違ってるので書き連ねるのはやめます。
気に入らないことがあるなら有能なご自身でどうぞ直してください。
Re: (スコア:0)
普通にドライバをツリー外でビルドできるし、DKMSってやつもあるんだけど。
>各Androidメーカーが独自にカーネルをビルドせざるを得ず
そりゃバイナリが用意されてなければビルドせざるを得ないわな
>セキュリティパッチも適用されない惨状を生み出してる
メーカがエンジニアとして無能なのを他人のせいにするな
Re: (スコア:0)
AndroidのカスタムROMなんかが共通のカーネルバイナリを使えず、機種ことに個別にビルドされたものを使っているのは何故なんでしょうか。
Re: (スコア:0)
Androidが、標準でビルドツール類やDKMSを同梱してないからでしょ。
Re: (スコア:0)
Linuxのドライバはカーネルに組み込むこともカーネルモジュールとして分離することもできるけど、なにを主張したいのでしょうか。
Andoroidメーカーごとにビルドしなきゃいけないのは、メーカー各社がハードを揃える気がないからです。
PC LinuxはどのメーカーのPCでも関係なく動きますよね。
PCみたいに仕様が揃っていればカーネルをビルドする必要はないです。
Re: (スコア:0)
PC がどこでも動くのは、モジュールで大量にプリビルド済みのを使ってるからですよ。
Andoridの端末メーカーがビルドするのは、ハードウェアが決まってるのに無関係なモジュールまで組み込んでストレージに負荷をかけたくないから。
PCでもLinuxのカーネルやモジュールは自分のPC用に最適化するし、余分なモジュール外してビルドするでしょ?
最近は気にしない人もいるのかもしれんけど。
ちなみにご存知ないかもしてませんが、ハードウェア仕様の乱立ぐあいは、あれだけ乱立メーカーのあるAndroid端末と比べたって、PCのほうが百花繚乱で一切、統一なんかされてませんよ。
Re: (スコア:0)
Androidが実際どうやってるかしらんが、PC(x86系)だったらPlug and Playとか各種アドレスのスキャンでデバイスの種類や状態が判別できるからデバイスドライバの処理レベルで対応できる。ARM系はほぼハードウェア定義ファイル(DTB)必須だし、ボードメーカ提供のドライバでもソースレベルで定義変えないと動作しないものがざらにある。
まだコメントされてない まじかよ (スコア:0)
>Linuxはクソださい三流OS
タネンバウム教授お疲れです!
結局のところ、設計がクソでも、アップデートが頻繁で使いやすいツールが正解なんですよ!
既視感 (スコア:0)
> 結局のところ、設計がクソでも、アップデートが頻繁で使いやすいツールが正解なんですよ!
人呼んで、それをWindows Updateというアレですね
# Linuxのディストリビューションで言うところのyumとかaptとかdnf相当ですので私は更新が多すぎるとは思っていません
Re: (スコア:0)
Windows Update最強だな
Re: (スコア:0)
dkms使っても良いんですよ?
Re: (スコア:0)
カーネルヘッダーを提供してくれればね
#開発環境に入ってないことがあってね…