x86版Linuxカーネル、無条件にRAMの先頭1MBを予約することに 86
ストーリー by nagazou
予約 部門より
予約 部門より
headless 曰く、
x86版(AMD64含む)のLinuxで、無条件にRAMの先頭1MBを予約することになったようだ(Phoronixの記事、 LKLMアーカイブ)。
既にx86版のLinuxではSandy Brdigeの統合グラフィックスのバグ対策として該当環境では先頭1MBを予約する仕組みになっているが、最近Ryzen環境でLinux 5.13 RCが起動しないという報告があり、予約サイズの違いによるものだと判明している。そのため、細かく対応するよりも無条件に先頭1MB全体を予約する方がシンプルだ。
これに対しLinus Torvalds氏はしぶしぶプルリクエストを受け付けた。Torvalds氏は1MBが使えなくなってもGB単位でRAMを搭載する現在のPCに影響はなく、自身も気にしないとしつつ、小規模な構成をしたい人はx86をあきらめるしかないのか、レガシーDMAリソースを消費することになるなどと述べ、「but ..」を繰り返している。WindowsではどうなっているかというTorvalds氏の疑問に対しては、Windows 7でBIOSのバグを回避するため先頭1MBをすべて予約しているとの回答が出ている。
x86でコンパクトにって思い入れ深いのかなやっぱり (スコア:3, 興味深い)
LKMLアーカイブ見てみたらめちゃめちゃしぶってて笑ってしまった。
Linusの心の原点みたいなところに衝突しちゃってるんだろうな
Re:x86でコンパクトにって思い入れ深いのかなやっぱり (スコア:3, 興味深い)
そりゃ原体験がVIC-20 [wikipedia.org](6502, 標準メモリ5kB)で、バイトを数えてプログラムを書いてた人に
「1Mなんて大したサイズじゃないよ。windows7だってやってるじゃん。空けておこうよ」
とか言えばそうなるに決まってる。
生理的に受け付けないんだろう。気持ちは良くわかる。
#ビル・ゲイツだって渋ったと思う。
Re: (スコア:0)
初めて触ったのがポケコンのPC-E550(ram込みで128kb)の俺はメモリ的にはめぐまれてたのか。。
Re:x86でコンパクトにって思い入れ深いのかなやっぱり (スコア:2)
クロックは768kHzで
Re:x86でコンパクトにって思い入れ深いのかなやっぱり (スコア:2)
初めて触ったのが FACOMの270でメモリ16kだった俺に結果売ってんのか?
#byteでなくwordだったはず。物理的にはフェライトコアメモリ。
Re:x86でコンパクトにって思い入れ深いのかなやっぱり (スコア:2)
私が初めて所有したポケコンはSharp PC-1211でした。
BASICが走りましたが、確か1424Stepしか入力できませんでした。
だから、1.4kbでしょうか・・。
ただ、PRINT等のコマンドは1Stepとしてカウントしてくれるのが救いでした。
Re: (スコア:0)
それは恵まれてるよ。
初めて触ったのはPC-8001のオジサンより
Re: (スコア:0)
標準では16KBでしたね。
1万円ほどで16KB増設して32KBにしてました。
ユーザーが使えたのは24KBぐらいだったか?
記憶が怪しいです。
Re:x86でコンパクトにって思い入れ深いのかなやっぱり (スコア:2)
DISK-BASICを入れるとさらにRAMが減るので、本体のRAM上の常駐は最低限にして、DISKユニット側のZ80とRAMにOS本体を入れるという、変態OSが出回っていました。当時、高校生グループが開発して、新聞にも高校生ベンチャー会社が設立されるとして紹介されていましたが、その後どうなったのやら・・。
あとは、BASICが0000H~4FFFHくらいにあったので、5000H~7FFFHまでにもRAMを入れようというのが、あったようななかったような・・・
うろ覚え・・・。
Re: (スコア:0)
i386対応削除の時は「そんなことで感情的になったりしないよ。いい厄介払いができた」だったのにとみてたら、Linusは自分は512kBくらい気にしないけど他の人どうよって立場じゃない?
Windows 7がやっているソース (スコア:3, 参考になる)
https://web.archive.org/web/20090912170826/http://www.microsoft.com/wh... [archive.org]
https://download.microsoft.com/download/7/e/7/7e7662cf-cbea-470b-a97e-... [microsoft.com]
Microsoftくんは古いページをすーぐ行方不明にするから困る
いや、ちょっと待て…… (スコア:2)
リンク先の元記事に「Linux x86/x86_64 Will Now Always Reserve The First 1MB Of RAM」としっかり書いてるのに、何で、この記事タイトルになった??
もったいないから (スコア:1)
その1MBでDOSでも動かそうぜ(違
Re:もったいないから (スコア:2)
まもこの出番。
「心が寒い」
Re: (スコア:0)
1MBじゃHimem.sysが使えないから、config.sys見直さないと・・・(汗
Re: (スコア:0)
仮想EMSの出番ですね。
ところで今のCoreやRyzenでも仮想86モードって実装してるんだろうか。使われることはほぼなさそうだけど
Re: (スコア:0)
仮想 86 モードは、たしか 64-bit モードでは動かない… ので 32-bit Windows をインストールしないと。
Re: (スコア:0)
問題ない。ソフトウェアEMSなんてものもあったぢゃないかっ!
# せっかくなのでパソコン通信のログをフロッピーに落とす分には
# 問題ないのにラムディスクに落とすと通信のほうが文字化けする
# という初代ダイナブックの呪いを再現して…
Re: (スコア:0, 既出)
640KBはすべての人にとって未来永劫充分なメモリだから大丈夫
Re: (スコア:0)
1-2-3のマクロでFM-Rでは動くが98では動かなかった物があった思い出
Re: (スコア:0)
Intel VT-xやAMD-Vでどうにでもなる
Re: (スコア:0)
レガシー命令は、ASIC実装やめてソフトウェア実装となってるから、パフォーマンス落ちてるが、
いまやだれも文句いわないね
レガシー命令が最後にASIC実装されてたCPUはなんなんだろうな?
Re: (スコア:0)
そこは敢えてLinuxを生み出すきっかけになったMINIX [wikipedia.org]では。
Re:もったいないから (スコア:2)
Re: (スコア:0)
GlobalDosAllocを思い出した。下位1MBからメモリを確保するという、16ビットWindowsの関数。
いつもの (スコア:0, おもしろおかしい)
「640KBはすべての人にとって未来永劫充分なメモリだ」
Re:いつもの (スコア:1)
「10はWindowsにとって未来永劫十分なバージョン番号だ」
Firefox(89)「え?」
Chrome(91)「え?」
systemd(248)「ほんと?」
macOS(11)「私もそう思っていた時代がありました」
GnuHurd(0.9)「…ハハハ…」
小規模な構成 (スコア:0)
> 小規模な構成をしたい人はx86をあきらめるしかないのか
今の最小メモリって128Mだったよね?
それなら1Mくらいどうってことなくない?
しかし、いまどきそんなメモリ構成のハードウェアあるの?
あ、Virtual ?
Re: (スコア:0)
組み込み機器なら普通にある。ちょうど直近の案件がそんな端末だった
Re: (スコア:0)
あ、でもCPUはx86じゃなくてARMだったか
Re: (スコア:0)
最近512Mbや1GbのDDRの入手性が悪いから4Gb以上を前提に設計する事が多いかも。
Re: (スコア:0)
4Gbてことは512MiB?
DDRは1枚?
Re: (スコア:0)
サウンドチップとかセキュリティチップ内のマイクロOSとか普通にあるでしょ。
Re: (スコア:0)
で、それはLinux/x86なの?
Re: (スコア:0)
最初のLinuxが仮に最小メモリ4MBだとすると、30年で32倍になった。
30年後、Linuxの最小メモリが4GBになって、Linus爺が渋々x86のサポートを切って引退するに違いない。
悪手(ではないんだろうけど) (スコア:0)
原因がハードウェアと分かっているからまあいいんだけろうけど、
「理由がわからんけどこうすれば動くからそれで…」って
ホントはやってはいかんのだよなぁ、近い将来にブーメラン。
Re: (スコア:0)
今回の件は「理由がわからんけど」じゃないんだけど何言ってんだこいつ
Re: (スコア:0)
「原因がわからない」のと「解決方法が理解できない」の区別がついてない人なんだろう
だから「ホントはやってはいかん」ことをやってしまいブーメラン突き刺さる
Re:悪手(ではないんだろうけど) (スコア:1)
「Sandy Brdigeの統合グラフィックスのバグ」を報告して直して貰うというのが最善手。
直して貰えないからしょうがなくそのバグを徹底的に解析して、「何がどうあれ1MBを越えたところが壊されることはない」という事を確認の上、「最初の1MBを捨てる」という手段で妥協してるのが現状。
問題としては、「先頭1MBに変な事をするバグ」が他の構成でも起こってしまってても発見がしづらくなる。
あとは、「ほんとにそのバグ、1MB内に収まるんですか?」という心配も。まあ、多分、1MBぎりぎりの所まで壊されるわけじゃなく、実際に壊れる可能性があるのは先頭のほんの少しだけど、メモリ管理の都合上、1MB未満の単位で未使用領域を作るのは高コストだからざっくり1MBを切り捨て、としてあるんだろうけど。
Linux起動オプションとかで、RAM先頭1MB予約解除とか、できないのだろうか? (スコア:0)
まあ素人の思い付きなど、当然検討済みなんだろうけど。
昔のX86系MB用BIOSには、OS/2との互換とかで、RAM先頭1MB空けるオプションの記憶がある。
本来は同様にBIOS・UEFI辺りで何とかすべきものなのかも。
Re:Linux起動オプションとかで、RAM先頭1MB予約解除とか、できないのだろうか? (スコア:1)
別に「ハード依存で勝手に書き換わる癖がある領域をまとめて潰す」
っていうバグ対策だから対策解除したらバグが再現するってだけ
どうしても使いたければ全てのCPUやマザーボードの仕様とバグを全部列挙して
このマザーではここからここの何KBは使えるとか細かく設定すればいいけど
そんな事を調べて考えて新製品やら構成変更やら追従するだけ時間の無駄ってだけ
たった1024KBのうち512KBとか32KBとか具体的にどんだけか知らんけど
そういうごく僅かな領域を回収したければ勝手にやればいいんじゃね?
それよりメインメモリ先頭1MBをまとめて無効化した方が遥かに生産的ってだけ
Re:Linux起動オプションとかで、RAM先頭1MB予約解除とか、できないのだろうか? (スコア:1)
x86でUEFI経由レガシー残ってんのは多分USBブート/HIDさんのせいなんだろうなーと
どっか大手が覚悟決めて始めからx64一本で完結するPC製品だけに集約すれば流れもできるだろうに
Re: (スコア:0)
特定アドレスを使わないオプションはある(memmapかな?)けど、1MB以下も使えたかなあ?
そのオプションはDIMMが故障したときに使ったよ。
ただし、オプションなしだと起動しないってのはなしかと思う。
Re:今の時代にx86に本気出す理由? (スコア:1)
馬鹿なコメントだけど荒らしモデは無いな。
馬鹿と荒らしは別。
[Q][W][E][R][T][Y]
Re:今の時代にx86に本気出す理由? (スコア:1, すばらしい洞察)
そのAppleでさえintelモデルをまだ出してるので。
Re: (スコア:0)
次でボケて!
Re: (スコア:0)
M1はたいしたものだと思うけど、デスクトップマシンのシェアとしてはまだ微粒子レベル。
サーバ用途などだとARMの存在感薄いし、SPARCやPOWERなどもあるとはいえx86のシェアはかなり大きいと思う。
Re: (スコア:0)
Re: (スコア:0)
Linuxで使うのであれば、すごく普通に使えちゃうので拍子抜けしちゃうかも。
シビアなパフォーマンスチューニングとかが必要ないワークロードなら、運用コストも下がるし避ける理由もあまり見当たらないですね。
Re: (スコア:0)
Ryzen 7 3700x 一式を捨ててくれるなら拾いに行きたい