Linuxの歴史とかを参考にすると、なんらかの異なるOSを使って開発し
また異なるOSを使って、HDDやUSBメモリーなどに書き込むことになるようです。
IBM PC/AT互換機であれば、そのBIOS仕様にもとづいて
ブートローダーが呼び出され、ブートローダーからHDD上のデータを読み込んで
OSの起動がはじまることになります。
Android機などのARMシステムでは、仕組みは大きく違ってきますが
定番の、組み込み分野のブートローダーがあるようです。
Windows,OS/2,MS-DOSなどはチェインロードで、固有のブートプログラムを使います。
Linuxは、ちょっとPC/ATの標準を外れて、ブートローダーから直接
Linuxのカーネルを呼び出し、また起動メニューからカーネルオプションを渡したりもします。
(そのため、Windowsのブートローダーから、直接Linuxを起動することはできません)
この部分は、FLOSSのGRUBやLILOがありますし
もっとも若い世代のOSとして知られるReactOSにも、独自のブートローダーがあります。
こういったものを、ライセンスを確認した上で、採用するほうが楽でしょう。
HDDにインストールすること自体は簡単ですが、BIOSアクセスでOSをロードしても
HDDコントローラー本来の性能を発揮できないので
普通はOSの起動過程で、デバイスドライバーを使ったHDDアクセスに切り替わります。
(PIO病なんて言葉もありますが、UDMAなどはドライバー無しには機能しません)
HDDへのインストールは、同時にデバイスドライバーの組み込み(開発)も要します。
汎用性を求めるなら、むしろUSBブート専用として
USB-MSDドライバーだけ、先に整備するという手もあると思います。
ともかく、デバイスドライバーまで完成しなければ
独自のインストールシステムを作ることもできないはずです。
ソースが読めるなら、Linux,FreeBSDなどのデバイスドライバーが
目的のハードウェアの仕様と扱い方の資料ともなるはずですが…
全体的に、いろんなOSを理解しないと
独自のOSを完成させることは難しいと思います。
お礼
こんにちは、回答ありがとう御座います。とうとつですがこの本いいですよね、私はC言語などの入門書ばかり読んでいたのですが、この本のおかげで動作の理屈など知りえた事がたくさんありました。これで何でも作れると思えたくらいです。 上記のHPを参考に頑張ります。有難うございました。
補足
こんにちは、今回の質問でみなさんお忙しい中、解答をしてくださり有難うございます。 どの方もこれから自分が勉強していく上で参考になる答えを頂き感謝しています。 どの方をベストアンサーにするか迷いましたが、上記の既にHDDへインストールされている方のアドレスを提示してくださったgyewqewiさんをベストアンサーにさせて頂きます。 また、Linuxの構成など提示してくださったvaiduryaさん、たくさんのヒントを有難うございます。 aran62さん、Cupper-2さん 貴重なお時間をさいて解答頂き有難うございます。