汎用OSと組み込みOSの違い
PCのSSDにインストールするOS(普通のWindows11とか)は汎用OSと呼ばれています。
これを提供しているMicrosoftなどは、どんなコンピュータで利用されるかは想定しておらず、
基本的に自由にカスタマイズして使えるようになっています。
また自作でPCを組み立てる場合など、新品のSSDには当然ですが工場出荷時にOSはインストールされていません。
しかしIoTカメラなどは汎用OSほどの機能は不要です。
録画を指示されたらして、命令されたらデータをスマホに送るという必要最低限の命令を聞いてくれるコンピュータっぽくなればいい。
ってことで汎用OSをメーカーがカスタマイズしたり、むしろ特定の機器に組み込まれることを想定したOSを利用して製品に組み込み、工場からOSをインストールした状態で出荷します。
このOSが、組み込みOSと呼ばれるものです。
よって、汎用OSは膨大な数がリリースされているとはいえ、組み込みOSは製品毎にカスタマイズされたOSを指すので数は組み込みOSの方が相対的に見て多いはずです。
組み込みOSはLinuxが利用されているケースが多いです。
いってしまえば、組み込みOSとは羽や足をもぎ取られ必要最低、目だけ動かせるように改造されたLinuxコンピュータという感じ。
よくIoTがブルートフォース攻撃に加担するようなゾンビ状態になる、いわゆるボット化することがあるが、これはIoT機器に組み込まれたLinuxの機能を悪用されている。
一見、遠隔操作カメラの正規利用に、カメラからのURLアクセスの機能なんて必要ないように思えるが、ファームウェア更新や時刻同期、ログ送信などで内外(カメラ→URL)の通信は必須になる。
宛先を固定、つまりアップデートはexample.comにしかしない。ログ送信はアプリの入ったユーザのスマホにしかしないといった対抗手段はあるが、柔軟性がなくなるため、これを採用している製品もあるが、現実的には難しい。
ファームウェアとソフトウェア
ファームウェアの代表例はBIOS/UEFIなどがあげられます。
これはマザーボードにはんだ付けされているチップに記録されている機械語で構成されています。
ソフトウェアの代表例はWord.exeやExcel.exeなどかな。OSがメモリに展開する機械語で構成されたもの。
どちらも機械語で書かれたものです。どちらもCPUが実行します。
違いは、そのプログラムがどれほどハードウェアと密接に関わっているかです。
BIOS/UEFIは、その動きによってビープ音を鳴らしたり、SSDの操作をしたりとハードウェアに対し影響が大きいです。
対して同じ機械語で書かれたコードをCPUが実行するにしても、どれだけすごいExcelを操作してもランプが光ったり装置に影響を大きく及ぼしたりはしません。
これがファームウェアとソフトウェアの違いです。