
数週間前に USB に Debian をインストールしたのですが、
インストールした USB を別のマシンに挿して起動を試してみたところ、
別のマシン2台で普通に使えてしまいました。
プリンタで印刷もできましたし
fiefoxでプラグインが全く入っていないのでHTML5によりYouTubeの動画を見ることもできました。
インストールというのはそのマシンに最適化することであり
他のマシンでは動かない、
というように思っていたのですが、
なぜインストール時と異なるマシンで動くのでしょうか?
さらに、コンパイルがハードウェアに依存する、と書いてあるサイトがあったのですが、
このことは Debian や Ubuntu では
コンパイル済みのパッケージがリポジトリに存在することとも矛盾するように感じてしまい、
この辺りの知識が不足しているから
最初のことも理解できないのかもしれません。
分かりやすくご教授下さい。
どうぞよろしくお願いいたします。
No.4ベストアンサー
- 回答日時:
正しく抽象化されたOSなら、別のPCで動くのが当たり前ですよ。
ただ、主流となっているWindowsの場合は
正しく抽象化されるされないの問題ではなく
単純に"一つのPCに一つのOS"という思想で作られているので
チップセットが違うだけで、まったく起動しないようなことが起きます。
正確には、抽象化した上で、対応するデバイスドライバーが用意されているかどうか?
という問題なんですけどね。ドライバーがある程度揃わなければ、抽象化が不完全なわけです。
Windowsの場合は、デバイスドライバーを自社で作らず
他社に用意されるという支配構造があるがゆえに
逆に、Windowsのインストールディスクに、収録できないドライバーがあります。
そのため、別のPCに移した際に
自動的に、別のドライバーが有効になって働くようになっていないようです。
(具体的な挙動は知りませんが、Windowsのほうが特殊とも言えます)
事前に、Windows用の存在するドライバーのすべてを組み入れて
それでも、別のPCに繋ぎ変えて、普通に起動できないようになるのかどうか?
そのへんは知りませんが、チップセットドライバーを数種類
同時に導入しておけないなら、そこに問題があるのかもしれません。
ただ、Linux系OSでも、Android端末にUbuntuを導入するような事例では
チップセットに相当する部分とCPUやGPUを統合したSoC(System on Chip)が
何種類もあるため、同じインストールイメージで、何でも対応できるというわけに行きません。
これは、ARM系のシステムにおいては、Linuxも抽象化が不十分と考えることができます。
(IBM PC/AT互換機ではBIOSという共通基盤があるから、そこは比較的容易だったようです)
コンパイルがハードウェアに依存するというのは、一次的にはそうだとしても
二次的には、自由度が広いと言えます。
クロスコンパイルという言葉がありますが、intel x86-64の環境の中で
ARMのためのコンパイルを行なう環境を構築したりもできるので
開発に使うハードウェアが、他のハードウェア向けのコンパイルの可否を左右するわけではありません。
(ちょっと手間がかかることにはなりますが)
また、コンパイル済のバイナリーが、ハードウェアに依存するという話は
するようにも、しないようにもできます。
単純問題、判別して適宜対応する仕組みがあればいいわけです。
もちろん、Ubuntuでも現在はi686(PentiumII,Pro)向けとしてコンパイルしているので
そのままでは、Pentium/60MHzとか、iDX4/100MHzとかで動かせません。
ただ、これらCPUのシステムでは、メモリーが128MB未満だったりして
そもそもインストールできなかったりもします。
そういった実践的な下限として、i386からi686に移行することによって
PentiumII,Proから採用されたCPUの機能を、OSの標準として据えて
動作を効率化できるという判断があったわけです。
でも、i686相当では、より新しい世代のSSE3のようなものは対応外となります。
ですから、それを利用するソフトが個別に、対応できるならすればいい。
そういった考え方で作られるソフトも多々あります。
WindowsやMacOSXのようなプロプライエタリーOSでは
CPUごとに、カーネルを別に用意したりしませんし
アプリケーションでも、販売されているものは、対応CPUの範囲は広いものになっています。
あれば新しい機能は使う、なければ古い手法で処理する。それがあたりまえとなります。
ただ、Windows8でNXビット無しで切り捨てられるCPUがあるのに対して
Ubuntuでは現在CPUにPAEが無いとインストールディスクから起動すらできないのですが…
(PAEが必須の構成でコンパイルされたカーネルで起動しようとするからです)
しかし、PAEが無くても動くカーネルを作ることもできるので
XubuntuやLubuntuでは、今もPAE無しで起動できるようになっています。
あるいは、Ubuntu Studioが標準とする、リアルタイム仕様のカーネルも用意されています。
誰もが違いを体感できるのかは知りませんが、音質向上にも効果があるそうで
一部には、LinuxのほうがWindowsよりも音が良いという主張まであります。
(私は観測できないので、それについてはノーコメント)
オープンソースライセンスのOSであるがゆえに
誰もが、似たようなものの中から、良いほうを選ぶ自由もあるし
自分で仕立て直す自由もあります。
最高にすばらしいのは、その仕立てた人が、それを第三者に配布もできることでしょう。
WindowsにもnLiteのように、軽量版を作るツールはありますが
それで作ったインストールディスクを、第三者に配布する権利が認められていません。
XPのSP3統合ディスクなんかも、配布できません。
結果的に、Linuxのほうが手間がかからず、そのため簡単に見えてくることもありますね。
たびたび詳細な回答をしていただき、本当にありがとうございます。
おかげさまで、だいぶ理解を深めることができました。
ハードウェア構成は OS 起動時にチェックして
その構成に対応可能な状態を毎回作り上げている、という感じなのでしょうか。
OS の機能や仕様については色々と難しい話があるのですね。
新しめの機種を使っていれば
ほとんどのLinuxディストリビューションは問題なく動くので
気にしたことがありませんでした。
No.3
- 回答日時:
OSの中心部のプログラムは、どのマシンで有っても共通です。
ただ、LANカードやディスプレードライバなどといったデバイスドライバーは
OSを起動した時点で、適切なものを適応できるような仕組みにしているわけです。
ですので、初期でドライバーを持っている物でしたら、どのPCであっても
問題なく動きます。(あまり古いPCですと、動きません)
ただ、デメリットとしては、ドライバーを適応させるために認識させるために
起動時に時間が掛かります。また、初期でドライバーを持っていない機器は
使えません。
USBだけでなく、CD-ROMブートでubuntuなども動いたりしますよ。
ご回答ありがとうございます。
インストールするのは LiveCD のケースとは違うと思っておりました。
ご回答ありがとうございます。
確かに、同じマシンであってもパーツを取り替えたりしたことによって
動かなくなったりしたら困りますもんね。
$ dmesg
のログもほとんど読んだことがなかったものでして、
思いが及びませんでした。
No.2
- 回答日時:
根本的に「インストール」という言葉を誤解してる. 「インストール」は単純に「動くようにする」だけであって, 「そのマシンに最適化する」かどうかとは (少なくとも直接の) 関係はない.
あと「コンパイルがハードウェアに依存する」については, 「完全に無関係」ということは (VM を使わない限り) ありえないので「ある程度依存する」というのは事実. ただし, その「ある程度」が「どの程度」なのかは設定などによる.
ご回答ありがとうございます。
インストール時にはファイルをコピーするだけでなく、
ハードウェアの構成情報からプログラムの設定に手を加えている
と思っておりました。
そういうことをしていたとしても、変更可能な手順である、
ということでしょうか。

No.1
- 回答日時:
インストールしたのはパソコンじゃなくてUSBメモリですよね?
USBメモリで起動するようにしてるんだから他のPCで動くのは当たり前です
何がしたいの?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Windows 10 古いPC(Inspiron 13 1370)にWin10インストール可能ですか? 6 2022/06/01 09:11
- UNIX・Linux ubuntuのサーバー(virtual box)が、再起動するとデータが消えてしまいます。 4 2022/04/27 21:29
- デスクトップパソコン デバイスマネージャーにrealtek audioがありません。 調べたら出てくる、デバイスマネージャ 4 2023/05/18 09:24
- その他(OS) VirtualBoxのゲストOS起動時にUSBデバイスを自動認識したい 1 2023/05/07 14:17
- Visual Basic(VBA) VBAでArrayListを使う為の「mscorlib.tlb」の参照設定について 3 2022/03/23 19:45
- ドライブ・ストレージ 複数のパソコンが自宅にあり、互いの固有のHD、光学ドライブを相互にアクセスする方法。その2 3 2022/12/16 09:54
- その他(パソコン・周辺機器) Windowsマシン。USBタップの「自動切れ、再接続」がうざい。解決策は? 7 2023/01/25 08:27
- Windows 10 windows10のクリーンインストールが完了出来ない 2 2022/06/04 13:33
- その他(ソフトウェア) Corei7-12700とVmwareWorkstation17Proの相性は悪いの? 1 2023/01/09 20:21
- 計算機科学 これは迷路を解くというよりも、いかに速く最速で走り切れる経路を見出せるかや、マシン性能、プログラミン 3 2023/07/17 16:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
macOS Sonoma 14.1をインストー...
-
Windows10を使ってるのですがア...
-
古い話ですが、Windows 3.1と95...
-
インストール後再起動せず起動...
-
当方、MacBook Pro OSX 10.6 Bo...
-
新PCへ旧PCのシステムデータを...
-
使用済みHDDを初自作PCに組み込...
-
USBドライバーインストールエラ...
-
間違ったグラフィックドライバ?
-
FlashPlayerの不具合
-
ポロロン、ポロロンとうるさい...
-
グラボが先?ドライバが先?
-
譲り受けたSCSI-2インターフェ...
-
Win2000 Core2Duoは正常に使え...
-
プリンタードライバがインスト...
-
Nahimic ServiceというRealtekA...
-
ドライバのアンインストールを...
-
最近RTX3060にしたのですが最初...
-
Quadro FX3400でSLIするとブル...
-
グラフィックカード 2枚刺しで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
macOS Sonoma 14.1をインストー...
-
Windows10を使ってるのですがア...
-
古い話ですが、Windows 3.1と95...
-
ibook G4を工場出荷時の状態に...
-
インストール後再起動せず起動...
-
新PCへ旧PCのシステムデータを...
-
PCゲームの対応OSについて
-
hp probook 455へのchrome os f...
-
Chrome OS フレックスはインス...
-
Red Hat Linux7jのHDD起動...
-
リモートアクセス機能について
-
トリプルブート
-
Centos5.4 インストール時、起...
-
Windows7でSmartVisionが見れない
-
Windows7のPCで「建築みつも郎...
-
起動時・再起動時に音声が勝手...
-
PowerMac G4 HDの初期化をした...
-
パソコンの起動時に
-
windowsアップデートの途中でパ...
-
Windows98のインストール時のト...
おすすめ情報