JP4735765B2 - Linux program startup system - Google Patents
Linux program startup system Download PDFInfo
- Publication number
- JP4735765B2 JP4735765B2 JP2010166945A JP2010166945A JP4735765B2 JP 4735765 B2 JP4735765 B2 JP 4735765B2 JP 2010166945 A JP2010166945 A JP 2010166945A JP 2010166945 A JP2010166945 A JP 2010166945A JP 4735765 B2 JP4735765 B2 JP 4735765B2
- Authority
- JP
- Japan
- Prior art keywords
- kernel
- bank
- area
- memory
- linux
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
Description
本発明は、Linuxプログラム(以下、単にLinuxとも記載する)をオペレーテ
ィングシステムとして搭載した(組み込んだ)組み込み機器において好適に利用されるL
inuxプログラム起動システムに関する。
The present invention is suitable for use in an embedded device in which a Linux program (hereinafter also simply referred to as Linux) is mounted (embedded) as an operating system.
The present invention relates to an inux program starting system.
各種家電機器、腕時計、携帯電話やPDS等の小型端末、インターネット関連機器等の
様々なコンピュータアプリケーションプログラム(以下、単にアプリケーションとも記載
する)により動作する機器には、オペレーティングシステム(以下、OSとも記載する)
と呼ばれる基本ソフトが実装されているものが多い。そしてこの機器実装用(組み込み用
)OSとして、近年では、オープンソースであるLinuxが注目を集めている。
Various devices such as home appliances, wristwatches, small terminals such as mobile phones and PDSs, Internet-related devices, and other devices that operate with various computer application programs (hereinafter also simply referred to as applications) have operating systems (hereinafter also referred to as OSs). )
Many of them are equipped with basic software. In recent years, Linux as an open source has attracted attention as an OS for mounting (embedding) devices.
このLinuxの特徴として、カーネル(Linuxカーネル)と呼ばれるOSのコア
となる部分のみ開発を専念し、それ以外の部分については、ロイヤリティフリーで公開さ
れているフリーソフトウェアから容易に入手することができるという点が挙げられる。
As a feature of this Linux, only the core part of the OS called the kernel (Linux kernel) is devoted to development, and other parts can be easily obtained from free software released royalty-free. A point is mentioned.
このLinuxは、ファイルシステムを利用したブロックデバイスへの論理的なアクセ
スを前提として構築されている。すなわち、Linuxでは、カーネルの起動時において
、ルートファイルシステムと呼ばれる基本部分をデバイスからマウント{ファイルシステ
ムが格納されたデバイス(格納領域)を起動カーネルから認識(アクセス)できるデバイ
スにして、そのデバイスに格納されたファイルシステム内のアプリケーションを含む各種
ファイルに対して起動カーネルがアクセス可能にすることを意味する}することにより、
様々なアプリケーションを利用してブロックデバイスに格納されたデータにアクセスする
ことが可能である。
This Linux is constructed on the premise of logical access to a block device using a file system. In other words, in Linux, when a kernel is started, a basic part called a root file system is mounted from a device {a device (storage area) in which a file system is stored is made a device that can be recognized (accessed) from the boot kernel, and the device Means that the boot kernel can access various files including applications in the stored file system}
Various applications can be used to access data stored in the block device.
通常、Linuxが動作する標準的なシステムであるパーソナルコンピュータ(以下、
パソコンという)である例えばIBM・AT互換機においては、起動時(ブート時)にマ
ウントされるデバイスを表す情報は、MBR(Master Boot Record)と呼ばれるハードデ
ィスク(HDD)の起動用領域に予めデフォルトとして書き込まれている。なお、デフォ
ルトとは異なるデバイスを利用してファイルシステムをブートしたい場合には、コマンド
ラインやメニュー形式を用いて、ブートしたいファイルシステムが搭載されたデバイスを
選択することも一般的に行われている。
Usually, a personal computer (hereinafter, referred to as a standard system on which Linux operates)
For example, in an IBM / AT compatible machine, which is a personal computer), information indicating a device mounted at the time of booting (booting) is set as a default in a hard disk (HDD) boot area called MBR (Master Boot Record) in advance. Has been written. If you want to boot a file system using a device different from the default, it is common practice to select the device with the file system you want to boot using the command line or menu format. .
また、Linuxにおいては、カーネルに渡す引数によりルートファイルシステムをマ
ウントする。しかしながら、組み込み機器においては、デバイスドライバの都合上、in
itrdと呼ばれるRAMディスクに搭載されたファイルシステムを初期ルートファイル
システムとして利用し、そのinitrdから本来マウントしたいルートファイルシステ
ムを搭載デバイスからマウントする場合がある。
In Linux, the root file system is mounted by an argument passed to the kernel. However, in embedded devices, in device
There is a case where a file system mounted on a RAM disk called itrd is used as an initial root file system, and a root file system that is originally mounted from the initrd is mounted from the mounted device.
ところで、例えばパソコンでは、そのパソコンに組み込まれた(搭載された)プログラ
ム、例えばLinuxプログラムを更新する場合、その実行ファイルのみを交換したり、
またLinuxの知識のあるユーザの場合には、カーネルを再構築した上で新しい機能プ
ログラムを追加すること等により、新しいLinuxプログラムを実行する環境をパソコ
ン内に構築することができる。
By the way, for example, in a personal computer, when updating a program (installed) in the personal computer, for example, a Linux program, only the execution file is exchanged,
Further, in the case of a user who has knowledge of Linux, an environment for executing a new Linux program can be built in the personal computer by adding a new function program after rebuilding the kernel.
この点、Linux組み込み機器においては、メンテナンス性の観点からもカーネルお
よびこのカーネルにリンクするファイルシステム(以下、ユーザランドとも記載する)を
書き換えて、Linuxプログラムの実行環境を一新する方法が効率的であると考えられ
ている。
In this regard, in the Linux embedded device, from the viewpoint of maintainability, it is efficient to rewrite the kernel and the file system linked to this kernel (hereinafter also referred to as userland) to renew the execution environment of the Linux program. It is considered to be.
また、例えばパソコンにおいては、そのブート用のプログラムを記憶しておくことがで
きるデバイスが例えばHDD、CD−ROM等複数あり、あるデバイスからブートローダ
を含むプログラムの更新を行って仮に失敗した場合であっても、他のデバイスに搭載され
たブートローダを含むプログラムを起動して比較的容易にパソコンを復帰させることがで
きる。
In addition, for example, in a personal computer, there are a plurality of devices such as HDDs and CD-ROMs that can store a boot program, and a program including a boot loader is updated from a certain device and the device fails. However, it is possible to restore the personal computer relatively easily by starting a program including a boot loader installed in another device.
しかしながら、組み込み機器では、ユーザにブートするファイルシステムが搭載された
デバイスを選択させることは、ユーザを混乱させる原因ともなるため、自動的にファイル
システムをブートさせる仕組みが必要である。また、組み込み機器は、外部からユーザに
より頻繁にオン/オフされることが多いことから、ブートローダ自体の書き換えはブート
不能に陥るリスクが大きくなるため、他のデバイス特定方法を用いたいという技術的背景
もある。
However, in an embedded device, it is necessary for the user to select a device on which a file system to be booted is installed, so that the user is confused, and a mechanism for automatically booting the file system is required. In addition, since embedded devices are often turned on and off frequently by users from the outside, rewriting of the boot loader itself increases the risk of being unable to boot, so a technical background of using another device identification method There is also.
この点、同一又は異なるバージョンのプログラム{カーネルおよびリンクするファイル
システム(ユーザランド)}を2つのメモリ領域(メモリバンク)に冗長的に記録する2
バンク方式も知られており、そのプログラムが正常に作動したかどうかによって有効パン
クを切り換えることが可能になっており、上述したブート不能リスクを低減することがで
きる。
In this regard, the same or different version of the program {kernel and linked file system (userland)} is redundantly recorded in two memory areas (memory banks) 2
A bank system is also known, and it is possible to switch the effective puncture depending on whether or not the program operates normally, and the above-described risk of inability to boot can be reduced.
この2バンク方式では、組み込み機器でプログラムの更新により不具合の修正や機能追
加を行う場合、その更新操作は、必ず一方のプログラムの更新が完了し、更新したプログ
ラムが正常に動作した場合に初めて他方のプログラムを無効にするようになっている。
In this two-bank system, when a defect is corrected or a function is added by updating the program on an embedded device, the update operation must be completed only when the update of one program is completed and the updated program operates normally. The program is supposed to be disabled.
したがって、一方のバンクに記録されたプログラムの更新に失敗した場合でも、他方の
バンクに記録された現在動作しているプログラムを保持し続けることが可能になる。
Therefore, even if the update of the program recorded in one bank fails, it is possible to continue to hold the currently operating program recorded in the other bank.
上述した2バンク方式のシステムとしては、特許文献1に開示されたものがある。この
特許文献1に開示されたコンピュータシステムのファームウェア記憶装置は、同一又は異
なるバージョンのファームウェアを2つのメモリバンクに冗長的に記憶するファームウェ
ア記憶装置である。
As the above-described two-bank system, there is one disclosed in
このファームウェア記憶装置によれば、2つのメモリバンクの一方のメモリバンクが選
択されている間は、他方のメモリバンクを書込み禁止にする。そして、2つのメモリバン
クの一方を選択し、選択されなかったメモリバンクに記憶されたファームウェアの有効性
をチェックし、選択されたメモリバンクに記憶されたファームウェアのバージョンを、選
択されなかったメモリバンクに記憶されたファームウェアのバージョンと比較し、その比
較結果を生成する。この比較結果に従って、2つのメモリバンクに記憶されているファー
ムウェアのどちらか一方を選択し、この選択されたメモリバンクに記憶されたファームウ
ェアを使用してコンピュータシステムを起動し、所定の時間内に該コンピュータシステム
が正常に動作可能状態にならない場合に、この選択されなかったメモリバンクを選択し、
その後プロセッサをリセットするといものである。
According to this firmware storage device, while one of the two memory banks is selected, the other memory bank is write-protected. Then, one of the two memory banks is selected, the validity of the firmware stored in the memory bank not selected is checked, and the version of the firmware stored in the selected memory bank is changed to the memory bank not selected. Is compared with the version of the firmware stored in, and the comparison result is generated. According to the comparison result, one of the firmware stored in the two memory banks is selected, the computer system is started up using the firmware stored in the selected memory bank, and the firmware is stored within a predetermined time. Select this unselected memory bank if your computer system is not ready for normal operation,
Then reset the processor.
このような構成により、システム・ファームウェアの保全性を効率的に確保すると共に
、ファームウェアを簡単に変更することが可能になる。また、コンピュータシステムが動
作可能な状態に留まるのに十分なファームウェアを確実に保持しながら、そのようなシス
テムのファームウェアを変更することができる。さらに、コンピュータシステム内の複数
のファームウェアバンクからの自動選択を行うことが可能になる。
With such a configuration, it is possible to efficiently ensure the integrity of the system firmware and easily change the firmware. It is also possible to change the firmware of such a system while ensuring that the firmware is sufficient to keep the computer system operational. Furthermore, automatic selection from a plurality of firmware banks in the computer system can be performed.
詳しくは、特許文献1の段落番号に開示されているように、2つのメモリバンク502
および504が制御装置505によって管理されており、制御装置505は、メモリバン
ク502および504からのファームウェアの読み取り、およびそのメモリバンク502
および504からのファームウェアの書込みをそれぞれ制御している。
Specifically, as disclosed in the paragraph number of
And 504 are managed by the controller 505, which reads firmware from the memory banks 502 and 504, and the memory bank 502
And firmware writing from 504 and 504, respectively.
しなしながら、LinuxをOSとして用いるLinuxプログラム組み込み機器にお
いて、Linuxプログラムを格納する領域(バンク)が複数(2バンク以上)存在して
いる場合、起動されたカーネルは、複数のバンクそれぞれに格納された複数のユーザラン
ドの内の何れのユーザランドを、その起動カーネルにリンクするユーザランドとしてマウ
ントすればよいのか判断することが困難であった。
However, in a Linux program embedded device using Linux as an OS, if there are multiple areas (banks) for storing Linux programs (two or more banks), the activated kernel is stored in each of the multiple banks. In addition, it is difficult to determine which user land of a plurality of user lands should be mounted as a user land linked to the boot kernel.
本発明は上述した事情に鑑みてなされたものであり、Linuxプログラム起動におい
て、複数のバンクに記録された複数のファイルシステムから、起動カーネルにリンクする
有効なファイルシステムを識別することを可能にするLinuxプログラム起動システム
を提供することをその目的とする。
The present invention has been made in view of the above-described circumstances, and makes it possible to identify an effective file system linked to a boot kernel from a plurality of file systems recorded in a plurality of banks in starting a Linux program. It is an object of the present invention to provide a Linux program starting system.
請求項1記載の発明は、上記課題を解決するため、
カーネルとそのカーネルと対で動作するユーザランドとを備えたLinuxプログラムにおいて、カーネルを起動させてユーザランドをマウントさせるLinuxプログラム起動システムであって、
第1のLinuxプログラムのカーネルを記憶する第1の領域と、そのカーネルにリンクする前記第1のLinuxプログラムのユーザランドを記憶する第2の領域と、前記第1のLinuxプログラムの新旧を識別するための第1の識別情報を記憶する第3の領域との前記第1から第3の領域を有する第1のバンクと、第2のLinuxプログラムのカーネルを記憶する第4の領域と、そのカーネルにリンクする前記第2のLinuxプログラムのユーザランドを記憶する第5の領域と、前記第2のLinuxプログラムの新旧を識別するための第2の識別情報を記憶する第6の領域との前記第4から第6の領域を有する第2のバンクと、ブートローダを記憶する第7の領域とを備えた第1のメモリと、
起動された前記ブートローダにより、前記第1及び第2の識別情報に応じて前記第1のバンクと前記第2のバンクとから一つ選択されたバンクを示すバンク識別情報を記憶する所定領域を備えた第2のメモリと、
前記第7の領域からブートローダを読み出して起動させ、その起動させたブートローダにより、読み出した前記第1及び第2の識別情報の比較結果に応じて前記第1及び第2のバンクから有効なバンクを一つ選択させ、その選択されたバンクを示す前記バンク識別情報を前記第2のメモリの前記所定領域に書き込ませ、前記選択されたバンクからカーネルを読み出して起動させ、その起動させたカーネルにより、前記第2のメモリから読み出した前記バンク識別情報によって自カーネルが起動された前記第1のメモリ内のバンクを特定させ、その特定されたバンクに記憶されているユーザランドをマウントさせる制御部と、
を有することを特徴とするLinuxプログラム起動システム、
を提供する。
請求項2記載の発明は、上記課題を解決するため、
カーネルとそのカーネルと対で動作するユーザランドとを備えたLinuxプログラムにおいて、カーネルを起動させてユーザランドをマウントさせるLinuxプログラム起動システムであって、
一つのLinuxプログラムのカーネルを記憶する領域と、そのカーネルにリンクする前記一つのLinuxプログラムのユーザランドを記憶する領域と、前記一つのLinuxプログラムの新旧を識別するための識別情報を記憶する領域との3つの領域をそれぞれ有する複数のバンクと、ブートローダを記憶する領域とを備えた第1のメモリと、
起動された前記ブートローダにより、各前記識別情報に応じて前記複数のバンクから一つ選択されたバンクを示すバンク識別情報を記憶する所定領域を備えた第2のメモリと、
前記第1のメモリからブートローダを読み出して起動させ、その起動させたブートローダにより、読み出した前記各識別情報の比較結果に応じて前記複数のバンクから有効な一つのバンクを選択させ、その選択されたバンクを示す前記バンク識別情報を前記第2のメモリの前記所定領域に書き込ませ、前記選択されたバンクからカーネルを読み出して起動させ、その起動させたカーネルにより、前記第2のメモリから読み出した前記バンク識別情報によって自カーネルが起動された前記第1のメモリ内のバンクを特定させ、その特定されたバンクに記憶されているユーザランドをマウントさせる制御部と、
を有することを特徴とするLinuxプログラム起動システム、
を提供する。
In order to solve the above problems, the invention according to
A Linux program starting system for starting a kernel and mounting a user land in a Linux program comprising a kernel and a user land operating in a pair with the kernel,
A first area for storing a kernel of the first Linux program, a second area for storing a user land of the first Linux program linked to the kernel, and an old and a new of the first Linux program are identified. A first bank having the first to third areas with a third area for storing first identification information for the first, a fourth area for storing a kernel of the second Linux program, and the kernel A fifth area for storing a userland of the second Linux program linked to the second Linux program, and a sixth area for storing second identification information for identifying the old and new of the second Linux program. A first memory comprising a second bank having four to sixth areas, and a seventh area for storing a boot loader;
A predetermined area for storing bank identification information indicating a bank selected from the first bank and the second bank according to the first and second identification information by the activated boot loader. A second memory,
The boot loader is read out from the seventh area and activated, and the activated boot loader selects an effective bank from the first and second banks according to the comparison result of the read out first and second identification information. One is selected, the bank identification information indicating the selected bank is written to the predetermined area of the second memory, the kernel is read and activated from the selected bank, and the activated kernel A control unit for specifying a bank in the first memory in which the kernel is activated by the bank identification information read from the second memory, and mounting a user land stored in the specified bank;
A Linux program start system characterized by comprising:
I will provide a.
In order to solve the above problems, the invention according to
A Linux program starting system for starting a kernel and mounting a user land in a Linux program comprising a kernel and a user land operating in a pair with the kernel,
An area for storing a kernel of one Linux program, an area for storing a userland of the one Linux program linked to the kernel, and an area for storing identification information for identifying the old and new of the one Linux program A first memory comprising a plurality of banks each having the three areas, and an area for storing a boot loader,
A second memory having a predetermined area for storing bank identification information indicating a bank selected from the plurality of banks according to each identification information by the activated boot loader;
The boot loader is read from the first memory and activated, and the activated boot loader is used to select one valid bank from the plurality of banks according to the comparison result of the read identification information. The bank identification information indicating a bank is written in the predetermined area of the second memory, a kernel is read from the selected bank and activated, and the kernel that has been activated reads the second memory from the second memory. A control unit that identifies a bank in the first memory in which the kernel is activated by bank identification information, and mounts a user land stored in the identified bank;
A Linux program start system characterized by comprising:
I will provide a.
本発明によれば、有効なバンクとして一つ選択したバンクを示すバンク識別情報を起動させたブートローダにより第2のメモリに書き込んでおくことにより、有効と選択したバンクから読み出した起動カーネルによるファイルシステム判別時において、第2のメモリに書き込まれたバンク識別情報に基づいて起動カーネルに対応するファイルシステムを容易に識別することができる。 According to the present invention, the file system by the boot kernel read from the bank selected as valid by writing the bank identification information indicating the bank selected as the valid bank into the second memory by the boot loader activated. At the time of determination, the file system corresponding to the boot kernel can be easily identified based on the bank identification information written in the second memory.
以下、本発明を実施するための最良の形態を、図面を参照して説明する。 The best mode for carrying out the present invention will be described below with reference to the drawings.
図1を参照して、本発明を実施するための最良の形態(以下、実施形態と記載する)に
係るLinuxプログラム起動システム1を含むマザーボード11の概略構成を説明する
。このマザーボート11は、家電機器、腕時計、携帯電話やPDS等の小型端末、インタ
ーネット関連機器等のアプリケーション動作機器に予め搭載されている。
With reference to FIG. 1, a schematic configuration of a mother board 11 including a Linux
図1に示すように、マザーボード11には、CPU/PCIブリッジ31を介して接続
されているアドレスバスやデータバス等からなるホストバス13と、32ビット幅の標準
化されたPCIバス15が設けられている。
As shown in FIG. 1, the motherboard 11 is provided with a host bus 13 including an address bus and a data bus connected via a CPU /
このホストバス13には、内部キャッシュメモリCmおよび所定ビットのデータバスを
有するCPU17、SRAMからなる外部キャッシュメモリ21、およびこの外部キャッ
シュメモリ21へのデータの読み書きを制御するキャッシュコントローラ19がそれぞれ
接続されている。また、ホストバス13には、DRAMからなるメインメモリ25、およ
びこのメインメモリ25へのデータの読み書きとリフレッシュを制御するDRAMコント
ローラ23がそれぞれ接続されている。
Connected to the host bus 13 are a
さらに、ホストバス13には、例えばNANDメモリからなる書き換え可能な記録媒体
の一例としてのフラッシュメモリ29、このフラッシュメモリ29へのデータの読み書き
を制御するフラッシュメモリコントローラ27、およびCPUが接続されているホストバ
ス13とPCIバス15とを接続するためのCPU/PCIブリッジ31等がそれぞれ接
続されている。
Further, a
一方、PCIバス15には、PCI拡張スロット33を介して例えばLANのプロトコ
ルを制御するLANカードが接続されている。
On the other hand, a LAN card for controlling a LAN protocol, for example, is connected to the PCI bus 15 via a PCI expansion slot 33.
フラッシュメモリコントローラ27は、CPU17から与えられるデータの読み書きに
関するブロック転送コマンドに応じてフラッシュメモリ29との間のデータの読み書きを
制御する。
The
フラッシュメモリ29は、いわゆるNANDメモリからなり例えば2kバイトのブロッ
ク毎に記憶されているデータを1まとまりにして読み書きするように構成されており、そ
の異なる複数の領域(バンク)には、複数(本実施形態では2つ)のLinuxプログラ
ムL1およびL2がそれぞれ格納されている。
The
そして、本実施形態においては、複数のLinuxプログラムL1およびL2における
一方のLinuxプログラムが新しいプログラムに更新(バージョンアップ)されている
。
In this embodiment, one Linux program in the plurality of Linux programs L1 and L2 is updated (upgraded) to a new program.
次に、図2を参照して、フラッシュメモリ29に記憶されているLinuxプログラム
L1およびL2の具体的な内容をそれぞれの格納領域毎に説明する。
Next, the specific contents of the Linux programs L1 and L2 stored in the
図2に示すように、フラッシュメモリ29のブートローダ領域101(アドレス#1〜
#2までの領域)には、Linuxプログラムブート用のブートローダが記憶されている
。このブートローダ領域101は、システム1全体がリセットされたときに例えばMIP
Sアーキテクチャのプログラムカウンタにより指示されている領域であり、システム1(
CPU17)起動時にブートローダが最初にメインメモリ25に転送されるようになって
いる。
As shown in FIG. 2, the boot loader area 101 (
In the area up to # 2, a boot loader for booting the Linux program is stored. The
This is the area designated by the S architecture program counter, and the system 1 (
CPU 17) The boot loader is first transferred to the
LinuxプログラムL1のカーネルAのバージョン情報(その新旧を識別するための
情報)を含むヘッダ情報は、フラッシュメモリ29のアドレス#2〜#3までの領域(第
1のヘッダバンク領域)に記憶されている。
Header information including version information (information for identifying the new and old) of the kernel A of the Linux program L1 is stored in an area (first header bank area) from
フラッシュメモリ29のカーネルA領域102(アドレス#3〜#4までの領域:第1
のカーネルバンク領域)には、LinuxプログラムL1のカーネルAが記憶されており
、このカーネルAは、メインメモリ25に転送されたブートローダに従ったCPU17の
処理により、メインメモリ25に転送される。このカーネルAには、そのカーネル作成時
にinitrdと呼ばれるファイルシステム認識用(マウント用)プログラムが内蔵され
ている。なお、CPU17の処理は、必要に応じてキャッシュコントローラ19、DRA
Mコントローラ23の処理も含むが、単にCPUの処理として説明する。
Kernel A
Kernel bank area) stores the kernel A of the Linux program L1, and this kernel A is transferred to the
Although the process of
LinuxプログラムL2のカーネルBのヘッダ情報は、フラッシュメモリ29のアド
レス#4〜#5までの領域(第2のヘッダバンク領域)に記憶されている。
The header information of the kernel B of the Linux program L2 is stored in an area from the
フラッシュメモリ29のカーネルB領域103(アドレス#5〜#6までの領域:第2
のカーネルバンク領域)には、LinuxプログラムL2のカーネルBが記憶されており
、このカーネルBは、メインメモリ25に転送されたブートローダに従ったCPU17の
処理により、メインメモリ25に転送される。このカーネルBにも、そのカーネル作成時
にinitrdと呼ばれるファイルシステム認識用(マウント用)プログラムが内蔵され
ている。
Kernel bank area) stores the kernel B of the Linux program L2, and this kernel B is transferred to the
フラッシュメモリ29のユーザランドA領域104(アドレス#6〜#7までの領域:
第1のユーザバンク領域)には、LinuxプログラムL1のカーネルAにリンクされた
ファイルシステムであるユーザランドAが記憶されている。このユーザランドAは、カー
ネルの処理(カーネルに従ったCPU17の処理)によりメインメモリ25に転送される
ものではなく、カーネルの処理によりマウントまたはアンマウントされる。
Userland A
In the first user bank area, a user land A that is a file system linked to the kernel A of the Linux program L1 is stored. This user land A is not transferred to the
フラッシュメモリ29のユーザランドB領域105(アドレス#7〜#8までの領域:
第2のユーザバンク領域)には、LinuxプログラムL2のカーネルBにリンクされた
ファイルシステムであるユーザランドBが記憶されている。このユーザランドBは、カー
ネルの処理(カーネルに従ったCPU17の処理)によりメインメモリ25に転送される
ものではなく、カーネルの処理によりマウントまたはアンマウントされる。
The second user bank area) stores a user land B that is a file system linked to the kernel B of the Linux program L2. This user land B is not transferred to the
本実施形態において、第1のLinuxプログラムL1(カーネルA、ユーザランドA
)が格納される領域(第1のヘッダバンク領域、第1のカーネルバンク領域、第1のユー
ザバンク領域)を総称してバンクAと記載し、第2のLinuxプログラムL2(カーネ
ルB、ユーザランドB)が格納される領域(第2のヘッダバンク領域、第2のカーネルバ
ンク領域、第2のユーザバンク領域)を総称してバンクBと記載する。
In the present embodiment, the first Linux program L1 (kernel A, userland A
) (First header bank area, first kernel bank area, first user bank area) are collectively referred to as bank A, and the second Linux program L2 (kernel B, user land) The area (B header area, second kernel bank area, second user bank area) in which B) is stored is generically referred to as bank B.
フラッシュメモリ29のデータ領域(アドレス#8〜#9)には、起動したLinux
プログラムL1あるいはL2により利用可能な各種データが格納されている。
In the data area (
Various data that can be used by the program L1 or L2 are stored.
一方、図3は、本実施形態に係わるメインメモリ25の記録領域(メモリ領域)を示す
図である。
On the other hand, FIG. 3 is a diagram showing a recording area (memory area) of the
図3に示すように、メインメモリ25の一定領域25a1は、起動カーネルが認識する
メモリ領域としてカーネルを作成した段階で決定されている。一方、起動カーネルが認識
していない非認識領域25a2は、起動カーネルの支配下ではないため、特殊な用途で使
われることが想定される。
As shown in FIG. 3, the fixed area 25a1 of the
本実施形態では、このカーネル非認識メモリ領域25a2を空けておき、ブートローダ
によるメインメモリ29上でのカーネル展開時における有効バンク識別情報を含むブート
情報を書き込み可能に構成している。また、Linux起動後、アプリケーションが動作
するまでは使用されないメモリ領域等もブート情報を書き込むために使用可能である。
In the present embodiment, this kernel non-recognized memory area 25a2 is made empty so that boot information including valid bank identification information at the time of kernel expansion on the
次に、本実施形態に係るLinuxプログラム起動システム1におけるCPU17のL
inuxプログラム起動処理について、図4を参照して説明する。
Next, L of the
The inux program activation process will be described with reference to FIG.
Linuxプログラム起動時において、フラッシュメモリ29のデータ領域(アドレス
♯1〜アドレス♯2)に記憶されたブートローダがメインメモリ25にロードされ起動さ
れる。起動されたブートローダ(つまり、ブートローダに従ったCPU17)は、フラッ
シュメモリ29のデータ領域(アドレス♯2〜アドレス♯3)に記憶されたカーネルAの
バージョン情報を含むヘッダ情報およびフラッシュメモリ29のデータ領域(アドレス♯
4〜アドレス♯5)に記憶されたカーネルBのバージョン情報を含むヘッダ情報をそれぞ
れ読み出す。
When the Linux program is activated, the boot loader stored in the data area (
4 to read the header information including the version information of the kernel B stored in the address # 5).
続いて、ブートローダは、図4に示すように、ステップS301として、読み出したカ
ーネルAおよびカーネルBそれぞれのヘッダ情報を比較して、例えば新しいバージョンの
カーネルが格納されたバンクを有効なバンクとして判断する(ステップS301)。すな
わち、LinuxプログラムL1が新しく更新されている場合には、カーネルAのバージ
ョン情報がカーネルBのバージョン情報よりも新しいことを表す情報となっているため、
バンクAが有効なバンクとして判断され、LinuxプログラムL2が新しく更新されて
いる場合には、カーネルBのバージョン情報がカーネルAのバージョン情報よりも新しい
ことを表す情報となっているため、バンクBが有効なバンクとして判断される。
Subsequently, as shown in FIG. 4, the boot loader compares the header information of the read kernel A and kernel B and determines, for example, a bank in which a new version of the kernel is stored as a valid bank in step S301. (Step S301). That is, when the Linux program L1 is newly updated, the version information of the kernel A is information indicating that it is newer than the version information of the kernel B.
When the bank A is determined as a valid bank and the Linux program L2 is newly updated, the version information of the kernel B is information indicating that it is newer than the version information of the kernel A. It is determined as a valid bank.
次いで、ステップS302において、ブートローダは、有効と判断したバンクを識別す
るための識別情報(バンクAが有効ならバンクAを表す識別情報、バンクBが有効ならバ
ンクBを表す識別情報)をメインメモリ25における未使用領域である例えばカーネル非
認識メモリ領域25a2に書き込む(記述する)。
Next, in step S302, the boot loader stores identification information (identification information representing bank A if bank A is valid, and identification information representing bank B if bank B is valid) for identifying the valid bank. Is written (described) in, for example, the kernel non-recognized memory area 25a2.
次いで、ステップS303において、ブートローダは、有効なカーネル(カーネルAお
よびカーネルBのうちの何れか一方のカーネル)をメインメモリ25内にロードかつ展開
し、このカーネルを起動して、この起動カーネル(カーネルコード)に制御をシフトする
。
Next, in step S303, the boot loader loads and expands a valid kernel (one of the kernels A and B) into the
続いて、ステップS304において、起動カーネル(つまり、起動カーネルに従ったC
PU17)は、起動カーネル内における初期ルートファイルシステム(initrd)に
おける各種ドライバのロードを行うスクリプトを起動する。
Subsequently, in step S304, the boot kernel (that is, C according to the boot kernel).
The PU 17) activates a script for loading various drivers in the initial root file system (initrd) in the activation kernel.
次いで、ステップS305において、起動カーネルは、initrdの起動スクリプト
内において、メインメモリ25のカーネル非認識メモリ領域25a2を、例えばカーネル
認識領域25a1からのポインタ等を用いて起動カーネルが認識できるメモリ領域である
起動カーネル空間の仮想メモリ空間にマッピング(mmap)し、マッピングされた領域
に書き込まれたバンク情報を読み出し、自カーネルがどちらのバンクから起動されたのか
を判断する。
Next, in step S305, the boot kernel is a memory area in which the boot kernel can recognize the kernel non-recognized memory area 25a2 of the
この判断において、読み出したバンク情報がバンクAの場合には、自カーネルがバンク
Aから起動されたものと判断し(ステップS306の判断→YES)、起動カーネルは、
ステップS307に進む。
In this determination, when the read bank information is bank A, it is determined that the own kernel is started from bank A (determination in step S306 → YES), and the startup kernel is
The process proceeds to step S307.
このステップS307において、起動カーネルは、バンクAに格納されたユーザランド
Aをルートファイルシステムとしてマウント、すなわち、起動カーネル(カーネルA)の
ルートディレクトリ(/)に対してユーザランドAを接続して階層化することにより、起
動カーネルから認識(アクセス)できるファイルシステムに設定する。
In this step S307, the boot kernel mounts the user land A stored in the bank A as a root file system, that is, connects the user land A to the root directory (/) of the boot kernel (kernel A) to create a hierarchy. By setting the file system, the file system can be recognized (accessed) from the boot kernel.
一方、読み出したバンク情報がバンクBの場合には、自カーネルがバンクBから起動さ
れたものと判断し(ステップS306の判断→NO、ステップS308の判断→YES)
、起動カーネルは、ステップS309に進む。
On the other hand, when the read bank information is bank B, it is determined that the own kernel is started from bank B (determination in step S306 → NO, determination in step S308 → YES).
The boot kernel proceeds to step S309.
このステップS309において、起動カーネルは、バンクBに格納されたユーザランド
Bをルートファイルシステムとしてマウントする。
In step S309, the boot kernel mounts the user land B stored in the bank B as a root file system.
なお、ステップS308において、万が一何れのバンクAおよびBも有効として判断で
きない場合には、エラーが発生したものとしてLinuxプログラム起動処理を終了する
。
In step S308, if any bank A and B cannot be determined to be valid, the Linux program activation process is terminated as an error has occurred.
このようにして、起動カーネルにリンクされたユーザランドのマウントが完了されると
、起動カーネルは、設定に従い通常の起動処理を続ける。
When the mounting of the user land linked to the boot kernel is completed in this way, the boot kernel continues normal boot processing according to the setting.
以上述べたように、本実施形態によれば、複数のLinuxプログラムL1およびL2
がフラッシュメモリ29の複数のバンクにそれぞれ格納されている場合でも、起動カーネ
ルにリンクされたユーザランドを自動的に判別してルートファイルシステムとしてマウン
トすることができる。
As described above, according to the present embodiment, a plurality of Linux programs L1 and L2
Are stored in a plurality of banks of the
この結果、Linuxプログラム組み込み機器において2バンク方式を用いて一方のバ
ンクに記録されたLinuxプログラムを更新した場合においても、更新後の起動カーネ
ルがリンクされたルートファイルシステム(ユーザランド)を認識できない状態に陥るこ
とを確実に防止することができ、Linuxプログラムの起動処理の信頼性を向上させる
ことができる。
As a result, even when the Linux program recorded in one bank is updated using the 2-bank method in the Linux program embedded device, the root file system (user land) linked with the updated boot kernel cannot be recognized. Thus, the reliability of the startup process of the Linux program can be improved.
なお、本実施形態においては、Linuxプログラムを格納する記録媒体としてフラッ
シュメモリとしたが、書き換え可能な他の記録媒体であってもよい。
In the present embodiment, the flash memory is used as a recording medium for storing the Linux program, but another rewritable recording medium may be used.
また、組み込み機器に搭載されるマザーボードとして、図1に示す構成を示したが、本
発明はこの構成に限定されるものではなく、図2〜図4で説明した内容を実現できるコン
ピュータハードウェア構成であればよい。
Moreover, although the structure shown in FIG. 1 was shown as a motherboard mounted in an embedded device, this invention is not limited to this structure, The computer hardware structure which can implement | achieve the content demonstrated in FIGS. If it is.
さらに、本実施形態では、フラッシュメモリに記録されるLinuxプログラムの冗長
構成として、2つのLinuxプログラムをフラッシュメモリの2つのバンクそれぞれに
格納する2バンク構成としたが、本発明はこの構成に限定されるものではなく、3つ以上
のLinuxプログラムをフラッシュメモリの3つ以上のバンクそれぞれに格納する冗長
構成としてもよい。
Furthermore, in this embodiment, the redundant configuration of the Linux program recorded in the flash memory is a two-bank configuration in which two Linux programs are stored in each of the two banks of the flash memory. However, the present invention is limited to this configuration. Instead of this, a redundant configuration may be adopted in which three or more Linux programs are stored in each of three or more banks of the flash memory.
そして、本実施形態では、新しいバージョンのLinuxプログラムを有効なプログラ
ムとして起動するように構成したが、本発明はこのように限定されるものではなく、古い
バージョンのLinuxプログラムを有効なプログラムとして起動するように構成しても
よい。
In this embodiment, the new version of the Linux program is activated as a valid program. However, the present invention is not limited to this, and the old version of the Linux program is activated as an effective program. You may comprise as follows.
11 マザーボード
13 ホストバス
15 PCIバス
17 CPU
21 外部キャッシュメモリ
25 メインメモリ
27 フラッシュメモリコントローラ
29 フラッシュメモリ
31 CPU/PCIブリッジ
33 PCI拡張スロット
35 LANカード
♯1〜♯2 ブートローダ格納領域
♯2〜♯3 第1のヘッダバンク領域
♯3〜♯4 第1のカーネルバンク領域
♯4〜♯5 第2のヘッダバンク領域
♯5〜♯6 第2のカーネルバンク領域
♯6〜♯7 第1のユーザバンク領域
♯7〜♯8 第2のユーザバンク領域
11 Motherboard 13 Host bus 15
21
Claims (2)
第1のLinuxプログラムのカーネルを記憶する第1の領域と、そのカーネルにリンクする前記第1のLinuxプログラムのユーザランドを記憶する第2の領域と、前記第1のLinuxプログラムの新旧を識別するための第1の識別情報を記憶する第3の領域との前記第1から第3の領域を有する第1のバンクと、第2のLinuxプログラムのカーネルを記憶する第4の領域と、そのカーネルにリンクする前記第2のLinuxプログラムのユーザランドを記憶する第5の領域と、前記第2のLinuxプログラムの新旧を識別するための第2の識別情報を記憶する第6の領域との前記第4から第6の領域を有する第2のバンクと、ブートローダを記憶する第7の領域とを備えた第1のメモリと、
起動された前記ブートローダにより、前記第1及び第2の識別情報に応じて前記第1のバンクと前記第2のバンクとから一つ選択されたバンクを示すバンク識別情報を記憶する所定領域を備えた第2のメモリと、
前記第7の領域からブートローダを読み出して起動させ、その起動させたブートローダにより、読み出した前記第1及び第2の識別情報の比較結果に応じて前記第1及び第2のバンクから有効なバンクを一つ選択させ、その選択されたバンクを示す前記バンク識別情報を前記第2のメモリの前記所定領域に書き込ませ、前記選択されたバンクからカーネルを読み出して起動させ、その起動させたカーネルにより、前記第2のメモリから読み出した前記バンク識別情報によって自カーネルが起動された前記第1のメモリ内のバンクを特定させ、その特定されたバンクに記憶されているユーザランドをマウントさせる制御部と、
を有することを特徴とするLinuxプログラム起動システム。 A Linux program starting system for starting a kernel and mounting a user land in a Linux program comprising a kernel and a user land operating in a pair with the kernel,
A first area for storing a kernel of the first Linux program, a second area for storing a user land of the first Linux program linked to the kernel, and an old and a new of the first Linux program are identified. A first bank having the first to third areas with a third area for storing first identification information for the first, a fourth area for storing a kernel of the second Linux program, and the kernel A fifth area for storing a userland of the second Linux program linked to the second Linux program, and a sixth area for storing second identification information for identifying the old and new of the second Linux program. A first memory comprising a second bank having four to sixth areas, and a seventh area for storing a boot loader;
A predetermined area for storing bank identification information indicating a bank selected from the first bank and the second bank according to the first and second identification information by the activated boot loader. A second memory,
The boot loader is read out from the seventh area and activated, and the activated boot loader selects an effective bank from the first and second banks according to the comparison result of the read out first and second identification information. One is selected, the bank identification information indicating the selected bank is written to the predetermined area of the second memory, the kernel is read and activated from the selected bank, and the activated kernel A control unit for specifying a bank in the first memory in which the kernel is activated by the bank identification information read from the second memory, and mounting a user land stored in the specified bank;
A Linux program starting system characterized by comprising:
一つのLinuxプログラムのカーネルを記憶する領域と、そのカーネルにリンクする前記一つのLinuxプログラムのユーザランドを記憶する領域と、前記一つのLinuxプログラムの新旧を識別するための識別情報を記憶する領域との3つの領域をそれぞれ有する複数のバンクと、ブートローダを記憶する領域とを備えた第1のメモリと、
起動された前記ブートローダにより、各前記識別情報に応じて前記複数のバンクから一つ選択されたバンクを示すバンク識別情報を記憶する所定領域を備えた第2のメモリと、
前記第1のメモリからブートローダを読み出して起動させ、その起動させたブートローダにより、読み出した前記各識別情報の比較結果に応じて前記複数のバンクから有効な一つのバンクを選択させ、その選択されたバンクを示す前記バンク識別情報を前記第2のメモリの前記所定領域に書き込ませ、前記選択されたバンクからカーネルを読み出して起動させ、その起動させたカーネルにより、前記第2のメモリから読み出した前記バンク識別情報によって自カーネルが起動された前記第1のメモリ内のバンクを特定させ、その特定されたバンクに記憶されているユーザランドをマウントさせる制御部と、
を有することを特徴とするLinuxプログラム起動システム。 A Linux program starting system for starting a kernel and mounting a user land in a Linux program comprising a kernel and a user land operating in a pair with the kernel,
An area for storing a kernel of one Linux program, an area for storing a userland of the one Linux program linked to the kernel, and an area for storing identification information for identifying the old and new of the one Linux program A first memory comprising a plurality of banks each having the three areas, and an area for storing a boot loader,
A second memory having a predetermined area for storing bank identification information indicating a bank selected from the plurality of banks according to each identification information by the activated boot loader;
The boot loader is read from the first memory and activated, and the activated boot loader is used to select one valid bank from the plurality of banks according to the comparison result of the read identification information. The bank identification information indicating a bank is written in the predetermined area of the second memory, a kernel is read from the selected bank and activated, and the kernel that has been activated reads the second memory from the second memory. A control unit that identifies a bank in the first memory in which the kernel is activated by bank identification information, and mounts a user land stored in the identified bank;
A Linux program starting system characterized by comprising:
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010166945A JP4735765B2 (en) | 2010-07-26 | 2010-07-26 | Linux program startup system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010166945A JP4735765B2 (en) | 2010-07-26 | 2010-07-26 | Linux program startup system |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004294953A Division JP2006107249A (en) | 2004-10-07 | 2004-10-07 | Linux program startup system |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2010282645A JP2010282645A (en) | 2010-12-16 |
JP4735765B2 true JP4735765B2 (en) | 2011-07-27 |
Family
ID=43539262
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010166945A Active JP4735765B2 (en) | 2010-07-26 | 2010-07-26 | Linux program startup system |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4735765B2 (en) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5746100B2 (en) * | 2011-12-27 | 2015-07-08 | 京セラドキュメントソリューションズ株式会社 | Image forming apparatus |
CN112000382B (en) * | 2020-08-26 | 2023-10-13 | 绿盟科技集团股份有限公司 | Linux system starting method and device and readable storage medium |
CN113934471A (en) * | 2021-10-26 | 2022-01-14 | 讯牧信息科技(上海)有限公司 | Baseboard management controller of computer system and starting method |
-
2010
- 2010-07-26 JP JP2010166945A patent/JP4735765B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2010282645A (en) | 2010-12-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3764237B1 (en) | System startup method and apparatus, electronic device and storage medium | |
US7702894B2 (en) | System and method for loading programs from HDD independent of operating system | |
US7293166B2 (en) | Method of indicating a format of accessing an operating system contained on a USB memory device | |
TWI514408B (en) | Handling errors during device bootup from a non-volatile memory | |
US6948165B1 (en) | Method for installing an application program, to be executed during each bootload of a computer system for presenting a user with content options prior to conventional system startup presentation, without requiring a user's participation to install the program | |
JP4668416B2 (en) | Protecting boot block code when enabling write access to the boot block | |
KR101602360B1 (en) | System fast booting apparatus and method | |
US20140325496A1 (en) | Apparatus and method for firmware upgrade using usb | |
KR20010006749A (en) | Storing system-level mass storage configuration data in non-volatile memory on each mass storage device to allow for reboot/power-on reconfiguration of all installed mass storage devices to the same configuration as last use | |
TWI509513B (en) | Load boot data | |
US20080270685A1 (en) | Information processing apparatus and firmware updating method | |
US8291206B2 (en) | Method for booting computer system | |
JP4735765B2 (en) | Linux program startup system | |
KR101582919B1 (en) | Electronic apparatus and booting method of the same | |
CN100498710C (en) | Method for reading and electing read only memory program code on self-storing mechanism | |
US11494112B2 (en) | Storage device and accessing method for operation log thereof | |
US9946479B2 (en) | Direct hinting for a memory device | |
TWI754221B (en) | Disabling software persistence | |
CN115129384A (en) | Electronic equipment and running method of starting program of electronic equipment | |
JP2006107249A (en) | Linux program startup system | |
KR20030060342A (en) | Booting method for personal digital assistant | |
JP2006107248A (en) | Linux program startup system | |
JPWO2014091629A1 (en) | Storage device management program, electronic device, and storage device management method | |
CN113448639B (en) | Access method, device, equipment and storage medium for user configuration variable area | |
CN117707431A (en) | BIOS-based software RAID data reading method and device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20110329 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20110411 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 4735765 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140513 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140513 Year of fee payment: 3 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140513 Year of fee payment: 3 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |