== BooyoLiveCD/MakeAsh == download http://developer.linuxtag.net/knoppix/sources/ash-knoppix-26_0.2-4.tar.gz tar zxvf ash-knoppix-26_0.2-4.tar.gz modutils-2.4.15 module-init-tools-3.0 292 rm -Rf module* 293 rm -Rf modut* DEFINE _LINUX_SOURCE ÇÊ¿ä dietlibc install rpm -ivh module-init-tools-4.1-0.pre5.3.src.rpm need to compare insmod.c in bltin and module-init-tools-3.0 edit Makefile insert CC=diet gcc -O2 -Os edit CFLAGS = $(RPM_OPT_FLAGS) -DSHELL -D_LINUX_SOURCE -I/usr/src/linux/include -I. -D__BIT_TYPES_DEFINED__ edit mystring.h rm strlen edit bltin/rmmod.c "Usage: rmmod ?-a | module\n" "Usage: rmmod module\n" unsigned int flags = O_NONBLOCK|O_EXCL; if(argc<2) return syntax(); if(delete_module(argv[1], flags)) { perror(argv[0]); return -1; } return 0; cp /home/tcheun/ash-berry-0.2/bltin/losetup.c . cp /home/tcheun/ash-berry-0.2/bltin/loop.h . edit builtins add losetup_main losetup edit Makefile add losetup.c losetuo.o sh ÀÌ ¸¸µé¾î Áö±â´Â ÇßÁö¸¸, ÀÌ ¹æ¹ýÀÇ ¹®Á¦¸¦ ¾Ë°ÔµÊ. insmod ¸¦ sh ¿¡ builtin À¸·Î ¸¸µé°æ¿ì, insmod ¿¡¼­ ¿À·ù°¡ »ý±â¸é, sh ¿¡¼­ ºüÁ® ³ª¿À¹Ç·Î, °á°úÀûÀ¸·Î ºÎÆÃÀÌ µÇÁö ¾ÊÀ½. º°µµÀÇ insmod ¸¦ »ç¿ëÇϸé, insmod ÀÇ ¿À·ù¸¦ ¿À·ù·Î ó¸®ÇÒ ¼ö ÀÖ½¿. ÇöÀçÀÇ ¸ðµâ Áß fdomain.ko ¿¡¼­ ¹®Á¦ ¹ß»ý. À̸¦ ¹æÁöÇϱâ À§ÇØ knopper °¡ signal(SIGSEGV, SIG_IGN) ¸¦ »ç¿ëÇÏ¿´Áö¸¸, ¼¼±×¸àÅ×ÀÌ¼Ç ¿À·ù ¹ß»ýÇÏ°í Á¤ÁöÇÔ. µð½ºÄÏÀ» »ç¿ëÇÑ ºÎÆÃÀ» °í·ÁÇÒ °æ¿ì, insmod ¸¦ sh ¿¡ builtin ÇÏ´Â °ÍÀÌ ÇÊ¿äÇÏÁö¸¸, udev ·Î ÀÎÇØ ÀÌ¹Ì µð½ºÄÏÀ» »ç¿ëÇÑ ºÎÆÃÀº ¾î·Á¿ö Áø °ÍÀÌ ¾Æ´Ñ°¡? insmod ¿¡ ÀÇÇØ sh ÀÌ Á×À» °¡´É¼ºÀÌ ³Ê¹« ¸¹À¸¹Ç·Î, insmod.static ¸¦ »ç¿ëÇϱâ·Î ÇÔ. == diff knoppix and berry == === Makefile === bltin ¿¡¼­ insmod ¸¦ »©°í, losetup °ú pivot_root ¸¦ Ãß°¡ÇÏ¿´½¿. (SRCS, OBJ2) insmod ´Â module-init-tools-3.0 ÀÇ insmod.o ¸¦ »ç¿ëÇÔ. MOD_OBJ = ./module-init-tools-3.0/insmod.o CFLAGS ÀÇ include ºÎºÐÀ» Á¦°ÅÇÔ. all ÀÇ °æ¿ì MOD_OBJ Ãß°¡ bltin µð·ºÅ丮 ¹Ø¿¡ knoppix ÀÇ °æ¿ì´Â insmod.c °¡ ÀÖ°í, berry ÀÇ °æ¿ì´Â loop.h, losetup.c. pivot_root.c °¡ ÀÖ½¿. === bltin/mount.c === /* #include "../builtins.h" const char *pm="/proc/mounts"; char *nargsv[3]={builtincmk[CATCMD].name,pm,NULL}; return catcmd(2,nargv); */ if(argc<2) /* List mounts, use procfs, simple "cat" */ { char *cat_argv[2]; cat_argv[0]=NULL; cat_argv[1]="/proc/mounts"; return catcmd(2, cat_argv); } knoppix ±×´ë·Î »ç¿ëÇصµ µÊ. (¼öÁ¤ÇÏ¿´½¿) ¾Æ¸¶ bltin/cat.c ÀÇ ¼öÁ¤ ¶Ç´Â bug fix ÀÏ °Í °°À½. === builtins === /* insmodcmd insmod */ insmod_main insmod losetup_main losetup pivot_root_main pivot_root === debian/rules === Çѹø ÀÐ¾î º¸¾Æ¾ß ÇÒ °Í °°À½. === make_ash_static === berry ¿¡¸¸ ÀÖ½¿. === mkinit.c === /* for (p = line1 + 6 ; *p != '=' && *p != '/' ; p++); */ for (p = line1 + 6 ; *p != '=' && *p != '/' && *p != '\n' ; p++); ÀÐ¾î º¸¾Æ¾ß ÇÒ±î? === module-init-tools-3.0/Makefile.am === ÀÐ¾î º¸¾Æ¾ß ÇÒ±î? === module-init-tools-3.0/Makefile.in === ÀÐ¾î º¸¾Æ¾ß ÇÒ±î? === module-init-tools-3.0/backwards_compat.c === ÀÐ¾î º¸¾Æ¾ß ÇÒ±î? === module-init-tools-3.0/configure === ÀÐ¾î º¸¾Æ¾ß ÇÒ±î? === module-init-tools-3.0/configure.in === ÀÐ¾î º¸¾Æ¾ß ÇÒ±î? === module-init-tools-3.0/depmod.c === ÀÐ¾î º¸¾Æ¾ß ÇÒ±î? === module-init-tools-3.0/doc/modprobe.sgml === ÀÐ¾î º¸¾Æ¾ß ÇÒ±î? === module-init-tools-3.0/generate-modprobe.conf === ÀÐ¾î º¸¾Æ¾ß ÇÒ±î? === module-init-tools-3.0/insmod.c === /* return; int main(int argc, char *argv[]) return(0); return(1); */ exit(1); int insmod_main(int argc, char *argv[]) exit(0); exit(1); === module-init-tools-3.0/install-with-care === ÀÐ¾î º¸¾Æ¾ß Çϳª? === module-init-tools-3.0/modinfo.c === /* try_old_version("modinfo", argv); */ if (!getenv("NEW_MODINFO")) try_old_version("modinfo", argv); === module-init-tools-3.0/modprobe.c === === module-init-tools-3.0/modprobe.devfs === === module-init-tools-3.0/testing.h === === parser.c === /* putprompt(ps1val()); */ int i, n; char pwd[256]; if (getcwd(pwd, 256)) { i=0; while (i < 256 && pwd[i] != '\0') i++; if (pwd[i-1] == '/') pwd[i++]='/'; /* for / */ pwd[i++]=']'; n=0; while (*(ps1val()+n) != '\0') { pwd[i++]=*(ps1val()+n); n++; } pwd[i]='\0'; while (i >= 0 && pwd[i] != '/') i--; if (pwd[i-1] == '/') i--; /* for / */ pwd[i]='['; putprompt(&pwd[i]); } else { putprompt(ps1val()); } ÀÐ¾î º¼ °Í.