4

Linus Torvalds のウィキペディア ページには、次のように記載されています。

「Linux カーネルの再起動システム コールは、生年月日 (16 進数で記述) をマジック値として受け入れます」。

また、Linux の再起動機能のドキュメントには、再起動にも「magic」と「magic2」という 2 つのマジック ナンバーが必要であることが示されています。

これらの魔法の数字の目的は何ですか? それらがないと機能が動作しないのはなぜですか?

ありがとう

4

1 に答える 1

13

あなたの質問をすばやくグーグルで検索すると、答えが得られます。

http://www.eeggs.com/items/44291.html

reboot() システム コールが誤って呼び出されるのを防ぐために、最初の 2 つのパラメータで魔法の値のペアを渡す必要があります。最初のマジック値は 0xfee1dead です。2 番目のマジック値は次のいずれかです。

$ grep LINUX_REBOOT_MAGIC include/linux/*.h
include/linux/reboot.h:#define LINUX_REBOOT_MAGIC1 0xfee1dead
include/linux/reboot.h:#define LINUX_REBOOT_MAGIC2 672274793
include/linux/reboot.h:#define LINUX_REBOOT_MAGIC2A 85072278
include/linux/reboot.h:#define LINUX_REBOOT_MAGIC2B 369367448
include/linux/reboot.h:#define LINUX_REBOOT_MAGIC2C 537993216

これらはライナスにとって重要な日付です。perl を使用してそれらを日付に変換できるヒント:

$ perl -e 'print localtime(672274793). "\n";'

1991 年 4 月 21 日 18:59:53 日

これは、Linus が最初に Linux を書き始めた日付です。他の日付の重要性は、読者の課題として残されています ;-)

于 2013-09-02T23:35:10.140 に答える