/dev/fl3


先日 /dev/fl3 に NGNG... が書いてあると、 HDD から立ち上がらなくなることを発見した。

カーネルソースにその記述を発見した。

#ifdef CONFIG_CMDLINE
	{
		unsigned long *flag_addr;
		unsigned long ng_word;
		int boot_hdd = 1;

		flag_addr = (unsigned long *)(0xFFF70000);
		ng_word = 0x4e474e47;

		if (*flag_addr == ng_word) 
			boot_hdd = 0;

		if (boot_hdd == 0) {
			strcpy(root_device_name, "rd/0");
			ROOT_DEV = MKDEV (1, 0);
			printk("Boot from initrd.\n");
		} else
			printk("Boot from /dev/hda1.\n");
	}
#endif /* CONFIG_CMDLINE */
/dev/fl3(の先頭?)は、0xFFF70000 番地として見えているようだ。
そこが NGNG (0x4e474e47) であれば rd/0 つまり -EM で立ち上がるようなコードに見える。
boot_hdd, ng_word 変数も、if 文も2つも要らんような、、、 値も、宣言時に代入したり、実行時に代入したり、、、 リファクタリングが足りんな。

ちなみに玄箱の dmesg の該当箇所は、

RAMDISK: Compressed image found at block 0
Freeing initrd memory: 2218k freed
Boot from /dev/hda1.
VFS: Mounted root (ext2 filesystem).
Boot from /dev/hda1.
kjournald starting.  Commit interval 5 seconds
ここのよう。(なぜ2回?)
LinkStation 1.40 では、
RAMDISK: Compressed image found at block 0
Freeing initrd memory: 2120k freed
fff70000:4f4b4f4b
VFS: Mounted root (ext2 filesystem).
fff70000:4f4b4f4b
kjournald starting.  Commit interval 5 seconds
ここのよう。 LinkStation は、玄箱の上記ソースコードとは違うようだ。
LinkStation/玄箱 をハックしよう →  カーネルのコンパイル(4)

Copyright (C) 2004 Yasunari Yamashita. All Rights Reserved.
yasunari @ yamasita.jp
山下康成京都府向日市