/sbin/
¿¡ powerd
½ÇÇàÆÄÀÏÀ» º¹»çÇØ ³õ´Â´Ù.
/etc/powerd.conf
¸¦ Àû´çÈ÷ ¼öÁ¤ÇÑ´Ù. ÇÊÀÚ´Â ´ÙÀ½°ú °°ÀÌ ¼öÁ¤ÇÏ¿´´Ù. (2¹ø° ½Ã¸®¾ó Æ÷Æ®¿¡ ¿¬°á)
serialline /dev/cua1
monitor DCD
failwhen low
asserthigh DTR
Áï, ÇÁ·Î±×·¥ÀÌ ½ÃÀ۵Ǹé DTR¿¡ Àü¾ÐÀÌ µé¾î°¡°í 10K OhmÂ¥¸® ÀúÇ×À¸·Î ¿¬°áµÇ¾îÀÖ´Â DCDµµ ¿ª½Ã Àü¾ÐÀÌ Àΰ¡(high)µÈ´Ù. Á¤ÀüÀÌ µÇ¸é DCD¿Í GND°¡ ¸±·¹ÀÌ¿¡ ÀÇÇؼ ´ÝÈ÷°Ô µÇ´Âµ¥ ÀÌ¿¡µû¶ó DCD´Â Àü¾ÐÀÌ 0V°¡ µÇ°í ½ÅÈ£´Â low°¡ µÇ¸ç À̸¦ powerd¿¡¼ °¨ÁöÇÏ´Â °ÍÀÌ´Ù.
/etc/rc.d/rc.local
ÆÄÀÏ(¾Æ´Ï¸é µ¿µîÇÑ ¿ªÇÒÀ» ÇÏ´Â ´Ù¸¥ ÆÄÀÏ)¿¡ ´ÙÀ½ ¶óÀÎÀ» Ãß°¡ÇÑ´Ù.
if [ -f /sbin/powerd ]; then
echo "Running powerd"
/sbin/powerd &
fi
/etc/inittab
¼öÁ¤ - ÇÊÀÚ´Â ´ÙÀ½°ú °°Àº ¶óÀÎÀ» »ðÀÔÇÏ¿´´Ù.
pf::powerfail:/sbin/shutdown -f -h +300 "Power Failure; System Shutting Down"
pr::powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"
ù¹ø° ¶óÀÎÀº Á¤ÀüÀÌ µÇ¾úÀ» °æ¿ì ¸ðµç»ç¶÷µé¿¡°Ô À̸¦ ¾Ë¸®°í 300ºÐ(5½Ã°£)
ÈÄ¿¡ ¼Ë´Ù¿îÀ» Çϵµ·Ï ÇÏ´Â ¶óÀÎÀÌ°í ´ÙÀ½ ¶óÀÎÀº Àü¿øÀÌ º¹±¸µÇ¾úÀ» ¶§
¼Ë´Ù¿îÀ» Ãë¼ÒÇÏ´Â ¶óÀÎÀÌ´Ù. Á¤ÀüÈÄ ¸îºÐ ÈÄ¿¡ ¼Ë´Ù¿îÀ» ½ÃÄÑ¾ß ÇÏ´ÂÁö´Â ´ÙÀ½
¼½¼Ç¿¡¼ ¼³¸íÇÑ´Ù. inittabÀ» ¼öÁ¤ÇÏ¿´À» °æ¿ì ±× »çÇ×ÀÌ ¹Ý¿µµÇµµ·Ï ÇÏ·Á¸é
ÀçºÎÆÃÀ» ÇÏ´øÁö ¾Æ´Ï¸é ·çÆ® ÇÁ·ÒÇÁÆ®¿¡¼ "telinit Q"¶ó°í ÀÔ·ÂÇÏ¸é µÈ´Ù.
·çÆ® ±ÇÇÑÀ¸·Î "telinit Q"¸¦ ÀÔ·ÂÇÏ°í powerd¸¦ ½ÇÇàÇÑ´Ù. ±×·± ´ÙÀ½ ¾î´ðÅ͸¦ »©¼ 10ÃÊ ¸¦ ±â´Ù¸®¸é ¼Ë´Ù¿îÀÌ 300ºÐ ÈÄ¿¡ ½ÃÀÛµÉ °ÍÀ̶ó°í ³ª¿Ã °ÍÀÌ´Ù. ÀÌ »óÅ¿¡¼ ¾î´ðÅ͸¦ ´Ù½Ã ¿¬°áÇÑ ´ÙÀ½ 10ÃÊ°£ ±â´Ù¸®¸é ¼Ë´Ù¿îÀÌ Ãë¼ÒµÇ¾ú´Ù´Â ¸Þ½ÃÁö°¡ ³ª¿Â´Ù. ÀÌ·Î½á ¸ðµç °ÅÀÇ ¸ðµç ÀÛ¾÷ÀÌ ³¡³ ¼ÀÀÌ´Ù.
Ȥ½Ã ÇÊÀÚ°¡ »ç¿ëÇÏ¿´´ø powerd 2.0°ú °°Àº ¹öÀüÀÇ ÇÁ·Î±×·¥À» »ç¿ëÇÑ °æ¿ì¿¡ ÇÁ·Î±×·¥ÀÇ ¹ö±×¿¡ ÀÇÇØ ¼Ë´Ù¿î Ãë¼Ò°¡ ¾È µÉ ¼ö ÀÖ´Ù. ÀÌ °æ¿ì ħÂøÇÏ°Ô "shutdown -c"¸í·ÉÀ¸·Î ¼Ë´Ù¿îÀ» Ãë¼ÒÇÑ ´ÙÀ½ powerd.c¸¦ ¼öÁ¤ÇÑ´Ù. ÇÊÀÚ°¡ ¼öÁ¤ÇÑ °÷Àº ´ÙÀ½°ú °°Àºµ¥(diff °á°ú) Àüü ¼Ò½ºÄڵ带 ´Ù ¶â¾îº» ÈÄ ÇÑ °ÍÀÌ ¾Æ´Ï¹Ç·Î À߸ø ÇÏ¿´À» Áöµµ ¸ð¸¥´Ù. ¾Æ¹¸µç ÇÊÀÚ´Â ¿øÇÏ´Â °á°ú¸¦ ¾òÀ» ¼ö ÀÖ¾úÀ¸¹Ç·Î ÀÌ·¸°Ô °íÃļ »ç¿ëÁßÀÌ´Ù.
ÀÏ´Ü ´ÙÀ½À» powerd.patch·Î ÀúÀåÀ» ÇÑ´Ù.
--------------- powerd.patch start! ----------------
1127,1145d
1098a
/* Create an info file for init. */
unlink(PWRSTAT);
fd = open(PWRSTAT, O_CREAT|O_WRONLY, 0644);
if (fd<0)
{
PERROR(PWRSTAT);
return 1; /* maybe next time... */
}
if (action==ACT_OK)
write(fd, "OK\n", 3);
else
write(fd, "FAIL\n", 5);
close(fd);
MESSAGE("Telling init about...");
kill(1, SIGPWR);
.
1,$wq
--------------- powerd.patch end! ----------------
±×·± ´ÙÀ½ "ed powerd.c < powerd.patch"
¶ó°í ÇÁ·ÒÇÁÆ®¿¡¼ ÀÔ·ÂÇϸé ÀÚµ¿À¸·Î
ÇÁ·Î±×·¥ÀÌ ÆÐÄ¡µÉ °ÍÀÌ´Ù. ÀÌ·± ÈÄ ´Ù½Ã ÄÄÆÄÀÏÇÏ°í ½ÇÇàÇØ º¸±â ¹Ù¶õ´Ù.