- ベストアンサー
USBインストールのOSが別のマシンで動く理由とは?
- USBにインストールしたOSが別のマシンでも動作する理由とは?
- インストールしたUSBを別のマシンに挿しても普通に使える理由について説明します。
- コンパイルがハードウェアに依存するという情報と、DebianやUbuntuのリポジトリに存在するコンパイル済みパッケージとの矛盾についても触れます。
- みんなの回答 (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のほうが手間がかからず、そのため簡単に見えてくることもありますね。
その他の回答 (4)
- kteds
- ベストアンサー率42% (1883/4441)
> 分かりやすくご教授下さい。 USBではなくても、インストールしたHDDを外して他のPCに接続しても動きます。(すべてのPCで正常に動くというわけではありませんが・・・) LiveCDは他のPCでも動くのが一般的ですね。(汎用性を重視して作成されている) それと同じことですので、別におどろくことではありません。
お礼
ご回答ありがとうございます。 HDDも今度試してみます。
- o_tooru
- ベストアンサー率37% (915/2412)
OSの中心部のプログラムは、どのマシンで有っても共通です。 ただ、LANカードやディスプレードライバなどといったデバイスドライバーは OSを起動した時点で、適切なものを適応できるような仕組みにしているわけです。 ですので、初期でドライバーを持っている物でしたら、どのPCであっても 問題なく動きます。(あまり古いPCですと、動きません) ただ、デメリットとしては、ドライバーを適応させるために認識させるために 起動時に時間が掛かります。また、初期でドライバーを持っていない機器は 使えません。 USBだけでなく、CD-ROMブートでubuntuなども動いたりしますよ。
お礼
ご回答ありがとうございます。 インストールするのは LiveCD のケースとは違うと思っておりました。 ご回答ありがとうございます。 確かに、同じマシンであってもパーツを取り替えたりしたことによって 動かなくなったりしたら困りますもんね。 $ dmesg のログもほとんど読んだことがなかったものでして、 思いが及びませんでした。
- Tacosan
- ベストアンサー率23% (3656/15482)
根本的に「インストール」という言葉を誤解してる. 「インストール」は単純に「動くようにする」だけであって, 「そのマシンに最適化する」かどうかとは (少なくとも直接の) 関係はない. あと「コンパイルがハードウェアに依存する」については, 「完全に無関係」ということは (VM を使わない限り) ありえないので「ある程度依存する」というのは事実. ただし, その「ある程度」が「どの程度」なのかは設定などによる.
お礼
ご回答ありがとうございます。 インストール時にはファイルをコピーするだけでなく、 ハードウェアの構成情報からプログラムの設定に手を加えている と思っておりました。 そういうことをしていたとしても、変更可能な手順である、 ということでしょうか。
インストールしたのはパソコンじゃなくてUSBメモリですよね? USBメモリで起動するようにしてるんだから他のPCで動くのは当たり前です 何がしたいの?
お礼
ご回答ありがとうございます。 http://okwave.jp/qa/q8406776.html
お礼
たびたび詳細な回答をしていただき、本当にありがとうございます。 おかげさまで、だいぶ理解を深めることができました。 ハードウェア構成は OS 起動時にチェックして その構成に対応可能な状態を毎回作り上げている、という感じなのでしょうか。 OS の機能や仕様については色々と難しい話があるのですね。 新しめの機種を使っていれば ほとんどのLinuxディストリビューションは問題なく動くので 気にしたことがありませんでした。