Man page - kexec_file_load(2)

Packages contains this manual

Available languages:

en fr ja ru

Manual

KEXEC_LOAD

名 前
書 式
説 明
返 り 値
エ ラ ー
バ ー ジ ョ ン
準 拠
注 意
関 連 項 目
こ の 文 書 に つ い て

名 前

kexec_load - 新 し い カ ー ネ ル を 後 で 実 行 す る た め に ロ ー ド す る

書 式

#include <linux/kexec.h>
long kexec_load(unsigned long
entry , unsigned long nr_segments ,
struct kexec_segment *
segments , unsigned long flags );

: こ の シ ス テ ム コ ー ル に は glibc の ラ ッ パ ー 関 数 は 存 在 し な い 。 「 注 意 」 の 節 を 参 照 。

説 明

kexec_load () シ ス テ ム コ ー ル は 、 新 し い カ ー ネ ル を ロ ー ド し 、 そ の 後 の reboot (2) で 実 行 で き る よ う に す る 。

flags 引 き 数 は 、 シ ス テ ム コ ー ル の 呼 び 出 し の 動 作 を 制 御 す る マ ス ク ビ ッ ト で あ る 。 flags に は 以 下 の 値 を 指 定 で き る 。
KEXEC_ON_CRASH
(Linux 2.6.13 以 降 )

シ ス テ ム の ク ラ ッ シ ュ 時 に 、 新 し い カ ー ネ ル を 自 動 的 に 実 行 す る 。

KEXEC_PRESERVE_CONTEXT (Linux 2.6.27 以 降 )

新 し い カ ー ネ ル を 実 行 す る 前 に 、 シ ス テ ム の ハ ー ド ウ ェ ア と ソ フ ト ウ ェ ア の 状 態 を 保 存 す る 。 シ ス テ ム の 中 断 時 (suspend) な ど で 使 用 で き る 。 こ の フ ラ グ は 、 カ ー ネ ル の 設 定 で CONFIG_KEXEC_JUMP が 有 効 の 場 合 の み 利 用 可 能 で あ り 、 nr_segments が 0 よ り 大 き い 場 合 の み 効 果 が あ る 。

flags の 上 位 ビ ッ ト (マ ス ク 0xffff0000 に 対 応 ) に は 、 実 行 さ れ る カ ー ネ ル の ア ー キ テ ク チ ャ ー が 入 る 。 現 在 の ア ー キ テ ク チ ャ ー を 使 う こ と を 意 味 す る 定 数 KEXEC_ARCH_DEFAULT か 、 ア ー キ テ ク チ ャ ー 定 数 KEXEC_ARCH_386 , KEXEC_ARCH_68K , KEXEC_ARCH_X86_64 , KEXEC_ARCH_PPC , KEXEC_ARCH_PPC64 , KEXEC_ARCH_IA_64 , KEXEC_ARCH_ARM , KEXEC_ARCH_S390 , KEXEC_ARCH_SH , KEXEC_ARCH_MIPS , KEXEC_ARCH_MIPS_LE の い ず れ か 一 つ を (OR で ) 指 定 す る 。 指 定 す る ア ー キ テ ク チ ャ ー は 、 シ ス テ ム の CPU で 実 行 可 能 な も の で な け れ ば な ら な い 。

entry 引 き 数 は 、 カ ー ネ ル イ メ ー ジ の 物 理 エ ン ト リ ー ア ド レ ス で あ る 。 nr_segments 引 き 数 は 、 segments ポ イ ン タ ー が 指 す セ グ メ ン ト の 数 で あ る 。 な お 、 セ グ メ ン ト 数 に は 、 カ ー ネ ル に よ り 16 と い う (強 制 的 な ) 上 限 が 課 さ れ る 。 segments 引 き 数 は kexec_segment 構 造 体 の 配 列 で 、 こ の 構 造 体 に よ り カ ー ネ ル の 配 置 が 定 義 さ れ る 。

struct kexec_segment {
void *buf; /* Buffer in user space */
size_t bufsz; /* Buffer length in user space */
void *mem; /* Physical address of kernel */
size_t memsz; /* Physical address length */
};

segments で 定 義 さ れ た カ ー ネ ル イ メ ー ジ は 、 呼 び 出 し た プ ロ セ ス か ら 予 約 済 み メ モ リ ー に コ ピ ー さ れ る 。

返 り 値

成 功 す る と 、 kexec_load は 0 を 返 す 。 エ ラ ー の 場 合 、 -1 が 返 り 、 errno に エ ラ ー を 示 す 値 が 設 定 さ れ る 。

エ ラ ー

EBUSY

別 の ク ラ ッ シ ュ カ ー ネ ル が す で に ロ ー ド さ れ て い る か 、 ク ラ ッ シ ュ カ ー ネ ル が す で に 使 用 さ れ て い る 。

EINVAL

flags が 無 効 で あ る 。 nr_segments が 大 き す ぎ る 。

EPERM

呼 び 出 し 側 が CAP_SYS_BOOT ケ ー パ ビ リ テ ィ を 持 っ て い な い 。

バ ー ジ ョ ン

kexec_load () シ ス テ ム コ ー ル は Linux 2.6.13 で 初 め て 登 場 し た 。

準 拠

こ の シ ス テ ム コ ー ル は Linux 固 有 で あ る 。

注 意

現 在 の と こ ろ 、 kexec_load () は glibc で は サ ポ ー ト さ れ て い な い 。 syscall (2) を 使 っ て 呼 び 出 す こ と 。

必 要 な 定 数 は Linux カ ー ネ ル の ソ ー ス フ ァ イ ル linux/kexec.h で 定 義 さ れ て い る が 、 現 在 の と こ ろ glibc に は 公 開 さ れ て い な い 。 そ の た め 、 こ れ ら の 定 数 は 手 動 で 定 義 し な け れ ば な ら な い 。

こ の シ ス テ ム コ ー ル は 、 カ ー ネ ル の 設 定 で CONFIG_KEXEC が 有 効 に な っ て い る 場 合 に の み 利 用 で き る 。

関 連 項 目

reboot (2), syscall (2)

こ の 文 書 に つ い て

こ の man ペ ー ジ は Linux man-pages プ ロ ジ ェ ク ト の リ リ ー ス 3.78 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man-pages/ に 書 か れ て い る 。