이것은 간략한 reboot/poweroff 의 예제를 만든겁니다.
꽤 간략하게 구현한것인데
실제로 완전한 구현은 생각보다 깊은 이해를 필요로 합니다.
swapoff와 unmount filesystem 부분은 귀찮아서 구현하지 않았습니다.
그밖에 콘솔관련 정리하는 부분도 넣지 않았습니다.
해당 미구현된 부분이 없어도 기능상 문제가 거의 없지만
완전한 구현을 위해서는 필요합니다.
i386/ppc/arm/mips 모두에서 사용가능할겁니다.
원문: http://minzkn.wowdns.com:2744/phpBB2/viewtopic.php?t=412
사용방법
Makefile
# Copyright (C) Information Equipment co.,LTD
# All rights reserved.
# Code by JaeHyuk Cho <mailto:minzkn@infoeq.com>
# CVSTAG="$Header: /usr/local/mutihost/joinc/modules/moniwiki/data/text/RCS/Code_2fC_2freboot,v 1.1 2007/01/09 02:46:10 root Exp root $"
# bash$ make TARGET_ARCH=i386 all
# bash$ make TARGET_ARCH=mips all
# bash$ make TARGET_ARCH=ppc all
# bash$ make TARGET_ARCH=arm all
TARGET_ARCH :=i386
# TARGET_ARCH :=mips
# TARGET_ARCH :=ppc
# TARGET_ARCH :=arm
ifeq ($(findstring mips,$(TARGET_ARCH)),mips)
CROSS_COMPILE :=/opt/kenati/bin/lx4189-uclibc-#
else
ifeq ($(findstring ppc,$(TARGET_ARCH)),ppc)
CROSS_COMPILE :=/opt/hardhat/devkit/ppc/405/bin/ppc_405-#
else
ifeq ($(findstring arm,$(TARGET_ARCH)),arm)
CROSS_COMPILE :=/usr/local/arm-linux/bin/arm-linux-#
else
ifeq ($(findstring i386,$(TARGET_ARCH)),i386)
CROSS_COMPILE :=#
else
CROSS_COMPILE :=#
endif
endif
endif
endif
CC := $(CROSS_COMPILE)gcc
RM := rm -f
CFLAGS := -O2 -Wall -Werror -fomit-frame-pointer -pipe -I. -D_REENTRANT
LDFLAGS := -s
TARGET := mzreboot mzpoweroff
OBJECT_mzreboot := reboot.o
OBJECT_mzpoweroff := poweroff.o
OBJECTS := $(OBJECT_mzreboot) $(OBJECT_mzpoweroff)
.PHONY: all clean
all: $(TARGET)
clean: ; $(RM) *.o $(TARGET)
$(OBJECTS): Makefile shutdown.h
mzreboot: $(OBJECT_mzreboot) ; $(CC) $(LDFLAGS) -o $(@) $(^)
mzpoweroff: $(OBJECT_mzpoweroff) ; $(CC) $(LDFLAGS) -o $(@) $(^)
%.o: %.c ; $(CC) $(CFLAGS) -c -o $(@) $(<)
# End of Makefile
설명
사용방법
코드
변경사항
2005/08/13
Recent Posts
Archive Posts
Tags