å¨åælinuxå
æ ¸æºç çè¿ç¨ä¸ï¼è¦æ¯è½å¤ä¿®æ¹å
æ ¸æºç 并è¿è¡ä¿®æ¹åçå
æ ¸ï¼ææ³è¯å®æ¯ä»¤äººé«å
´çäºï¼åªæ第ä¸æ¬¡ä¿®æ¹ä»
ä»
æ¯å¨å¯å¨æ¶æå°ä¸è¡"Hello, Wang Jiankunï¼"ï¼è¯å®ä¹æ¯ä»¤æé«å
´çã为äºè½æåç¼è¯ä¿®æ¹åçå
æ ¸ï¼ä»å¤©å
ç¼è¯ä¸éå
æ ¸ã
为äºæä¸ä¸ªå®æ´çè®°å½ï¼ä»å¤©çèµ·ç¹æ¯ä¸å°è£¸æºã
1ãå¨è£¸æºä¸å®è£
ä¸ä¸ªæå°çdebianç³»ç»
为äºè½å¤å°½å¯è½æ¸
æ°çæ¾ç¤ºç¼è¯ä¸ä¸ªå
æ ¸æéè¦çç»ä»¶ï¼å¨å®è£
ç³»ç»æ¶ï¼ä»
ä»
å®è£
æå°ç³»ç»ï¼ç¶åéè¦ä»ä¹ï¼å°±ä½¿ç¨apt-getå®è£
ä»ä¹ã
使ç¨ç½ç»å®è£
ï¼å¨å®è£
è¿ç¨ä¸åºç°Software selectionçé¢æ¶ä¸è¦éæ©ä»»ä½é项ï¼è¿æ ·å®è£
çç³»ç»å°æ¯æå°çç³»ç»ã
为äºä½¿ç¨sshè¿ç¨ç»å½ï¼æå°ç³»ç»å®è£
å®æåï¼è¦å®è£
sshæå¡å¨å¹¶ä¸è¦è®¾ç½®éæipå°åï¼debianå®è£
è¿ç¨ä¸æ¯éè¿dhcpè·åçipå°åï¼ã
2ãå®è£
sshæå¡å¨
apt-get install ssh
3ã设置éæipå°å
ä¿®æ¹æ件/etc/network/interfacesï¼å
¶ä¸èè²é¨åæ¯å¢å çï¼çº¢è²é¨åæ¯å±è½æçï¼é»è²é¨åæ¯æ²¡æååçã
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug eth0
# Wang Jiankun commented the following line
#iface eth0 inet dhcp
# Wang Jiankun added the the following lines
iface eth0 inet static
address 192.168.1.251
netmask 255.255.255.0
broadcast 192.168.1.255
network 192.168.1.0
gateway 192.168.1.1
éå¯ç³»ç»åï¼ä¿®æ¹å°çæã
4ãéè¿wgetä¸è½½linuxå
æ ¸æºç
administrator@wangjk:~/kernel$ wget
http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.19.tar.bz25ã解åæ件linux-2.6.19.tar.bz2
administrator@wangjk:~/kernel$ tar jxf linux-2.6.19.tar.bz2
tar: bzip2: Cannot exec: No such file or directory
tar: Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error exit delayed from previous errors
administrator@wangjk:~/kernel$
çæ¥æ¯æ²¡æbzip2è¿ä¸ªå
ï¼é£å°±å®è£
ä¸ä¸ªï¼
apt-get install bzip2
6ãå®è£
debiançkernel-package软件å
å¨å®è£
kernel-package软件å
æ¶ï¼æ好使ç¨å½ä»¤ï¼apt-get build-dep kernel-packageï¼èä¸è¦ä½¿ç¨å½ä»¤ï¼
apt-get install kernel-packageï¼åè
å®è£
ç软件å
æ¯åè
çåéï¼ä½¿ç¨åè
å®è£
kernel-package软件å
åï¼æ§è¡make menuconfigå½ä»¤ä¼åºç°å¤´æ件æ¾ä¸å°çé误ï¼å¦ä¸æ示ï¼
administrator@wangjk:~/kernel/linux-2.6.19$ make menuconfig
HOSTCC scripts/basic/fixdep
scripts/basic/fixdep.c:105:23: error: sys/types.h: No such file or directory
scripts/basic/fixdep.c:106:22: error: sys/stat.h: No such file or directory
scripts/basic/fixdep.c:107:22: error: sys/mman.h: No such file or directory
scripts/basic/fixdep.c:108:20: error: unistd.h: No such file or directory
scripts/basic/fixdep.c:109:19: error: fcntl.h: No such file or directory
scripts/basic/fixdep.c:110:20: error: string.h: No such file or directory
scripts/basic/fixdep.c:111:20: error: stdlib.h: No such file or directory
scripts/basic/fixdep.c:112:19: error: stdio.h: No such file or directory
主è¦æ¯å 为libc6-dev软件å
没æå®è£
ãæ以å³ä½¿ä½¿ç¨äºapt-get install kernel-packageè¿å¾ä½¿ç¨apt-get build-dep kernel-packageï¼ä¸å¦ä¸æ¬¡ä½¿ç¨apt-get build-dep kernel-packageå®ææ¹ä¾¿ã
7ãå®è£
libncurses5-dev软件å
æ¥æ¯æmake menuconfig
éè¿apt-get build-dep kernel-packageå®è£
å®ækernel-packageåï¼æ§è¡make menuconfigä»ç¶æ¥éï¼å¦ä¸æ示ï¼
administrator@wangjk:~/kernel/linux-2.6.19$ make menuconfig
HOSTCC scripts/kconfig/lxdialog/checklist.o
In file included from scripts/kconfig/lxdialog/checklist.c:24:
scripts/kconfig/lxdialog/dialog.h:32:20: error: curses.h: No such file or directory
In file included from scripts/kconfig/lxdialog/checklist.c:24:
scripts/kconfig/lxdialog/dialog.h:97: error: expected specifier-qualifier-list before 'chtype'
scripts/kconfig/lxdialog/dialog.h:187: error: expected ')' before '*' token
scripts/kconfig/lxdialog/dialog.h:193: error: expected ')' before '*' token
scripts/kconfig/lxdialog/dialog.h:195: error: expected ')' before '*' token
scripts/kconfig/lxdialog/dialog.h:196: error: expected ')' before '*' token
scripts/kconfig/lxdialog/dialog.h:197: error: expected ')' before '*' token
scripts/kconfig/lxdialog/dialog.h:198: error: expected ')' before '*' token
scripts/kconfig/lxdialog/dialog.h:200: error: expected ')' before '*' token
scripts/kconfig/lxdialog/checklist.c:31: error: expected ')' before '*' token
scripts/kconfig/lxdialog/checklist.c:59: error: expected ')' before '*' token
scripts/kconfig/lxdialog/checklist.c:95: error: expected ')' before '*' token
[çç¥å
¶åé¨å]
åæ¥æ¯æå°ç³»ç»ä¸æ¯æå¾å½¢çåå ï¼å®è£
libncurses5-devåå³å¯ã
8ãå°ç³»ç»çconfigæ件æ·è´å°å
æ ¸ç®å½ä¸
cp /boot/config-2.6.18-6-686 ./.config
9ãæ§è¡make menuconfig
è½ç¶æ¯å°åæ¥ç³»ç»çconfigæ件æ·è´è¿æ¥çï¼ä½æ¯å¦ææ以çé
ç½®é½éç¨é»è®¤çé
ç½®ä»ç¶ä¼æé®é¢ï¼å¨æçç³»ç»ä¸å¨å è½½æ件系ç»æ¶ä¼æ»æï¼æ以è¿æ¯è¦åå¿
è¦çé
ç½®ï¼ä¸»è¦æ¯å°scsiåsataé¨åç¼è¯è¿å
æ ¸èä¸è¦ç¼è¯æ模åï¼å¦ä¸æ示ï¼
Device Drivers --->
Serial ATA (prod) and Parallel ATA (experimental) drivers --->
SCSI device support --->
å°èè²ä¸¤é¨å级èçé项å
¨é¨ç¼è¯è¿å
æ ¸ï¼å
¶å®æ²¡æå¿
è¦å
¨é¨ï¼ä½ä¸ºäºç®åèµ·è§ï¼ææ¶è¿æ ·åï¼ã
10ãå®è£
fakeroot软件å
11ãç¼è¯å
æ ¸
fakeroot make-kpkg --initrd --revision=custom.1.0 kernel_image
12ãå®è£
å
æ ¸
wangjk:/home/administrator/kernel# dpkg -i linux-image-2.6.19_custom.1.0_i386.deb
Selecting previously deselected package linux-image-2.6.19.
(Reading database ... 17679 files and directories currently installed.)
Unpacking linux-image-2.6.19 (from linux-image-2.6.19_custom.1.0_i386.deb) ...
Done.
Setting up linux-image-2.6.19 (custom.1.0) ...
Running depmod.
Finding valid ramdisk creators.
Using mkinitramfs-kpkg to build the ramdisk.
Running postinst hook script /sbin/update-grub.
You shouldn't call /sbin/update-grub. Please call /usr/sbin/update-grub instead!
Searching for GRUB installation directory ... found: /boot/grub
Searching for default file ... found: /boot/grub/default
Testing for an existing GRUB menu.lst file ... found: /boot/grub/menu.lst
Searching for splash image ... none found, skipping ...
Found kernel: /boot/vmlinuz-2.6.19
Found kernel: /boot/vmlinuz-2.6.18-6-686
Updating /boot/grub/menu.lst ... done
13ãéå¯ç³»ç»å¼å¯¼æ°å
æ ¸åæ¥ççæ¬å·
administrator@wangjk:~$ cat /proc/version
Linux version 2.6.19 (root@wangjk) (gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)) #1 SMP Thu May 7 21:52:10 CST 2009
administrator@wangjk:~$
å¯ä»¥çåºå·²ç»æ¯æç¼è¯çå
æ ¸äºã
æ¬ææ¥èªCSDNå客ï¼è½¬è½½è¯·æ æåºå¤ï¼
http://blog.csdn.net/jiankun_wang/archive/2009/05/04/4147806.aspx------------------------------------
ubuntuä¸å¸¦linuxå
æ ¸æºç ï¼éè¦èªå·±ä¸è½½å®è£
ã
1ï¼æ¥çèªå·±çå
æ ¸çæ¬
uname -r
2ï¼æ¥çæºå
çå
æ ¸æºç 类表
apt-cache search linux-source
3ï¼ä¸è½½å®è£
å
æ ¸æºä»£ç
sudo apt-get install linux-source-2.6.27 //æéçæ¯è¿ä¸ä¸ªï¼èªå·±ççåå§
4ï¼çå¾
........
ä¸è½½å®æåï¼å¨/usr/srcä¸ä¼æä¸ä¸ªæ件å为linux-source-2.6.xx.tar.bz2çå缩å
5ï¼è§£å缩å
tar jxvf linux-source-2.6.27.tar.bz2 //çæ¸
èªå·±ççæ¬
解ååä¼çæä¸ä¸ªæºä»£ç ç®å½/usr/src/linux-source-2.6.27
6ï¼è¿å
¥æºç ç®å½åï¼é
ç½®æ件
make oldconfig
7ï¼çæå
æ ¸
make
8ï¼ç¯ççå¾
ï¼å¤§çº¦1个å¤å°æ¶
9ï¼ç¼è¯æ¨¡å
make modules
10ï¼å®è£
模å
make modules_install
大ååæï¼^_^
ä¸é¢è¯´ä¸ä¸Makefileæ件
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install #PWDå½åå·¥ä½ç®å½çåé
obj-m := hello.o
#hello.oæ¯ä½ è¦çæç驱å¨ï¼ä»¥åå¯ä»¥èªå·±æ¹
KERNELDIR:=/lib/modules/2.6.27-7-generic/build
#è¿éå«æï¼åæä½ èªå·±ççæ¬ï¼è¿ä¸ªç®å½æ§è¡äºå
æ ¸æºç ç®å½
PWD:=$(shell pwd) #å°å½åå·¥ä½ç®å½èµå¼è¯¥PWD
modules:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
modules_install:
ä¸é¢æ¯ä¸ä¸ªç»å
¸çHello,world!ä¾åèªå·±makeä¸ä¸å°±è¡äºã
#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
printk(KERN_ALERT "Hello, world!\n");
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT"Goodbye, cruel world!\n");
}
module_init(hello_init);
module_exit(hello_exit);
æ¬ææ¥èªCSDNå客ï¼è½¬è½½è¯·æ æåºå¤ï¼
http://blog.csdn.net/unikingest/archive/2009/03/10/3977747.aspx-----------------------------------------------------------------------------
ä¿®æ¹çè¿ç¯æç« ï¼èªå·±å äºå 个注æç¹
http://blog.theosoft.net/article.asp?id=57第ä¸æ¬¡çLinux kernelä¸æºå
容æ¯ç¼è¯ä¸ä¸ªå
æ ¸ãæç¨çæ¯Ubuntuï¼æå¾å¤å°æ¹åå
¶å® Linuxä¸ä¸æ ·ï¼æ以就æ¥ææçè¿ç¨åä¸æ¥ï¼ä»¥åä¹å¥½æ个åç
§
é¦å
å½ç¶æ¯ä¸è½½å
æ ¸æºä»£ç ï¼å¦æä½ è¦ææ°çå
æ ¸ï¼å¯ä»¥å»ftp.kernel.orgãå½ç¶ï¼å½å
é度å¯è½ä¼å¾æ
¢ãå¦æä½ æ¯æè²ç½ç¨æ·ï¼å¯ä»¥å»ä¸æµ·äº¤å¤§çéåç«ä¸è½½ï¼å°åæ¯
http://ftp.sjtu.edu.cn/sites/ftp.kernel.org/ï¼ç¼ºç¹å°±æ¯æ²¡æææ°çå
æ ¸ï¼æ´æ°éè¦ä¸å®çæ¶é´ï¼ã
==================================================å¤æ³¨
å¦ææ¯å°±æ¯ç¼è¯ubuntuæ¬çèªå¸¦çå
æ ¸ï¼åªéè¦
æ°ç«å¾æç´¢linux souce,ä¸è½½å¸¦ubuntupatchçkernelçsource codeã
sudo apt-get source linux-source-2.6.27
==================================================å¤æ³¨
æä¸è½½çæ¯linux-2.6.19.2.tar.gzå¯ä»¥ä¸å°çææ°çæ¬äºãä¸å®ä¹åå½ç¶æ¯è§£å缩ãä¸è¿è¿ä¸è½ç´æ¥ç¼è¯ï¼å 为Ubuntuçé»è®¤å®è£
é缺å°å¿
è¦çç»å»ºãæå¼ç»ç«¯ï¼è¾å
¥ä¸ä¸å½ä»¤ï¼
sudo -i
apt-get install build-essential kernel-package libncurses5-dev
ç¶åå°æ°ç«å¾éæææ以ncurseså¼å¤´ç软件å
å
¨é¨è£
ä¸ï¼è¿æ ·å°±å¯ä»¥å¼å§ç¼è¯å
æ ¸äºã
å
è¿è¡ä»¥ä¸å½ä»¤ï¼å¤å¶å½åå
æ ¸çé
ç½®æ件ã
cp /boot/config-`uname -r` ./.config
ç¶å
make menuconfig
éæ© "Load an Alternate Configuration File"ï¼åéæ©ä½ åææ·è´è¿æ¥ç.configæ件ä½ä¸ºé
ç½®æ件ãç¶åç¡®å®ãå½ç»æåï¼ä½ éæ©éåºæ¶ï¼ä¼æ示é®ä½ "Do you wish to save your new kernel configuration?"éæ©yeså³å¯ã
æ¥ä¸æ¥å°±è¦ç¼è¯äºãè¾å
¥å½ä»¤ï¼
make
ä½ ä¹å¯ä»¥å°ç¼è¯ä»»å¡åæ2个线ç¨æ¥æ§è¡ï¼åªè¦è¾å
¥ï¼
make -j2
ç¼è¯ä¸è¬éè¦1~1.5å°æ¶å·¦å³ï¼å°±çcpuçæ§è½å¦ä½
ç¼è¯å®æåï¼å¼å§å®è£
ï¼
make module_install
make install
ç¶åæ·»å å¼å¯¼ä¿¡æ¯ï¼ä¸è¿ä¹åè¿æ¯è¦è£
ä¸ä¸ªç»ä»¶initramfs-toolsï¼è£
å®ä»¥åè¾å
¥ï¼
mkinitramfs -o /boot/initrd.img-2.X.XX /lib/modules/2.X.XX
==================================================å¤æ³¨
åé¢çåæ°ä¸è¦å¿è®°äºï¼å¦åå¯å¨æ°å
æ ¸ä¼åºç°é误:
WARNING: Couldnât open directory /lib/modules/2.6.15.7-ubuntu1: No such file or directory
FATAL: Could not open /lib/modules/2.6.15.7-ubuntu1/modules.dep.temp for writing: No such file or directory
==================================================å¤æ³¨
æåæå¼ /boot/grub/menu.lst
å¨ ## ## End Default Options ## ä¸é¢æ·»å 类似ä¸é¢ç两段
title Ubuntu, kernel 2.6.19.2
root (hd0,4)
kernel /vmlinuz-2.6.19.2 root=/dev/hdd6
initrd /initrd.img-2.6.19.2
savedefault
boot
title Ubuntu, kernel 2.6.19.2 (recovery mode)
root (hd0,4)
kernel /vmlinuz-2.6.19.2 root=/dev/hdd6 ro single
initrd /initrd.img-2.6.19.2
boot
注æ rootåkernelå段è¦æ¨¡ä»¿menu.lstä¸é¢å·²æçå
容åãä¸é¢æ¯ (hd0,4)ï¼é£ä¹ä½ ä¹å(hd0,4)ï¼ä¸é¢åroot=/dev/hdd6ï¼ä½ ä¹åroot=/dev/hdd6ï¼åªæ¯å
æ ¸ççæ¬å·æ¹ä¸ºç°å¨ç¼è¯ççæ¬å·ãç¶åéæ°å¯å¨è®¡ç®æºï¼å¨GRUBä¸éæ©æ°å
æ ¸å¯å¨ãå¦æå¯å¨å¤±è´¥ï¼ä½ å¯ä»¥éå¯éæ©èå
æ ¸ã