dポイントプレゼントキャンペーン実施中!

数週間前に USB に Debian をインストールしたのですが、
インストールした USB を別のマシンに挿して起動を試してみたところ、
別のマシン2台で普通に使えてしまいました。
プリンタで印刷もできましたし
fiefoxでプラグインが全く入っていないのでHTML5によりYouTubeの動画を見ることもできました。

インストールというのはそのマシンに最適化することであり
他のマシンでは動かない、
というように思っていたのですが、
なぜインストール時と異なるマシンで動くのでしょうか?

さらに、コンパイルがハードウェアに依存する、と書いてあるサイトがあったのですが、
このことは Debian や Ubuntu では
コンパイル済みのパッケージがリポジトリに存在することとも矛盾するように感じてしまい、
この辺りの知識が不足しているから
最初のことも理解できないのかもしれません。

分かりやすくご教授下さい。
どうぞよろしくお願いいたします。

A 回答 (5件)

正しく抽象化された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のほうが手間がかからず、そのため簡単に見えてくることもありますね。
    • good
    • 1
この回答へのお礼

たびたび詳細な回答をしていただき、本当にありがとうございます。
おかげさまで、だいぶ理解を深めることができました。
ハードウェア構成は OS 起動時にチェックして
その構成に対応可能な状態を毎回作り上げている、という感じなのでしょうか。
OS の機能や仕様については色々と難しい話があるのですね。
新しめの機種を使っていれば
ほとんどのLinuxディストリビューションは問題なく動くので
気にしたことがありませんでした。

お礼日時:2014/01/31 09:07

> 分かりやすくご教授下さい。



USBではなくても、インストールしたHDDを外して他のPCに接続しても動きます。(すべてのPCで正常に動くというわけではありませんが・・・)
LiveCDは他のPCでも動くのが一般的ですね。(汎用性を重視して作成されている)
それと同じことですので、別におどろくことではありません。
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。
HDDも今度試してみます。

お礼日時:2014/01/31 09:09

OSの中心部のプログラムは、どのマシンで有っても共通です。


ただ、LANカードやディスプレードライバなどといったデバイスドライバーは
OSを起動した時点で、適切なものを適応できるような仕組みにしているわけです。
ですので、初期でドライバーを持っている物でしたら、どのPCであっても
問題なく動きます。(あまり古いPCですと、動きません)

ただ、デメリットとしては、ドライバーを適応させるために認識させるために
起動時に時間が掛かります。また、初期でドライバーを持っていない機器は
使えません。

USBだけでなく、CD-ROMブートでubuntuなども動いたりしますよ。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
インストールするのは LiveCD のケースとは違うと思っておりました。
ご回答ありがとうございます。
確かに、同じマシンであってもパーツを取り替えたりしたことによって
動かなくなったりしたら困りますもんね。
$ dmesg
のログもほとんど読んだことがなかったものでして、
思いが及びませんでした。

お礼日時:2014/01/31 09:09

根本的に「インストール」という言葉を誤解してる. 「インストール」は単純に「動くようにする」だけであって, 「そのマシンに最適化する」かどうかとは (少なくとも直接の) 関係はない.



あと「コンパイルがハードウェアに依存する」については, 「完全に無関係」ということは (VM を使わない限り) ありえないので「ある程度依存する」というのは事実. ただし, その「ある程度」が「どの程度」なのかは設定などによる.
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
インストール時にはファイルをコピーするだけでなく、
ハードウェアの構成情報からプログラムの設定に手を加えている
と思っておりました。
そういうことをしていたとしても、変更可能な手順である、
ということでしょうか。

お礼日時:2014/01/31 09:08

インストールしたのはパソコンじゃなくてUSBメモリですよね?



USBメモリで起動するようにしてるんだから他のPCで動くのは当たり前です

何がしたいの?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
http://okwave.jp/qa/q8406776.html

お礼日時:2014/01/31 09:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!