![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
数週間前に 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 を使わない限り) ありえないので「ある程度依存する」というのは事実. ただし, その「ある程度」が「どの程度」なのかは設定などによる.
ご回答ありがとうございます。
インストール時にはファイルをコピーするだけでなく、
ハードウェアの構成情報からプログラムの設定に手を加えている
と思っておりました。
そういうことをしていたとしても、変更可能な手順である、
ということでしょうか。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_13.png?5a7ff87)
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ランキング
-
Windows10を使ってるのですがア...
-
ibook G4を工場出荷時の状態に...
-
起動時・再起動時に音声が勝手...
-
windowsアップデートの途中でパ...
-
Sonnet CRESCENDO/ST G4カード...
-
G4 M8570 OSインストールについて
-
CD-ROMなしのノートパソコンへ...
-
Linux初めてです。
-
Cubase LEが起動しません。
-
MAC VirtualBoxにインストール...
-
キヤノン LBP3000 を Linux Mint
-
インストーラが強制終了してし...
-
ブルースタックス3が起動でき...
-
古い話ですが、Windows 3.1と95...
-
起動時にCD-ROMトレイが勝手に...
-
パソコンの動作環境を調べる方法
-
WindowsXPの無限再起動
-
Ubuntu パワーオフができない?
-
msi USB Windowsインストール
-
Mac OSX10.9.5から10.9.4へ
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Windows10を使ってるのですがア...
-
ibook G4を工場出荷時の状態に...
-
macOS Sonoma 14.1をインストー...
-
古い話ですが、Windows 3.1と95...
-
仮想PCで3Dオンラインゲームを...
-
windows10にて管理者なのにexe...
-
PCゲームの対応OSについて
-
PowerMac G4 HDの初期化をした...
-
Windows7でSmartVisionが見れない
-
[apache]ブラウザでアクセスで...
-
MAC VirtualBoxにインストール...
-
ズンビーニのインストール
-
Windows10で、Windows7の頃のソ...
-
LINUXで画面の解像度が・・・
-
CrossOver Macを使っている方い...
-
Centos5.4 インストール時、起...
-
WindowsMeはUSBにインストール...
-
Win10での「秀丸エディター」の...
-
キヤノン LBP3000 を Linux Mint
-
windows11のスペック回避をして...
おすすめ情報