□Linux-2.2 系でリブートができないよ
Linux-2.2 系でリブートしようとして shutdown -r now とか、キーボードから
CTRL-ALT-DEL をしても、
:
:
Rebooting
Restart system
disabling symmetric IO mode … done
となってリブートしないことがあります。2.4系では見たことが無いのです
が、2.4系とリブートシーケンスを見比べてみると、SMP(2個以上のCPU搭載
時)のリブート信号を落とす前の APIC 関連の処理が違います。
2.2系の方はすっきりしているのですが、どうもリセット信号を叩いても、
ちゃんとリセットできないようです。APICを初期化?してしまっているから
かも。
で、別にその辺まで来ると後はリセットボタンを押すだけ、と同じ状態なので
強制リセットのルーチンを頂きましょう。
/usr/src/linux/arch/i386/kernel/process.c
の
> void machine_restart(char * __unused)
> {
> #if CONFIG_SMP
> /*
> * turn off the IO-APIC, so we can do a clean reboot
> */
> init_pic_mode();
>
> #endif
>
> if(!reboot_thru_bios) {
> /* rebooting needs to touch the page at absolute addr 0 */
> :
> :
という関数の所で、次のようにSMPだったら強制的にリセットしてしまう
ようにしましょう。
> void machine_restart(char * __unused)
> {
> #if CONFIG_SMP
> /*
> * turn off the IO-APIC, so we can do a clean reboot
> */
> init_pic_mode();
>
> machine_real_restart(jump_to_bios, sizeof(jump_to_bios));
> #endif
>
> if(!reboot_thru_bios) {
> /* rebooting needs to touch the page at absolute addr 0 */
> :
> :
本来は、どうせこの関数を抜けることなくリブートするわけですから。(^^;