
æè¿ããã®ãããªã¿ã¹ã¯ããããŸããïŒLinuxã«ãŒãã«ãã¢ã»ã³ãã«ãããã®ã¢ãžã¥ãŒã«ãäœæãããã®å©ããåããŠã·ã¹ãã ã³ãŒã«ãã€ã³ã¿ãŒã»ããããŸãã æåã®2ã€ãåé¡ãªãå®äºããå Žåã3çªç®ãå®è¡ããéçšã§ã10幎åã«ã·ã¹ãã ã³ãŒã«ã®æäœãæ代é
ãã«ãªã£ããšããå°è±¡ãåããŸããã
å®æçã«ãç§ãæ¢ããŠãããã®ã«è¿ãèšäºãã€ã³ã¿ãŒãããã§èŠã€ããŸãããäžéšã¯éåžžã«ããæžãããŠããŸãããã誰ããé倧ãªæ¬ ç¹ããããŸãã-ãããã¯æ代é
ãã§ããã
åææ¡ä»¶
- 4ã³ã¢Intel Core i7ããã»ããµãŒ
- 4 GB RAM + 4 GBã¹ã¯ãã
- VirtualBox 5.1.10ä»®æ³ãã·ã³äžã®Ubuntu 16.10 x64
- Linuxã«ãŒãã«4.9.0
- gcc 6.2.0
æ¬äŒŒã°ã©ãã£ãã¯ã¢ãŒãã§ã«ãŒãã«æ§æãç·šéããã«ã¯ãncursesãå¿
èŠã§ãã
sudo apt-get update sudo apt-get install libncurses5-dev
ã³ã¢ã¢ã»ã³ããªã®ã¯ãªãŒãã³ã°
ã¢ãžã¥ãŒã«ã®éçºãéå§ããåã«ãã¯ãªãŒã³ãªã«ãŒãã«ãæ§ç¯ããããšããå§ãããŸãã ããã«ã¯2ã€ã®çç±ããããŸãã
- æåã®ã«ãŒãã«ãã«ãã¯ãããªãé·ãããã»ã¹ã§ãã ã»ãšãã©ã®å Žåã20åãã3æéç¶ããŸãã äºåã«ãã«ãããŠããã°ãã»ãšãã©ã®ã«ãŒãã«ãã€ããªãå
¥æã§ããŸããåã³ã³ãã€ã«ããå¿
èŠã¯ãããŸããã ããã«ããããç§ã®æåã®Hello Worldãéå§ãããŸããïŒããšãã質åãžã®åçãåŸ
ã€ããšãªããã¢ãžã¥ãŒã«ã®éçºã«å®å
šã«éäžã§ããŸãã
- ããããªã³ã¢ãæ£åžžã«çµã¿ç«ãŠããããã®æ®µéã§åé¡ããªãã次ã®ã¹ãããã«é²ãããšãã§ããããšãããããŸãã æ°ããã³ã³ãã€ã«ãããã«ãŒãã«ã䜿çšããããŒãã倱æããå Žåããããã¢ãžã¥ãŒã«ã䜿çšããŠãããã¢ã»ã³ãã«ããå Žåãã·ã¹ãã ãæ£ç¢ºã«äœãèšå®ããããç解ããããšã¯å°é£ã§ãã
ãã®ãããã«ãŒãã«ã¢ã»ã³ããªïŒ
- ãœãŒã¹ãå«ãã¢ãŒã«ã€ããããŠã³ããŒãããŸãã
wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-xxxtar.xz
ããã§ãxxxã¯ã«ãŒãã«ã®ããŒãžã§ã³ã§ãã
ãŸãã¯ã kernel.orgããæåã§ã¢ãŒã«ã€ããããŠã³ããŒãã§ããŸã
- ã¢ãŒã«ã€ãããããŒã¿ãæœåºããŸãã
tar -xpJf linux-xxxtar.xz
- æ°ãã解åãããã©ã«ããŒã«ç§»åããŸãã
cd linux-xxx
- ããã©ã«ãã®ã«ãŒãã«æ§æãçæããŸãã
make defconfig
äžçŽè
åãïŒ make menuconfig
ã«ãŒãã«æ§æã®ç䌌ã°ã©ãã£ãã¯ã€ã³ã¿ãŒãã§ã€ã¹ãéããŸãã ã»ãšãã©ã®ãªãã·ã§ã³ãç解ããããšã¯é£ãããããŸããããåå¯å€ãã©ã¡ãŒã¿ãŒãç解ããªããã°ããã¹ãŠãå£ãããšã¯éåžžã«ç°¡åã§ãã æåã®ãã«ãã§ã¯ãããã©ã«ãèšå®ã䜿çšããããšããå§ãããŸãã
- ã«ãŒãã«ãšã¢ãžã¥ãŒã«ã®ã¢ã»ã³ããªãçŽæ¥éå§ããŸãã
make && make modules
ã¢ã»ã³ããªã¯20åãã3æéç¶ããŸãã
ã©ã€ãããã¯ïŒ make -jx && make modules -jx
xã¯ããã»ããµã³ã¢ã®æ°+ 1ã§ããã€ãŸããç§ã®å Žåã¯x = 5ã§ãã
ãã®å€ã¯ãã¹ãŠã®ããã¥ã¢ã«ã§èšå®ããããšããå§ãããŸãããå®éã«ã¯ãä»»æã®å€ãèšå®ã§ããŸãã ãã³ã¢ã®æ°ã2åã«ããããã€ãŸã-j 9ãã©ã¡ãŒã¿ãŒã䜿çšããŠã¢ã»ã³ããªãéå§ããããšã«ããŸãããããã«ãããã¢ã»ã³ããªã2åéããªãããšã¯ãããŸããããã·ã¹ãã å
ã®ä»ã®ãã¹ãŠã®ããã»ã¹ã«å¯Ÿããã¢ã»ã³ããªããã»ã¹ã®ç«¶äºåãé«ãŸããŸãã
ããã«ãã·ã¹ãã ã¢ãã¿ãŒïŒgnome-system-monitorïŒã§ããã¹ãŠã®makeããã»ã¹ã®æ倧åªå
床ãèšå®ããŸãã ã·ã¹ãã ã¯æåéããã³ã°ããŸããããã¢ã»ã³ããªã«ã¯6åããããŸããã ãã®æ¹æ³ã¯èªå·±è²¬ä»»ã§äœ¿çšããŠãã ããã
ãã«ããæåããããçµã¿ç«ãŠããã®ããã¹ãŠã€ã³ã¹ããŒã«ããå¿
èŠããããŸãã ããã«ã¯ã«ãŒãæš©éãå¿
èŠã§ãã
- ããããŒã®èšå®ïŒ
sudo make headers_install
- ã¢ãžã¥ãŒã«ã®ã€ã³ã¹ããŒã«ïŒ
sudo make modules_install
- ã«ãŒãã«ãçŽæ¥ã€ã³ã¹ããŒã«ããïŒ
sudo make install
- ã€ã³ã¹ããŒã«ã³ãã³ãã¯ãåæRAMãã£ã¹ã¯ãçæããgrubãæŽæ°ããå¿
èŠããããŸãã çªç¶åæRAMãã£ã¹ã¯ãçæãããªãã£ãå Žåãæ°ããã«ãŒãã«ãåããã·ã¹ãã ã¯èµ·åããŸããã
ããã¯ããã¡ã€ã«ã/boot/initrd.img-xxxãïŒxxx-ã«ãŒãã«ããŒãžã§ã³ïŒã®ååšã«ãã£ãŠç¢ºèªã§ããŸãã
ãã¡ã€ã«ãèŠã€ãããªãã£ãå Žåã¯ãæåã§çæããŸãã
sudo update-initramfs âc âk xxx
- GRUBããŒãããŒããŒã®æŽæ°ïŒ
sudo update-grub
ã§ããïŒ åèµ·ååŸãã·ã¹ãã ã¯æ°ããã«ãŒãã«ã§èµ·åããŸãã çŸåšã®ã«ãŒãã«ããŒãžã§ã³ã確èªããŸãã
uname -r
çªç¶äœãããããããªããã·ã¹ãã ãæ°ããã«ãŒãã«ã§èµ·åããªãå Žåã¯ãã³ã³ãã¥ãŒã¿ãŒãåèµ·åããgrubã¡ãã¥ãŒã®è©³çŽ°ãªãã·ã§ã³ã¡ãã¥ãŒã«ç§»åããŠãç°ãªãããŒãžã§ã³ã®ã«ãŒãã«ïŒä»¥åã«èµ·åããã«ãŒãã«ãéåžžã¯æ¥å°ŸèŸ-generalãããã©ã«ãããŒãžã§ã³ã«è¿œå ãããŸãïŒ ïŒ
ã¢ãžã¥ãŒã«äœæ
å€ãã®æ¹æ³ã§ã«ãŒãã«ã¢ãžã¥ãŒã«ãäœæããããšã¯ãã«ãŒãã«ã«é¢é£ããããã€ãã®éããé€ããŠãCã§ã®éåžžã®ãŠãŒã¶ãŒããã°ã©ã ã®äœæã«äŒŒãŠããŸãã
- ã«ãŒãã«ã¯æšæºCã©ã€ãã©ãªã«ã¢ã¯ã»ã¹ã§ããŸããããããã¯å®è¡é床ãšã³ãŒãéãçç±ã§ãã ãã ããäžéšã®æ©èœã¯ã«ãŒãã«ãœãŒã¹ã«ãããŸãã äŸãã°ãéåžžã®æååé¢æ°ã¯ãã¡ã€ã«lib / string.cã«èšè¿°ãããŠããŸã
- ã¡ã¢ãªä¿è·ã®æ¬ åŠã éåžžã®ããã°ã©ã ãã¡ã¢ãªã«èª€ã£ãŠã¢ã¯ã»ã¹ããããšãããšãã«ãŒãã«ãããã»ã¹ãã¯ã©ãã·ã¥ãããå¯èœæ§ããããŸãã ã«ãŒãã«ãã¡ã¢ãªã«èª€ã£ãŠã¢ã¯ã»ã¹ããããšãããšãçµæã®å¶åŸ¡ãäœäžããŸãã ããã«ãã«ãŒãã«ã¯ããŒãžçœ®æã䜿çšããŸãããã«ãŒãã«ã§äœ¿çšãããåãã€ãã¯ç©çã¡ã¢ãªã®1ãã€ãã§ãã
- ã«ãŒãã«ã§ã¯æµ®åå°æ°ç¹èšç®ã䜿çšã§ããŸããã æµ®åå°æ°ç¹ã¢ãŒããã¢ã¯ãã£ãã«ããã«ã¯ãä»ã®ã«ãŒãã³æäœã®äžã§ãç¹ã«ãæµ®åå°æ°ç¹ãµããŒãããã€ã¹ã®ã¬ãžã¹ã¿ãä¿åããã³ç»é²ããå¿
èŠããããŸãã
- åºå®ã¹ã¿ãã¯ïŒããã³ããªãå°ããïŒã ãã®ãããã«ãŒãã«ã§ååž°ã䜿çšããããšã¯æšå¥šãããŸããã
ããã«ã¡ã¯äžçïŒ
ã«ãŒãã«ã¢ãžã¥ãŒã«ãšããŠãHello worldãã®å
·äœäŸãèŠãŠã¿ãŸãããã éœåã®è¯ãä»»æã®ãã©ã«ããŒã«hello.cãã¡ã€ã«ãäœæããŸãã
éåžžã®ãŠãŒã¶ãŒããã°ã©ã ã¯ãmainïŒïŒé¢æ°ã®åŒã³åºãã§éå§ãããã·ã¹ãã ã«å€ãè¿ããŸã§æ©èœããŸãã
å®éãã¢ãžã¥ãŒã«ã¯ã³ã¢ã³ãŒãèªäœã®äžéšã§ãããäžéšã®ã€ãã³ãã®ãã³ãã©ãŒé¢æ°ãå«ãŸããŠããŸãã ãã®ãããªã€ãã³ãã®æãåçŽãªäŸã¯ãã¢ãžã¥ãŒã«èªäœã®ããŒããŸãã¯ã¢ã³ããŒãã§ãã
ãããã®ã€ãã³ããåŠçããé¢æ°ã¯ãããã
static int __init myinitïŒvoidïŒ
éçvoid __exit myexitïŒvoidïŒãããã¯__initã__ exitãã¯ãã§ããŒã¯ãããmodule_initããã³module_exitã§ã€ãã³ããã³ãã©ãŒãšããŠç»é²ãããŸãã ãããã®é¢æ°ã®ååã¯äœã§ãæ§ããŸããããã«ãŒãã«å
ã®ä»ã®é¢æ°ãšç«¶åããªãããã«ããŠãã ããã
ã«ãŒãã«ã¯æšæºCã©ã€ãã©ãªã䜿çšããªããããstdio.hã¯äœ¿çšã§ããŸããã 代ããã«ãprintké¢æ°ãå®è£
ããkernel.hãã¡ã€ã«ãå«ããŸãã ãã®é¢æ°ã¯printfã«äŒŒãŠããŸããã端æ«ãŠã£ã³ããŠã§ã¯ãªãã·ã¹ãã ãã°ïŒ/ var / log / syslogïŒã«ã¡ãã»ãŒãžã衚瀺ããç¹ãç°ãªããŸãã
ã·ã¹ãã å
šäœããã®å€ãã®ã¡ãã»ãŒãžããã®ãã°ã«æžã蟌ãŸãããããåŸã§
grepãŠãŒãã£ãªãã£ã䜿çšããŠã¢ãžã¥ãŒã«ããã®ã¡ãã»ãŒãžã®ã¿ãéžæã§ããããã«ãå
ã®
tagã§ããŒã¯ããå¿
èŠããããŸãã
å¥ã®ãããã«ããè¡ã¯
MODULE_LICENSEïŒ "GPL"ïŒã§ãã圌女ã¯ãç§ãã¡ã®ã¢ãžã¥ãŒã«ãGPLã«æºæ ããŠããããšã瀺ããŠããŸãã ããããªããšãã«ãŒãã«å
ã®äžéšã®æ©èœãå©çšã§ããªããªããŸãã
çµç«
ã¢ãžã¥ãŒã«ã®ãœãŒã¹ã³ãŒããããåããã©ã«ããŒã«ãã®ã¢ãžã¥ãŒã«ãã¢ã»ã³ãã«ããã«ã¯ãMakefileãäœæããŸãã
# KERNEL_PATH = /path-to-your-kernel/linux-xxx # , obj-m += hello.o all: # make -C , # KERNEL_PATH. , # # SUBDIRS - , , # - make -C $(KERNEL_PATH) SUBDIRS=$(PWD) modules # , make clean # , clean: rm -f *.o *.mod* Module.symvers modules.order
Makefileãäœæããããã¢ã»ã³ããªã«çŽæ¥ç§»åããŸãã
make
æ°ç§åŸãæ¢è£œã®ã³ã³ãã€ã«æžã¿ã¢ãžã¥ãŒã«ã§ããhello.koãã¡ã€ã«ããã©ã«ããŒã«è¡šç€ºãããŸãã
ããŒããšã¢ã³ããŒã
ã¢ãžã¥ãŒã«ãã«ãŒãã«ã«ããŒãããã«ã¯ã2ã€ã®æ¹æ³ããããŸãã
- ã¢ãžã¥ãŒã«ãšã«ãŒãã«ã®ã¢ã»ã³ããªã ãã®å Žåãã¢ãžã¥ãŒã«ã¯ã·ã¹ãã èµ·åã®äžéšãšããŠããŒããããã¢ãžã¥ãŒã«èªäœãã«ãŒãã«ã³ãŒãã®äžéšã«ãªããŸãã
- ãã§ã«å®è¡äžã®ã·ã¹ãã ã§ã®åçããŒãã äžèšã®ã¢ãžã¥ãŒã«äœææ¹æ³ã«ã¯ããŸãã«ãã®ãããªããŒãæ¹æ³ãå«ãŸããŸãã ãã®å Žåãã¢ãžã¥ãŒã«ã®ããŒãã¯ãéåžžã®ãŠãŒã¶ãŒããã°ã©ã ã®èµ·åã«äŒŒãŠããŸãã
ããŠã³ããŒãã¢ãžã¥ãŒã«ïŒ
sudo insmod hello.ko
insmodã³ãã³ãã¯ã¢ãžã¥ãŒã«ãã«ãŒãã«ç©ºéã«ããŒãããåæåé¢æ°ãåŒã³åºããŸãã
ãã®åŸãã¢ãžã¥ãŒã«ã¯ããŠã³ããŒãããããã®ã®ãªã¹ãã«åé¡ãããŸãã ããã¯ã
lsmodã³ãã³ãã§ç¢ºèªã§ããŸãã

åæåé¢æ°ã§ã¯ãã·ã¹ãã ãã°ã«ã¡ãã»ãŒãžãåºåãã
printkã®åŒã³åºããè¿œå ããŸããã
ã·ã¹ãã ãã°ã衚瀺ããã«ã¯ã
dmesgãŠãŒãã£ãªãã£ãååšããŸãã
dmesg | grep '<my_tag>'
äžèšã®ã³ãã³ãã¯åºåããŸã
<my_tag> hello world
ã¢ãžã¥ãŒã«ãããŒãããåŸãã¢ãžã¥ãŒã«ã¯ã¢ã³ããŒãããããŸã§ã«ãŒãã«å
ã§ãã³ã°ãããŸãŸã«ãªããŸãã ãããè¡ãã«ã¯ïŒ
sudo rmmod hello.ko
ãã®ã³ãã³ãã¯__exitã€ãã³ããã³ãã©ãŒãåŒã³åºããŸããã空ã®é¢æ°ããããããã«ãŒãã«ããã¢ãžã¥ãŒã«ãã¢ã³ããŒããã以å€ã¯äœãèµ·ãããŸããã
ã©ã€ãããã¯ãããã°äžã«ã¢ãžã¥ãŒã«ãããŒãããã³ã¢ã³ããŒããããã³ã«2ã€ã®ã³ãã³ããå
¥åããªãããã«ãåæåé¢æ°ã§å€-1ãè¿ãããŸãã ãã®ãããªã¢ãžã¥ãŒã«ãããŒãããããšãããšã端æ«ã«ãšã©ãŒã衚瀺ããããã®åŸåäœãåæ¢ããŸãããåæã«åæåæ©èœã¯å®å
šãã€æ£ç¢ºã«å®è¡ãããæ¬è³ªçã«ãŠãŒã¶ãŒããã°ã©ã ã®ã¡ã€ã³ïŒïŒæ©èœã®ã¢ããã°ã«å€ãããŸãã
static int __init myinit(void) { printk("%s\n","<my_tag> hello world"); return -1; }
次ã«ãã¢ãžã¥ãŒã«ãããŒãããæåã®æ¹æ³ãšããã®èšäºãæåã«æžãããç®çãæ€èšããŸãã
ã·ã¹ãã ã³ãŒã«ã®åå
å®å
šã§ãªãæ¹æ³
æã
ãããŒãžã§ã³2.6ã®ã«ãŒãã«ã®åã§ãããã·ã¹ãã ã³ãŒã«ãã€ã³ã¿ãŒã»ããããããã«ã圌ãã¯ããã眮ãæããããã¯é¢æ°ãæžããŸããã
é¢æ°ã®ãããªåã·ã¹ãã ã³ãŒã«ã«ã¯ç¬èªã®ã¢ãã¬ã¹ããããLinuxã«ã¯ãããã®ã¢ãã¬ã¹ãæ ŒçŽãããç¹å¥ãªããŒãã«ããããããã¿ã¹ã¯ã¯ã·ã¹ãã ã³ãŒã«ã¢ãã¬ã¹ããã®ããŒãã«ã®é¢æ°ã®ã¢ãã¬ã¹ã«çœ®ãæããããšã§ããã
åŸã«ãLinuxéçºè
ã¯ãã®ãããªæ¹æ³ã®å¯èœæ§ãæé€ããããšããŸãããããã®æ¹æ³ãå®è£
ã§ããããã«ãããããã³ã°ãäŸç¶ãšããŠååšããŸãã
ãã ããããã¯éåžžã«å®å
šã§ã¯ãªãããã説æããŸããã ããã«ãåé¡ã解決ããããã«ã圌ãã¯ãããšã¬ã¬ã³ãã§å®å
šãªãœãªã¥ãŒã·ã§ã³ãæãã€ããŸããã
LSM
LSMã¯ãã«ãŒãã«ã»ãã¥ãªãã£ã¢ãžã¥ãŒã«ãéçºããããã®ãã¬ãŒã ã¯ãŒã¯ã§ãã æšæºã®
DACã»ãã¥ãªãã£ã¢ãã«ãæ¡åŒµããããæè»ã«ããããã«äœæãããŸããã ãã®ãã¬ãŒã ã¯ãŒã¯ã¯ãæåãªSELinuxã»ãã¥ãªãã£ã¢ãžã¥ãŒã«ãšãã«ãŒãã«ã«çµã¿èŸŒãŸããä»ã®ããã€ãã®ã»ãã¥ãªãã£ã¢ãžã¥ãŒã«ã䜿çšããŸãã
ãã®ãã¬ãŒã ã¯ãŒã¯ã§ç§ãã¡ã«ãšã£ãŠæã䟡å€ã®ããããšã¯ãã«ãŒãã«ã«äºåã«ã€ã³ã¹ããŒã«ããã
ããã¯ã®ã»ãããä»ããŠå®è£
ãããããšã§ãïŒå®éãã«ãŒãã«ã¯ãã®ãããªããã¯çšã«äºåã«èšèšãããŠãããããäžèšã®æ¹æ³ã¯å®å
šã§ãïŒã
LSMã§ã¯
ãããã¯ã®ã³ãŒãã«
ã«ã¹ã¿ã åŒã³åºããæ¿å
¥ã§ããŸããããã«ãããæåããŒãã«ãå€æŽããã«ã·ã¹ãã åŒã³åºããå®å
šã«åŠçã§ããŸãã
ãã¹ãŠãéåžžã«ç°¡åã§ãã
mk_dirã·ã¹ãã ã³ãŒã«ãã€ã³ã¿ãŒã»ãããã
foobââarã»ãã¥ãªãã£ã¢ãžã¥ãŒã«ãäœæããäŸãèããŠã¿ãŸãããã
ã³ãŒãèšè¿°
- ã«ãŒãã«ãœãŒã¹ã«ã»ãã¥ãªãã£ãã©ã«ããŒãèŠã€ãããã®äžã«ã¢ãžã¥ãŒã«çšã®ãã©ã«ããŒãäœæãããã®ãœãŒã¹ã³ãŒãfoobar.cãäœæããŸãã
lsm_hooks.hãã¡ã€ã«ã«ã¯ãããã®äºåå®çŸ©ãããããã¯ã®ããããŒãå«ãŸããLSM_HOOK_INITã¯å¯Ÿå¿ããfoobar_inode_mkdirïŒïŒãinode_mkdirïŒïŒããã¯ã«èšé²ããsecurity_add_hooksïŒïŒã¯é¢æ°ãLSMã«ã¹ã¿ã ããã¯ã®äžè¬ãªã¹ãã«è¿œå ããŸãã
ãããã£ãŠã mkdirãåŒã³åºããã³ã« ãé¢æ°foobââar_inode_mkdirïŒïŒãåŒã³åºãããŸãã
- é¢æ°ã®ããããŒããã¡ã€ã«ã/include/linux/lsm_hooks.hãã«è¿œå ããŸãã
#ifdef CONFIG_SECURITY_FOOBAR extern void __init foobar_add_hooks(void); #else static inline void __init foobar_add_hooks(void) { } #endif
ãã¹ãŠã®åŒã³åºãã¯security.cãœãŒã¹ãã¡ã€ã«ïŒä»¥éïŒã§è¡ãããŸãããã®ã¹ãããã§ã¯ãé¢æ°ã®ååšã圌ã«éç¥ããŸãã
- ãã¡ã€ã«ã/security/security.cãã§ããint __init security_initïŒvoidïŒãé¢æ°ãèŠã€ãããã®æ¬äœã«æ¬¡ã®åŒã³åºããè¿œå ããŸãã
foobar_add_hooks()
ãã¹ãŠãã³ãŒãå
ã®äŸåé¢ä¿ãæ£ããæ§æãããŠããŸãã ã«ãŒãã«æ§æãã¡ã€ã«ã«ãã¢ãžã¥ãŒã«ãšäžç·ã«ã¢ã»ã³ãã«ããããšãéç¥ããã ãã§ãã
ã¢ã»ã³ããªæ§æ
- ã¢ãžã¥ãŒã«ã®ãããã©ã«ããŒïŒ/ security / foobar /ïŒã§ãKconfigãã¡ã€ã«ãäœæããŸãã
config SECURITY_FOOBAR bool "FooBar security module" default y help Any help text here
ããã«ãããã¢ãžã¥ãŒã«ã§ã¡ãã¥ãŒé
ç®ãäœæãããŸãã
- ãã¡ã€ã«/ security / Kconfigãéãããmenuãã»ãã¥ãªãã£ãªãã·ã§ã³ãã®è¡ã®çŽââåŸã«æ¬¡ã®ããã¹ããè¿œå ããŸãã
source security/foobar/Kconfig
ããã«ãããã¡ãã¥ãŒé
ç®ãã°ããŒãã«ã«ãŒãã«èšå®ã¡ãã¥ãŒã«è¿œå ãããŸãã
- ã¢ãžã¥ãŒã«ãå«ããã©ã«ããŒã«MakefileãäœæããŸãã
obj-$(CONFIG_SECURITY_FOOBAR) += foobar.o
- ã»ãã¥ãªãã£ã»ã¯ã·ã§ã³å
šäœïŒ/ security / MakefileïŒã®Makefileãéãã次ã®è¡ãè¿œå ããŸãïŒä»ã®ã¢ãžã¥ãŒã«ã®åãè¡ãšåæ§ïŒã
subdir-$(CONFIG_SECURITY_FOOBAR) += foobar obj-$(CONFIG_SECURITY_FOOBAR) += foobar/
- ç䌌ã°ã©ãã£ãã¯ã¢ãŒãã§æ§æãå®è¡ããŸãã
make menuconfig
ãã»ãã¥ãªãã£ãªãã·ã§ã³ããµãã¡ãã¥ãŒã«ç§»åãããšãæåã®é
ç®ã«ãyãèšå·ãä»ããã¢ãžã¥ãŒã«ã衚瀺ãããŸãïŒKconfigãã¡ã€ã«ã®äœææã«ãã®ããã©ã«ãå€ãèšå®ããŸãïŒãã€ãŸããã¢ãžã¥ãŒã«ãã«ãŒãã«ã³ãŒãã«çŽæ¥çµ±åããŸãã
çµç«
ãã®æ®µéã§ã¯ãèšäºã®åé ã§èª¬æããããã«ãæãäžè¬çãªã«ãŒãã«ã¢ã»ã³ããªãå®è¡ããŸãã ãã ããã¯ãªãŒã³ã³ã¢ã¯æ¢ã«äºåã«çµã¿ç«ãŠãããŠãããããããã»ã¹ã¯å°ãç°¡ç¥åãããŸããã
make && make modules
makeã¯ãæ°ç§ã§ã¢ãžã¥ãŒã«ã䜿çšããŠã«ãŒãã«ãåæ§ç¯ããããã-jãªãã·ã§ã³ãå¿
èŠãšããŸããã
sudo make install
ããããŒãšã¢ãžã¥ãŒã«ã®ã€ã³ã¹ããŒã«ã¯äžèŠã§ããããã¯ä»¥åã«è¡ãããŸããã
ããã ãã§ãïŒ
ã·ã¹ãã ããªããŒãããããã«æ®ãããã®åŸãmkdirã€ã³ã¿ãŒã»ããã䜿çšããã¢ãžã¥ãŒã«ãã«ãŒãã«ã§ãã³ã°ããŸãã å
ã»ã©èšã£ãããã«ã次ã®æ¹æ³ã§ç¢ºèªããŸãã
dmesg | grep '<my_tag>'
ç®ããé ããŠããã·ã¹ãã ã«ã¯å€ãã®ããã»ã¹ãããã®ã§ãå€ãã®ååãããã®ãèŠãŠé©ããªãã§ãã ããã
ãã®ã¬ã€ãã誰ãã«åœ¹ç«ã€ããšãé¡ã£ãŠããŸãïŒã«ãŒãã«ãæãå§ããåã«èª°ããç§ã«ä»£ãã£ãŠæžããŠããããªãã2ã3é±éã®åœãæãã§ãããïŒã
ã©ããªæ¹å€ãæè¿ããŸãã
ãæž
èŽããããšãããããŸããã