(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024156564
(43)【公開日】2024-11-06
(54)【発明の名称】ドライバ生成装置およびドライバ生成プログラム
(51)【国際特許分類】
G06F 8/41 20180101AFI20241029BHJP
G06F 8/61 20180101ALI20241029BHJP
【FI】
G06F8/41
G06F8/61
【審査請求】未請求
【請求項の数】4
【出願形態】OL
(21)【出願番号】P 2023071140
(22)【出願日】2023-04-24
(71)【出願人】
【識別番号】000003562
【氏名又は名称】東芝テック株式会社
(74)【代理人】
【識別番号】110003708
【氏名又は名称】弁理士法人鈴榮特許綜合事務所
(72)【発明者】
【氏名】小松原 慶啓
【テーマコード(参考)】
5B081
5B376
【Fターム(参考)】
5B081CC41
5B376AD27
5B376BC57
5B376EA17
5B376FA04
(57)【要約】
【課題】コンピュータ上と同じコンパイルコマンドを用いて、コンテナ内においてドライバソースをコンパイルできるドライバ生成装置を提供することである。
【解決手段】実施形態に係るドライバ生成装置は、プロセッサと記憶装置を有する。記憶装置は、Linux搭載の組み込み機器向けのカーネルソースおよびドライバソースと、ドライバソースのコンパイラを含むコンテナと、コンテナを管理するコンテナ仮想化ソフトウェアとを記憶する。記憶装置は、プロセッサに、コンテナの起動時に、コンピュータ上のカーネルソースと同一パスのディレクトをコンテナ内に作成する機能と、コンピュータ上のカーネルソースをコンテナ内の同一パスのディレクトにマウントする機能と、ドライバソースをコンテナ内にマウントする機能と、コンピュータ上と同じコマンドを用いてドライバソースをコンパイルする機能とを実現させるプログラムを記憶する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
プロセッサと、
Linux搭載の組み込み機器向けのカーネルソースと、前記組み込み機器向けのデバイスドライバのドライバソースと、前記ドライバソースをコンパイルするクロスコンパイラを含むコンテナと、前記コンテナを管理するコンテナ仮想化ソフトウェアとを記憶する記憶装置と、
を有するコンピュータを含むドライバ生成装置であって、
前記記憶装置は、前記コンピュータに、
前記コンテナ仮想化ソフトウェアによる前記コンテナの起動時に、前記コンピュータ上の前記カーネルソースのパス情報を参照する機能と、
前記パス情報に基づき、前記コンピュータ上の前記カーネルソースのパスのディレクトと同一パスのディレクトを前記コンテナ内に作成する機能と、
前記コンピュータ上の前記カーネルソースを前記コンテナ内の前記同一パスの前記ディレクトにマウントする機能と、
前記ドライバソースを前記コンテナ内にマウントする機能と、
前記コンピュータ上と同じコマンドを用いて前記ドライバソースをコンパイルして前記デバイスドライバを生成する機能と、
を実現させるドライバ生成プログラムを記憶する、
ドライバ生成装置。
【請求項2】
コンピュータと、
前記コンピュータに搭載されるソフトウェア構成と、
を有するドライバ生成装置であって、
前記ソフトウェア構成は、Linux搭載の組み込み機器向けのカーネルソースと、前記組み込み機器向けのデバイスドライバのドライバソースと、前記ドライバソースをコンパイルするクロスコンパイラを含むコンテナと、前記コンテナを管理するコンテナ仮想化ソフトウェアと、前記コンテナ仮想化ソフトウェアを制御するドライバ生成プログラムとを有し、
前記ドライバ生成プログラムは、
前記コンテナ仮想化ソフトウェアによる前記コンテナの起動時に、前記コンピュータ上の前記カーネルソースのパス情報を参照し、
前記パス情報に基づき、前記コンテナ仮想化ソフトウェアに、前記コンピュータ上の前記カーネルソースのパスのディレクトと同一パスのディレクトを前記コンテナ内に作成させ、
前記コンテナ仮想化ソフトウェアに、前記コンピュータ上の前記カーネルソースを前記コンテナ内の前記同一パスの前記ディレクトにマウントさせ、
前記コンテナ仮想化ソフトウェアに、前記ドライバソースを前記コンテナ内にマウントさせ、
前記コンテナ仮想化ソフトウェアに、前記コンピュータ上と同じコマンドを用いて前記クロスコンパイラに前記ドライバソースをコンパイルさせて前記デバイスドライバを生成させる、
ドライバ生成装置。
【請求項3】
プロセッサと、
Linux搭載の組み込み機器向けのカーネルソースと、前記組み込み機器向けのデバイスドライバのドライバソースと、前記ドライバソースをコンパイルするクロスコンパイラを含むコンテナと、前記コンテナを管理するコンテナ仮想化ソフトウェアとを記憶する記憶装置と、
を有する、ドライバ生成装置のコンピュータに、
前記コンテナ仮想化ソフトウェアによる前記コンテナの起動時に、前記コンピュータ上の前記カーネルソースのパス情報を参照する機能と、
前記パス情報に基づき、前記コンピュータ上の前記カーネルソースのパスのディレクトと同一パスのディレクトを前記コンテナ内に作成する機能と、
前記コンピュータ上の前記カーネルソースを前記コンテナ内の前記同一パスのディレクトにマウントする機能と、
前記ドライバソースを前記コンテナ内にマウントする機能と、
前記コンピュータ上と同じコマンドを用いて前記ドライバソースをコンパイルして前記デバイスドライバを生成する機能と、
を実現させるドライバ生成プログラム。
【請求項4】
Linux搭載の組み込み機器向けのカーネルソースと、前記組み込み機器向けのデバイスドライバのドライバソースと、前記ドライバソースをコンパイルするクロスコンパイラを含むコンテナと、前記コンテナを管理するコンテナ仮想化ソフトウェアと、前記コンテナ仮想化ソフトウェアを制御するドライバ生成プログラムとを有するドライバ生成装置のコンピュータに、
前記コンテナ仮想化ソフトウェアによる前記コンテナの起動時に、前記コンピュータ上の前記カーネルソースのパス情報を参照させ、
前記パス情報に基づき、前記コンテナ仮想化ソフトウェアに、前記コンピュータ上の前記カーネルソースのパスのディレクトと同一パスのディレクトを前記コンテナ内に作成させ、
前記コンテナ仮想化ソフトウェアに、前記コンピュータ上の前記カーネルソースを前記コンテナ内の前記同一パスの前記ディレクトにマウントさせ、
前記コンテナ仮想化ソフトウェアに、前記ドライバソースを前記コンテナ内にマウントさせ、
前記コンテナ仮想化ソフトウェアに、前記コンピュータ上と同じコマンドを用いて前記クロスコンパイラに前記ドライバソースをコンパイルさせて前記デバイスドライバを生成させる、
ドライバ生成プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、ドライバ生成装置およびドライバ生成プログラムに関する。
【背景技術】
【0002】
コンテナ技術を用いて、デバイスドライバのドライバソースをコンパイルする環境を整備したコンテナを用意し、ドライバソースをコンテナ内にマウントし、コンテナ内においてドライバソースをコンパイルする技術が知られている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
ドライバソースのコンパイルには、カーネルソースと、カーネルソースのパス情報が必要になる。このため、既存技術でホストPC上のカーネルソース(POS用・MFP用等)を使用してデバイスドライバをビルドする場合、ドライバソースと共にカーネルソースもコンテナ上にマウントする必要がある。ここで、ホストPCとは、コンテナ仮想化ソフトウェアを実行する物理的なコンピュータのことである。このとき、ホストPCとコンテナとの間でカーネルソースのパス情報が変わってしまう。このため、コンテナ上では、ホストPC上においてコンパイル時に使用するコンパイルコマンドを変更しなければいけない。
【0005】
本発明が解決しようとする課題は、コンピュータ上においてコンパイル時に使用するコンパイルコマンドを用いて、コンテナ内においてドライバソースをコンパイルすることができるドライバ生成装置を提供することである。
【課題を解決するための手段】
【0006】
実施形態に係るドライバ生成装置は、プロセッサと、記憶装置とを有するコンピュータを含む。記憶装置は、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は、Linux搭載の組み込み機器向けのドライバソース29をコンパイルするアプリケーション実行環境を提供する。Linux搭載の組み込み機器は、たとえば、MFP(Multi Function Peripheral)、BCP(Barcode Printer)、POS(Point of Sale)、POS周辺機器等である。
【0025】
コンテナ24は、クロスコンパイラ25と、クロスライブラリ26とを有する。コンテナ24は、OS22のカーネルを利用して動作する。たとえば、コンテナ仮想化ソフトウェア23は、Docker(登録商標)エンジンであり、コンテナ24は、Dockerコンテナである。
【0026】
ドライバ生成プログラム27は、コンテナ24内においてドライバソース29をコンパイルして、Linux搭載の組み込み機器向けのデバイスドライバを生成するように、コンテナ仮想化ソフトウェア23を制御するプログラムである。言い換えれば、ドライバ生成プログラム27は、コンテナ仮想化ソフトウェア23を通して、コンテナ24を制御するプログラムである。
【0027】
カーネルソース28は、Linux搭載の組み込み機器のカーネルのソースコードである。たとえば、カーネルソース28は、/src/kernelのディレクトリに格納されている。ドライバソース29は、Linux搭載の組み込み機器向けのデバイスドライバのソースコードである。ドライバソース29は、カレントディレクトリに格納されている。
【0028】
(動作)
以下、
図3と
図4を参照して、ドライバ生成装置10の動作について説明する。ドライバ生成装置10の動作は、コンテナ技術を利用してドライバソース29をコンパイルして、Linux搭載の組み込み機器向けのデバイスドライバを生成するものである。
図3は、ドライバ生成装置10の動作の処理の流れを示すフローチャートである。
図4は、コンテナ24内におけるコンパイル処理の流れを示すフローチャートである。
【0029】
ドライバ生成装置10の動作は、プロセッサ11が、OS22による制御の下、ドライバ生成プログラム27を実行することによって、また、ドライバ生成プログラム27に従ってコンテナ仮想化ソフトウェア23を制御することによって行われる。別の観点からすると、ドライバ生成装置10の動作は、ドライバ生成プログラム27がコンテナ仮想化ソフトウェア23を通してコンテナ24を制御することによって行われる。以下では、便宜上、ドライバ生成プログラム27とコンテナ仮想化ソフトウェア23を動作主体として説明する。ドライバ生成プログラム27とコンテナ仮想化ソフトウェア23は起動しているものとする。
【0030】
ACT11において、ドライバ生成プログラム27は、コンテナ仮想化ソフトウェア23に、コンテナ24を起動させる。
【0031】
ACT12において、ドライバ生成プログラム27は、ホストPC20のカーネルソース28のパス情報を参照し、パス情報をコンテナ仮想化ソフトウェア23に渡す。続いて、ドライバ生成プログラム27は、コンテナ仮想化ソフトウェア23に、パス情報に基づき、コンテナ24内において、ホストPC20上のカーネルソース28のパス(/src/kernel)のディレクトリと同一のパスのディレクトリ(/src/kernel)を作成させる。ディレクトリ(/src/kernel)が既に作成済みの場合、コンテナ仮想化ソフトウェア23は、この処理は省略する。
【0032】
ACT13において、ドライバ生成プログラム27は、コンテナ仮想化ソフトウェア23に、ホストPC20上のカーネルソース28をコンテナ24内のディレクトリ(/src/kernel)にマウントさせる。たとえば、コンテナ仮想化ソフトウェア23がDockerエンジンである場合、ホストPC20でのデバイスドライバのビルド時に使用する環境変数(KERNEL_SRC)等を参照して、Dockerのvolumeオプションで、Dockerエンジンにカーネルソース28をマウントさせる。これにより、ホストPC20とコンテナ24との間でカーネルソース28が共有される。
【0033】
ACT14において、ドライバ生成プログラム27は、コンテナ仮想化ソフトウェア23に、ホストPC20上のドライバソース29をコンテナ24内にマウントさせる。たとえば、ドライバ生成プログラム27は、コンテナ仮想化ソフトウェア23に、カレントディレクトリにあるドライバソース29を、コンテナ24内の/workのディレクトリにマウントさせる。これにより、ホストPC20とコンテナ24との間でドライバソース29が共有される。このため、コンテナ24内におけるドライバソース29に対する処理は、ホストPC20上のドライバソース29にも反映される。
【0034】
ACT15において、ドライバ生成プログラム27は、コンテナ仮想化ソフトウェア23に、コンテナ24内において、ドライバソース29をコンパイルさせる。
【0035】
ここで、
図4を参照して、コンテナ24内におけるコンパイル処理について説明する。
【0036】
ACT21において、コンテナ仮想化ソフトウェア23は、コンテナ24内のカーネルソース28のパス情報を読み込む。コンテナ24内のカーネルソース28のパス情報は、ホストPC20上のカーネルソース28のパス情報と同じであり、共に(/src/kernel)である。
【0037】
ACT22において、コンテナ仮想化ソフトウェア23は、コンテナ24内においてドライバソース29をクロスコンパイラ25にコンパイルさせる。このとき、コンテナ24内のカーネルソース28のパス情報は、ホストPC20上のカーネルソース28のパス情報と同じであるため、コンテナ仮想化ソフトウェア23は、ホストPC20上においてコンパイル時に使用するコンパイルコマンドと同じコンパイルコマンドを用いて、コンテナ24内においてドライバソース29をクロスコンパイラ25にコンパイルさせることができる。これにより、コンテナ24内において、デバイスドライバがビルドされる。その結果、コンテナ24内の/workのディレクトリと、ホストPC20上のカレントディレクトリに、デバイスドライバが生成される。これにて、コンテナ24内におけるコンパイル処理は終了する。デバイスドライバの生成後、コンテナ仮想化ソフトウェア23は、コンテナ24外におけるACT16の処理に戻る。
【0038】
ACT16において、ドライバ生成プログラム27は、コンテナ仮想化ソフトウェア23に、コンテナ24を停止させ破棄させる。
【0039】
以上の処理を経て、ドライバ生成装置10の動作、すなわち、コンテナ24を利用してドライバソース29をコンパイルして、Linux搭載の組み込み機器向けのデバイスドライバを生成する処理が終了する。
【0040】
(ドライバ生成プログラム)
上記の説明から分かるように、ドライバ生成プログラム27は、ホストPC20に、コンテナ仮想化ソフトウェア23によるコンテナ24の起動時に、ホストPC20上のカーネルソース28のパス情報を参照する機能と、パス情報に基づき、ホストPC20上のカーネルソース28のパスのディレクトと同一パスのディレクトをコンテナ24内に作成する機能と、ホストPC20上のカーネルソース28をコンテナ内の同一パスのディレクトにマウントする機能と、ドライバソース29をコンテナ24内にマウントする機能と、ホストPC20上と同じコマンドを用いてドライバソース29をコンパイルしてデバイスドライバを生成する機能とを実現させる。
【0041】
別の観点からすると、ドライバ生成プログラム27は、コンテナ仮想化ソフトウェア23によるコンテナ24の起動時に、ホストPC20上のカーネルソース28のパス情報を参照し、次に、パス情報に基づき、コンテナ仮想化ソフトウェア23に、ホストPC20上のカーネルソース28のパスのディレクトと同一パスのディレクトをコンテナ24内に作成させ、次に、コンテナ仮想化ソフトウェア23に、ホストPC20上のカーネルソース28をコンテナ24内の同一パスのディレクトにマウントさせ、次に、コンテナ仮想化ソフトウェア23に、ドライバソース29をコンテナ24内にマウントさせ、次に、コンテナ仮想化ソフトウェア23に、ホストPC20上と同じコマンドを用いてクロスコンパイラ25にドライバソース29をコンパイルさせてデバイスドライバを生成させる。
【0042】
(効果)
以上の説明から分かるように、実施形態によれば、ホストPC20上のカーネルソース28が、ホストPC20上のカーネルソース28のパスのディレクトリと同一のパスのコンテナ24内のディレクトリにマウントされる。このため、ホストPC20上においてコンパイル時に使用するコンパイルコマンドを用いて、コンテナ24内においてドライバソース29をコンパイルすることができる。つまり、ホストPC20上においてデバイスドライバをビルドする時に必要なカーネルソース28のパス環境変数を変更することなくコンテナ24内においても使用できる。このため、ホストPC20向けのビルドスクリプトを、コンテナ24内におけるドライバソース29のコンパイルに流用することができる。これにより、ユーザは、コンテナ24内のディレクトリ構造を意識することなく、デバイスドライバをビルドすることができる。
【0043】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0044】
10…ドライバ生成装置、11…プロセッサ、12…ROM、13…RAM、14…ストレージ、15…ディスプレイ、16…キーボード、17…インタフェース、18…バス、20…ホストPC、21…ソフトウェア構成、23…コンテナ仮想化ソフトウェア、24…コンテナ、25…クロスコンパイラ、26…クロスライブラリ、27…ドライバ生成プログラム、28…カーネルソース、29…ドライバソース。