IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 東芝テック株式会社の特許一覧

特開2024-156562ドライバ生成装置およびドライバ生成プログラム
<>
  • 特開-ドライバ生成装置およびドライバ生成プログラム 図1
  • 特開-ドライバ生成装置およびドライバ生成プログラム 図2
  • 特開-ドライバ生成装置およびドライバ生成プログラム 図3
  • 特開-ドライバ生成装置およびドライバ生成プログラム 図4
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024156562
(43)【公開日】2024-11-06
(54)【発明の名称】ドライバ生成装置およびドライバ生成プログラム
(51)【国際特許分類】
   G06F 8/61 20180101AFI20241029BHJP
【FI】
G06F8/61
【審査請求】未請求
【請求項の数】5
【出願形態】OL
(21)【出願番号】P 2023071138
(22)【出願日】2023-04-24
(71)【出願人】
【識別番号】000003562
【氏名又は名称】東芝テック株式会社
(74)【代理人】
【識別番号】110003708
【氏名又は名称】弁理士法人鈴榮特許綜合事務所
(72)【発明者】
【氏名】小松原 慶啓
(72)【発明者】
【氏名】稲垣 泰広
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376AD27
5B376BC57
5B376FA04
(57)【要約】      (修正有)
【課題】コンパイル実行時に独自の環境を必要とするソースコードをもコンテナ内においてコンパイルするドライバ生成装置及びプログラムを提供する。
【解決手段】ドライバ生成装置は、コンテナ仮想化ソフトウェアによるコンテナの起動時に、クロスコンパイラによるコンパイル実行時にファイルシステムパッチが必要か否かを判定させるステップと、ファイルシステムパッチが必要との判定結果に対しては、コンテナ仮想化ソフトウェアに、ファイルシステムパッチをコンテナ内にマウントさせるステップと、コンテナ仮想化ソフトウェアに、アプリソースをコンテナ内にマウントさせるステップと、コンテナ仮想化ソフトウェアに、クロスコンパイラに前記アプリソースをコンパイルさせてLinuxドライバを生成させるステップと、を含む。
【選択図】図4
【特許請求の範囲】
【請求項1】
プロセッサと、
Linuxドライバのアプリソースと、前記アプリソースをコンパイルするクロスコンパイラを含むコンテナと、前記コンテナを管理するコンテナ仮想化ソフトウェアと、前記クロスコンパイラのためのファイルシステムパッチとを記憶する記憶装置と、
を有するコンピュータを含むドライバ生成装置であって、
前記記憶装置は、前記コンピュータに、
前記コンテナ仮想化ソフトウェアによる前記コンテナの起動時に、前記クロスコンパイラによるコンパイル実行時に前記ファイルシステムパッチが必要か否かを判定する機能と、
前記ファイルシステムパッチが必要との判定結果に対しては、前記ファイルシステムパッチを前記コンテナ内にマウントする機能と、
前記アプリソースを前記コンテナ内にマウントする機能と、
前記アプリソースをコンパイルしてLinuxドライバを生成する機能と、
を実現させるドライバ生成プログラムを記憶する、
ドライバ生成装置。
【請求項2】
前記ファイルシステムパッチは、前記アプリソースのコンパイル実行時に前記クロスコンパイラが必要とするディレクトリ、ファイルのセットである。
請求項1に記載のドライバ生成装置。
【請求項3】
コンピュータと、
前記コンピュータに搭載されるソフトウェア構成と、
を有するドライバ生成装置であって、
前記ソフトウェア構成は、Linuxドライバのアプリソースと、前記アプリソースをコンパイルするクロスコンパイラを含むコンテナと、前記コンテナを管理するコンテナ仮想化ソフトウェアと、前記クロスコンパイラのためのファイルシステムパッチと、前記コンテナ仮想化ソフトウェアを制御するドライバ生成プログラムとを有し、
前記ドライバ生成プログラムは、
前記コンテナ仮想化ソフトウェアによる前記コンテナの起動時に、前記クロスコンパイラによるコンパイル実行時に前記ファイルシステムパッチが必要か否かを判定し、
前記ファイルシステムパッチが必要との判定結果に対しては、前記コンテナ仮想化ソフトウェアに、前記ファイルシステムパッチを前記コンテナ内にマウントさせ、
前記コンテナ仮想化ソフトウェアに、前記アプリソースを前記コンテナ内にマウントさせ、
前記コンテナ仮想化ソフトウェアに、前記クロスコンパイラに前記アプリソースをコンパイルさせて前記Linuxドライバを生成させる、
ドライバ生成装置。
【請求項4】
プロセッサと、
Linuxドライバのアプリソースと、前記アプリソースをコンパイルするクロスコンパイラを含むコンテナと、前記コンテナを管理するコンテナ仮想化ソフトウェアと、前記クロスコンパイラのためのファイルシステムパッチとを記憶する記憶装置と、
を有するドライバ生成装置のコンピュータに、
前記コンテナ仮想化ソフトウェアによる前記コンテナの起動時に、前記クロスコンパイラによるコンパイル実行時に前記ファイルシステムパッチが必要か否かを判定する機能と、
前記ファイルシステムパッチが必要との判定結果に対しては、前記ファイルシステムパッチを前記コンテナ内にマウントする機能と、
前記アプリソースを前記コンテナ内にマウントする機能と、
前記アプリソースをコンパイルしてLinuxドライバを生成する機能と、
を実現させるドライバ生成プログラム。
【請求項5】
Linuxドライバのアプリソースと、前記アプリソースをコンパイルするクロスコンパイラを含むコンテナと、前記コンテナを管理するコンテナ仮想化ソフトウェアと、前記クロスコンパイラのためのファイルシステムパッチと、前記コンテナ仮想化ソフトウェアを制御するドライバ生成プログラムとを有するドライバ生成装置のコンピュータに、
前記コンテナ仮想化ソフトウェアによる前記コンテナの起動時に、前記クロスコンパイラによるコンパイル実行時に前記ファイルシステムパッチが必要か否かを判定し、
前記ファイルシステムパッチが必要との判定結果に対しては、前記コンテナ仮想化ソフトウェアに、前記ファイルシステムパッチを前記コンテナ内にマウントさせ、
前記コンテナ仮想化ソフトウェアに、前記アプリソースを前記コンテナ内にマウントさせ、
前記コンテナ仮想化ソフトウェアに、前記クロスコンパイラに前記アプリソースをコンパイルさせて前記Linuxドライバを生成させる、
ドライバ生成プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、ドライバ生成装置およびドライバ生成プログラムに関する。
【背景技術】
【0002】
「Docker(登録商標)」等に代表されるコンテナ仮想化ソフトウェアを用いて、開発マシンであるホストPCのソフトウェアに依存しない仮想環境であるコンテナに、ホストPCのディレクトリをマウントすることで、ソースコードをコンテナに配置し、コンテナ内においてソースコードをコンパイルするコンパイル環境を実現する技術が知られている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2017-76264号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
ソフトウェアによっては、コンパイル実行時に、独自の環境、たとえば、他の独自ライブラリや複数のソースコードを適切なパスに配置する必要がある。たとえば、Linux(登録商標)カーネルソースを必要とするLinuxドライバがこれにあたる。このように開発環境での事前準備が発生する場合では、ソースコードをコンテナに配置するだけでは、ソースコードをコンパイルすることができない。
【0005】
本発明が解決しようとする課題は、コンパイル実行時に独自の環境を必要とするソースコードをもコンテナ内においてコンパイルすることができるドライバ生成装置を提供することである。
【課題を解決するための手段】
【0006】
実施形態に係るドライバ生成装置は、プロセッサと記憶装置とを有するコンピュータを含む。記憶装置は、Linuxドライバのアプリソースと、アプリソースをコンパイルするクロスコンパイラを含むコンテナと、コンテナを管理するコンテナ仮想化ソフトウェアと、クロスコンパイラのためのファイルシステムパッチとを記憶する。記憶装置は、コンピュータに、コンテナ仮想化ソフトウェアによるコンテナの起動時に、クロスコンパイラによるコンパイル実行時にファイルシステムパッチが必要か否かを判定する機能と、ファイルシステムパッチが必要との判定結果に対しては、ファイルシステムパッチをコンテナ内にマウントする機能と、アプリソースをコンテナ内にマウントする機能と、アプリソースをコンパイルしてLinuxドライバを生成する機能とを実現させるドライバ生成プログラムを記憶する。
【図面の簡単な説明】
【0007】
図1図1は、実施形態に係るドライバ生成装置のハードウェア構成を示す図である。
図2図2は、実施形態に係るドライバ生成装置の機能構成を模式的に示す図である。
図3図3は、ファイルシステムパッチの構成例を示す図である。
図4図4は、実施形態に係るドライバ生成装置の動作の処理の流れを示すフローチャートである。
【発明を実施するための形態】
【0008】
以下、実施形態に係るドライバ生成装置について図面を参照しつつ説明する。
【0009】
(ハードウェア構成)
まず、図1を参照して、実施形態に係るドライバ生成装置10のハードウェア構成について説明する。図1は、実施形態に係るドライバ生成装置10のハードウェア構成を示す図である。ドライバ生成装置10は、コンピュータで構成される。
【0010】
図1に示されるように、ドライバ生成装置10は、プロセッサ11とROM(Read Only Memory)12とRAM(Random Access Memory)13とストレージ14とディスプレイ15とキーボード16とインタフェース(I/F)17とを有する。ドライバ生成装置10は、これらに加えて、他の周辺装置を有していてもよい。
【0011】
プロセッサ11とROM12とRAM13とストレージ14とディスプレイ15とキーボード16とインタフェース17は、バス18を介して互いに電気的に接続されており、バス18を介して互いにデータの送受信を行う。
【0012】
プロセッサ11は、プログラムの実行、データの処理を行うハードウェアである。プロセッサ11は、たとえば、CPU(Central Processing Unit)やGPU(Graphical Processing Unit)等を含む汎用ハードウェアプロセッサで構成される。プロセッサ11は、ROM12とRAM13とストレージ14とディスプレイ15とキーボード16とインタフェース17の全体を制御する。
【0013】
ROM12とRAM13は、主記憶装置を構成する。ROM12は、不揮発性メモリである。RAM13は、揮発性メモリである。
【0014】
ROM12は、ドライバ生成装置10の起動に必要な起動プログラムを記憶している。プロセッサ11は、ROM12内の起動プログラムを実行することにより、ドライバ生成装置10を起動する。ROM12は、例えば、EPROM(Erasable Programmable Read Only Memory)で構成され、起動プログラムに加えて、起動時の諸設定を記憶している。
【0015】
RAM13は、プロセッサ11が各種機能を実施するのに必要なプログラムと、プログラムの実行に必要なデータを一時的に記憶する。
【0016】
ストレージ14は、データを非一時的に記憶する補助記憶装置である。ストレージ14は、HDD(Hard Disk Drive)やSSD(Solid State Drive)等の不揮発性メモリで構成される。ストレージ14は、プロセッサ11が実行するプログラムと、プログラムの実行に必要なデータを非一時的に記憶している。プロセッサ11は、ストレージ14内のプログラムとデータをRAM13内に読み込み、プログラムを実行することにより各種機能を実行する。
【0017】
ディスプレイ15は、データを出力する出力装置である。ディスプレイ15は、種々の情報をユーザに提示する。
【0018】
キーボード16は、データを受け取る入力装置である。キーボード16は、プロセッサ11に実行させる命令、ストレージ14に記憶するデータ等を受け取る。
【0019】
インタフェース17は、外部装置と接続され、外部装置との間のデータの入出力を可能にする。外部装置は、マウス、受信装置等の入力装置、送信装置等の出力装置、ディスクドライブ等の入出力装置を含み得る。
【0020】
(機能構成)
次に、図2を参照して、ドライバ生成装置10の機能構成について説明する。図2は、ドライバ生成装置10の機能構成を模式的に示す図である。
【0021】
図2に示されるように、ドライバ生成装置10は、ホストPC20と、ホストPC20に搭載されるソフトウェア構成21とを有する。ソフトウェア構成21は、ストレージ14に記憶されており、ドライバ生成装置10の起動時に、RAM13内に読み込まれる。
【0022】
ソフトウェア構成21は、OS22、コンテナ仮想化ソフトウェア23、コンテナ24、ドライバ生成プログラム27、ファイルシステムパッチ28、アプリソース29を有する。ホストPC20は、コンテナ仮想化ソフトウェア23を実行する物理的なコンピュータである。
【0023】
コンテナ仮想化ソフトウェア23は、コンテナ型の仮想環境を実現するプラットフォームである。コンテナ仮想化ソフトウェア23は、コンテナ24を管理する実行環境を提供する。コンテナ24の管理は、コンテナ24の起動、コンテナ24内のアプリケーションの実行、コンテナ24の停止および破棄を含む。
【0024】
コンテナ24は、コンテナイメージをコンテナ仮想化ソフトウェア23にマウントすることにより形成される。コンテナ24は、プラットフォームに依存しないアプリケーション実行環境を提供する。実施形態では、コンテナ24は、アプリソース29をコンパイルするコンパイル実行環境を提供する。
【0025】
コンテナ24は、クロスコンパイラ25と、クロスライブラリ26とを有する。コンテナ24は、OS22のカーネルを利用して動作する。たとえば、コンテナ仮想化ソフトウェア23は、Dockerエンジンであり、コンテナ24は、Dockerコンテナである。
【0026】
アプリソース29は、コンパイル時に独自のライブラリを必要とするアプリケーションのソースコードである。言い換えれば、アプリソース29は、単にコンテナ24内に配置するだけではビルドできないアプリケーションのソースコードである。たとえば、アプリケーションは、Linuxカーネルソースを必要とするLinuxドライバである。Linuxドライバは、たとえば、MFP(Multi Function Peripheral)、BCP(Barcode Printer)、POS(Point of Sale)、POS周辺機器等のドライバである。
【0027】
ファイルシステムパッチ28は、アプリソース29のコンパイル実行時にクロスコンパイラが必要とするディレクトリ構造やファイルのセットである。ファイルシステムパッチ28の構成例を図3に示す。図3において、usrディレクトリ下のlibディレクトリ下のlibtest.soと、usrディレクトリ下のsrcディレクトリ下のsrccode1と、rootディレクトリ下のsrcディレクトリ下のsrccode2と、etcディレクトリ下のtest.confがファイルシステムパッチ28に相当する。
【0028】
libtest.soは、アプリソース29のコンパイル時にクロスコンパイラ25が必要とする共有オブジェクトファイルである。たとえば、libtest.soは、アプリソース29のコンパイル時にリンクするライブラリである。
【0029】
たとえば、test.confは、アプリソース29のコンパイル時にクロスコンパイラ25が必要とする環境変数、オプション等の設定ファイルである。
【0030】
たとえば、srccode1とsrccode2は、アプリソース29のコンパイル時に必要なヘッダファイルである。ヘッダファイルは、関数や定数、構造体等を宣言するためのファイルである。
【0031】
ファイルシステムパッチ28は、たとえばtar.gzとして、一つのファイルに纏めることができる。
【0032】
(動作)
以下、図4を参照して、ドライバ生成装置10の動作について説明する。ドライバ生成装置10の動作は、コンテナ技術を利用してアプリソース29をコンパイルして、アプリケーションたとえばLinuxドライバを生成するものである。図4は、ドライバ生成装置10の動作の処理の流れを示すフローチャートである。
【0033】
ドライバ生成装置10の動作は、プロセッサ11が、OS22による制御の下、ドライバ生成プログラム27を実行することによって、また、ドライバ生成プログラム27に従ってコンテナ仮想化ソフトウェア23を制御することによって行われる。別の観点からすると、ドライバ生成装置10の動作は、ドライバ生成プログラム27がコンテナ仮想化ソフトウェア23を通してコンテナ24を制御することによって行われる。以下では、便宜上、ドライバ生成プログラム27とコンテナ仮想化ソフトウェア23を動作主体として説明する。ドライバ生成プログラム27とコンテナ仮想化ソフトウェア23は起動しているものとする。
【0034】
ACT11において、ドライバ生成プログラム27は、コンテナ仮想化ソフトウェア23に、コンテナ24を起動させる。その際、ドライバ生成プログラム27は、ユーザによって指定されるコンテナ24の起動オプションを受け取る。
【0035】
ACT12において、ドライバ生成プログラム27は、コンテナ24内のクロスコンパイラ25によるアプリソース29のコンパイルにパッチファイルが必要か判定する。判定の結果が必要である場合には、ACT13の処理に進み、判定の結果が不要である場合には、ACT13の処理を飛ばしてACT14の処理に進む。パッチファイルの必要性の有無は、コンテナ24の起動オプションとしてユーザによって指定される。
【0036】
ACT13において、ドライバ生成プログラム27は、コンテナ仮想化ソフトウェア23に、ファイルシステムパッチ28をコンテナ24内にマウントさせる。その際、ファイルシステムパッチ28の内容が、たとえば図3に示すように、コンテナ24内に展開される。
【0037】
ACT14において、ドライバ生成プログラム27は、コンテナ仮想化ソフトウェア23に、アプリソース29をコンテナ24内にマウントさせる。これにより、ホストPC20とコンテナ24との間でアプリソース29が共有される。このため、コンテナ24内におけるアプリソース29に対する処理は、ホストPC20上のアプリソース29にも反映される。
【0038】
ACT15において、ドライバ生成プログラム27は、コンテナ仮想化ソフトウェア23に、コンテナ24内においてアプリソース29をクロスコンパイラ25にコンパイルさせる。その結果、コンテナ24内とホストPC20上に、Linuxドライバが生成される。
【0039】
ACT16において、ドライバ生成プログラム27は、コンテナ仮想化ソフトウェア23に、コンテナ24を停止させ破棄させる。
【0040】
以上の処理を経て、ドライバ生成装置10の動作、すなわち、コンテナ24を利用してアプリソース29をコンパイルして、Linuxドライバを生成する処理が終了する。
【0041】
(ドライバ生成プログラム)
上記の説明から分かるように、ドライバ生成プログラム27は、ホストPC20に、コンテナ仮想化ソフトウェア23によるコンテナ24の起動時に、クロスコンパイラ25によるコンパイル実行時にファイルシステムパッチ28が必要か否かを判定する機能と、ファイルシステムパッチ28が必要との判定結果に対しては、ファイルシステムパッチ28をコンテナ内にマウントする機能と、アプリソース29をコンテナ24内にマウントする機能と、アプリソース29をコンパイルしてLinuxドライバを生成する機能とを実現させる。
【0042】
別の観点からすると、ドライバ生成プログラム27は、コンテナ仮想化ソフトウェア23によるコンテナの起動時に、クロスコンパイラ25によるコンパイル実行時にファイルシステムパッチ28が必要か否かを判定し、ファイルシステムパッチ28が必要との判定結果に対しては、コンテナ仮想化ソフトウェア23に、ファイルシステムパッチ28をコンテナ24内にマウントさせ、次に、アプリソース29をコンテナ24内にマウントさせ、次に、クロスコンパイラ25にアプリソースをコンパイルさせてLinuxドライバを生成させる。
【0043】
(効果)
以上の説明から分かるように、実施形態によれば、コンパイル時実行に特殊なディレクトリ構造や独自ファイルを必要とするアプリソース29をコンパイルする場合、コンテナ24の起動時に、特殊なディレクトリ構造や独自ファイルを有するファイルシステムパッチ28がコンテナ24内にマウントされる。このため、コンパイル時実行に特殊なディレクトリ構造や独自ファイルを必要とするアプリソース29をコンパイルすることができる。2度目以降のコンパイルでは、一度マウントしたファイルシステムパッチ28が使用できるため、コンパイルの度に必要なディレクトリ構造や独自ファイルを配置する手間を削減できる。ファイルシステムパッチをtar.gzとして一つのファイルに纏めることでソースコード管理が容易になる。
【0044】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0045】
10…ドライバ生成装置、11…プロセッサ、12…ROM、13…RAM、14…ストレージ、15…ディスプレイ、16…キーボード、17…インタフェース、18…バス、20…ホストPC、21…ソフトウェア構成、23…コンテナ仮想化ソフトウェア、24…コンテナ、25…クロスコンパイラ、26…クロスライブラリ、27…ドライバ生成プログラム、28…ファイルシステムパッチ、29…アプリソース。
図1
図2
図3
図4