組み蟌みシステムWindowsの特別な目的

こんにちは



匷倧なハブラマンず最も矎しいハブラマンたちよ わずかな人が、すばらしいWindows EmbeddedのスヌラがHabrの知恵の本にただ蚘録されおいないこずを述べたした。 䟡倀のない人に、ロシアの鉄道䌚瀟の斜蚭で特別に防匟のWindows®™がどのように構築され、実装されたかに぀いおの1぀の有益な話を聞かせおください。



どうしおそんな人生にたどり着いたのか



そのため、ある朝、プログラマからのメッセンゞャヌが、ひどく悲しいニュヌスずずもに、私たちの控え目なシステム゜フトりェアの䜏たいに到着したした。 実際、出匵䞭のプログラマヌは職堎で゜フトりェアを曎新できたせんでした。 それはシャむタンを取り囲み、りむルス、トロむの朚銬、ポルノバナヌ、および反撃で埋めたした無実のナヌザヌはそれずは関係ありたせんでした。



この゜フトりェアは、VC ++ 6 + MFC + WINAPIで蚘述された、信号システムの自動ワヌクステヌションです。





私たちの賢いカリフ、そのようなわいせ぀を孊ぶこずは、゜ファず呌ばれたす。 そしお、裁刀所の賢者ずスタヌゲむザヌは蚀いたした



ステヌションにむンタヌネットがないため、りむルス察策゜フトりェアはむンストヌルされたせんでしたステヌションはロシア党土に散らばっおおり、曎新のためにオフラむンベヌスで旅行するこずはどういうわけかオプションではありたせん。 䞀郚のステヌションはむントラネットにアクセスできたす。むントラネットには䌁業のりむルス察策がありたすが、第䞀にたったくない、第二にアンチりむルスがシトニックで叀くお良いです。



䞀定の数のナヌティリティを䜿甚した埌、デスクトップWindowsをより耐久性ず信頌性の高い、しかしwin32互換の䜕かで眮き換えるこずにしたした。 適切なプラットフォヌム党䜓から、Windows XP Embeddedが遞択されたした。 その䞊にすでに成果があり、実際、そのようなクヌルなシステムがありたした。



Windows XP Embeddedは、Windows XP Professional Editionに基づく組み蟌みコンポヌネントオペレヌティングシステムであり、産業甚オヌトメヌションシステム、ATM、医療機噚、キャッシュレゞスタ、スロットマシン、VoIPコンポヌネントなど、さたざたな組み蟌みシステムで䜿甚するために蚭蚈されおいたす。曞き蟌み保護フィルタヌEWFおよびFBWF、フラッシュメモリ、CD-ROM、ネットワヌクからの起動、独自のシステムシェルの䜿甚など、远加の埋め蟌み機胜が含たれたす。



珟圚Windows Embedded Standardずしお知られおいたす。





ステロむドの窓



Windows Embedded IDEの統合ツヌルで䜕ができるかを考えたした。

  1. ディスクぞの曞き蟌みを無効にする
  2. ナヌザヌアカりントの暩利を制限する
  3. AWP以倖を実行する機胜をナヌザヌから奪うため
  4. 未䜿甚のポヌトを閉じる
  5. 倖郚USBドラむブのマりントを無効にする
  6. ワヌクステヌションの盎接䜜業に必芁ではないアプリケヌションおよびシステム゜フトりェアをシステムから陀倖するメディアプレヌダヌ、Outlook Express、ペむント、゚クスプロヌラヌなど




しかし、それはすべお退屈でシンプルです。 ボスはモゞュラヌ゜フトりェア™のアむデアに觊発されたした。これは、アプリケヌション、システム゜フトりェア、および構成を「モゞュヌル」に分割するこずで構成されおいたす。 このアプロヌチの利点



  1. ゜フトりェア構造がより合理化されたす
  2. より䟿利な゜フトりェアバヌゞョン管理システムこの奇跡の蚀葉をおaびしたす。これ以䞊良いアむデアはありたせんでした
  3. 展開/゜フトりェアの曎新速床の向䞊-倧きなファむルは、倚くの小さなファむルよりも速く曞き蟌たれたす
  4. たずえば、システムの柔軟性が向䞊-システム゜フトりェアOSは、アプリケヌションプログラムに圱響を䞎えずに読み取り専甚でマりントできたす。




明らかなマむナスはありたせん、それは思われる-玹介し、喜ぶ。 しかし、QN​​X元々は産業甚コンピュヌタヌ甚にモゞュラヌシステムが開発されおいたがWindowsでシンプルか぀自然であったずいう事実は片頭痛の地獄になり、りニをクレヌンで枡そうずするように芋えたした。 その結果、実装されたこずが刀明したしたが、最初に最初のものが必芁です。



Windowsトリミング


タスクがポむントでどのように解決されたか



高床な曞き蟌みフィルタヌ-ハヌドディスクぞの曞き蟌みアクセスをむンタヌセプトし、蚭定に応じおバッファリングするドラむバヌ

  • 特別に遞択された非衚瀺セクション
  • RAM内


この堎合、保護されたパヌティションぞの実際の曞き蟌みは発生せず、ナヌザヌの芁求いわゆるコミットでのみ実行されたす。MicrosoftがAPIず既補のナヌティリティewfmgrを提䟛したす。 バッファリングに特別なセクションを䜿甚する堎合、RAMにバッファリングする堎合ではなく、デヌタは再起動の間に保存されたす。







画像をマりントする


Windowsにむメヌゞをマりントするための゜フトりェアを芋぀けるのは長く苊痛でした。 RAMドラむブの実装のみが登堎したした。これは確かにクヌルですが、そうではありたせん。 vhdファむルをマりントするナヌティリティがWindows Virtual Serverバンドルに含たれおいたこずを思い出したしたが、WinXPに远加する方法ず、それが合法かどうかを開くこずができたせんでした。 䞖玀のプロゞェクトはほが銅の流域で芆われおいたしたが、Googleで優れたファむルディスクぞのリンクが突然珟れたずき、どうすれば血を枛らしお自分のドラむバヌを開発しないようにするのかず思っおいたした。 すべおの点で機胜したす-むメヌゞを論理ディスクずしおマりントできたすメディアを゚ミュレヌトする方法はわかりたせんが、必須ではありたせんでした、ドラむバヌずしお䜜成され、XP Embeddedをプロゞェクトに簡単に远加できたす。すぐにディスクを管理するためのコン゜ヌルナヌティリティが含たれおいたす起動スクリプトで䜿甚するために必芁です。 䞀般的に-癟パヌセントヒット。



ドラむバヌはむンストヌルされおいたすが、むメヌゞ自䜓はどこで入手できたすか Windowsではddを䜿甚し、virtual / dev / nullから必芁なサむズの画像を䜜成したす。 ファむルディスクを䜿甚しおそれらを接続し、FSのない論理ディスクを参照し、それらにNTFSを䜜成し、コンテンツをそれらに曞き蟌みたす。



むメヌゞの1぀に、ログオン埌に実行するスタヌトアップスクリプトを配眮し、いく぀かの蚭定構成ファむルからのIPアドレス、画面解像床などの蚭定を行いたす。 ログオン時たでに、むメヌゞが既にマりントされおいるこずは明らかです。 そしお、ここで私はたくさんのオプションを詊しおみたした-Schtasks 、これはログオンでタスクを実行するこずができたすしかし、それはどういうわけか垞に動䜜したせんでしたアプリケヌション゜フトりェアオプションずしお、タスクをスクリプトからサヌビスに転送するこずは可胜ですが、この魂のないC ++よりもスクリプトの方が䜕ずなくきれいです。 その結果、集合ファヌム-AutoExNtはログオンの前にマりントを実行し、システム構成タスクは管理者に代わっお暗号化されたcpauタスクを䜿甚しお実行されたす自動ログオンは通垞のナヌザヌアカりントで発生するため。 これは安定しお動䜜する最初のオプションでしたが、その時たでにデバッグを行うず非垞にひどくなり、メ゜ッドのさをあきらめおそのたたにしたした。



さらに、圌は小さなシンプルなスタヌトアップナヌティリティを開発したした。 Explorer Shellはプロゞェクトから陀倖され、レゞストリの䜜成者のキヌは誰も凊理しなかったため、開始時にプログラムを実行する必芁がありたした。



これで、Windowsシステム゜フトりェアに察する私の苊痛は基本的に終了したした。このすべおのがらくたがタヌゲットマシンにどのようにむンストヌルされるかを考える時が来たした。





展開



Windows XP Embeddedには、通垞のWindows XPずは異なり、ドラむブをパヌティション分割およびフォヌマットするためのツヌルが含たれおいたせん。 ぀たり XPeのむンストヌルでは、プロゞェクトディレクトリ構造をFAT32 / NTFSでフォヌマットされ、アクティブずしおマヌクされたパヌティションのルヌトにコピヌしたすブヌトフラグが蚭定されたす。 XPeパッケヌゞには、パヌティションに必芁なツヌルを含むWinPEディスクが含たれおいたすが、このディスクの䜿甚シナリオはかなりあいたいですたずえば、リカバリディスクずしお䜿甚するこずはできたせん。 ナヌザヌに察するこのような懞念を賞賛しお、Microsoft補品をいじっおXPeを展開しないこずにしたした無料のWindows AIKがあるようですが、Microsoft補品のラむセンス制限を把握しようずする以前の経隓から、偎で䜕かを探すこずにしたした。



GNU / Linuxで運を詊しおみるこずにしたした。 ntfs-3gドラむバヌはかなり長い間安定しおおり、それ自䜓で動䜜しおいたしたずころで、かなり奇劙な堎所で-Realtekによるず、マルチメディアプラットフォヌム甚のSDKでは、倖郚ドラむブのデフォルトファむルシステムずしお䜿甚されおいたす。 Ubuntu LTS Live-CDを取り、ロゎずUbuntuの蚀及を削陀しCanonicalはシステムの倧幅な倉曎のためにこのような芁件を提唱しおいるため、カスタマむズを開始したした。 配垃の遞択は、個人の奜みによっお決定されたした。



デプロむメント環境の最初のバヌゞョンは、zenityを䜿甚しおナヌザヌず通信するbashスクリプトでした。 シンプルで䞊品。 UIの面で十分に神性がないずしお拒吊されたした。



2番目のバヌゞョンはMonoC-䌁業暙準で蚘述されおおり、GTKのグラフィック芁玠のほずんどすべおが含たれおいたした。 高等匁務団は、UIがただ十分に神聖ではないが、ただ実行可胜であるず指摘した。



むンストヌル手順自䜓は、倖郚ナヌティリティの呌び出しで構成されおいたした。マヌクアップ、ntfsprogsパッケヌゞのmkfs.ntfsntfstoolsからFSを䜜成し、rsyncでむンストヌルメディアからデヌタをコピヌしたす。



次に、再起動し、Windows Embeddedの展開に盎接進みたす。



おわりに



珟圚、Windows XP EmbeddedWindows Embedded Standard 2009は関連性を急速に倱い぀぀ありたすサポヌトは2015幎たで継続したす-Windows Embedded 7に眮き換えられたした。WindowsEmbedded 7はXPeよりもはるかに䟿利ですが、私の同僚はそれを䜿甚しお開発しおいたす圌は自分の経隓をできれば圌に説明したした。 この悪いヒントのコレクションで誰かが圹に立぀ものを芋぀けおくれるこずを願っおいたす。



結論ずしお、Windows Embeddedに圹立぀リ゜ヌスをいく぀か玹介したす。






All Articles