1 Setup and Compile Linux Kernel Speaker: Yi-Ji Jheng Date:
Outline Understand Linux Kernel Setup and Compile Linux Kernel Setup and Compile micro-Linux Kernel 2
UNDERSTAND LINUX KERNEL 3
Where is Kernel ? 4 Hardware Kernel Shell Hardware Kernel Shell, KDE, AP. User
What is Kernel ? Kernel (widely) Code Used by application Control hardware Hardware driver Modularization of driver Dynamic Static 5
Role of Kernel when boot (1/2) 1. Boot Turn on PC 2. Read BIOS Know boot device of sequence 3. Read MBR (Master Boot Record) on H.D. If the boot device is H.D. that we set 6
Role of Kernel when boot (2/2) 4. Execute the Boot Loader We use GRUB that is a kind of Boot Loader Load Kernel in main memory 5. Kernel work Decompress itself Know File System * Know File System Mount “/” and load modules Run Detect and drive hardware 6. Run first program - init 7
Why need to make kernel ? Stable Make system match your hardware New hardware support Other Embedded system 8
Get Linux Kernel 交大資科: ftp://linux.cis.nctu.edu.tw/kernel/ ftp://linux.cis.nctu.edu.tw/kernel/ 義守大學: 9
SETUP AND COMPILE LINUX KERNEL 10
Setup (1/2) #tar zxvf linux tar.gz #cd./linux #make mrproper Clean all of old *.o #cp /boot/config /.config Use default (Host Linux) setup to modify 11
Setup (2/2) #make menuconfig A text mode to select modules that we want Press “Y”, means to include in Kernel Press “M”, means to be modules Press “N”, means not to be modules and don’t include in Kernel 12
Modify SCSI setup SCSI support --> SCSI disk support --> SCSI low-level drivers BusLogic SCSI support ---> Save and quit 13
Make Kernel (1/2) #make dep Check dependency #make bzImage Make Kernel and compress to bzImage #make modules 14
Make Kernel (2/2) #make modules_install After install, modules would locate in /lib/modules/ #cp -a./arch/i386/boot/bzImage /boot/bzImage Install Kernel by manual 15
Modify GRUB #vi /boot/grub/grub.conf title Red Hat Linux (2.4.25) root (hd0,0) kernel /bzImage ro root=/dev/sda2 Save and quit 16
Reboot Reboot and select your new Kernel 17
SETUP AND COMPILE MICRO-LINUX KERNEL 18
Setup #cd./linux #make clean #make menuconfig Disable all modules, unless mention below Tip : disable all modules first before you want to select 19
Processor type and features Processor type and features ---> (386) Processor family 20
General setup General setup ---> [*] Networking support [*] PCI support (Any) PCI access mode (ELF) Kernel core (/proc/kcore) format [*] Kernel support for ELF binaries 21
Networking options Networking options ---> [*] Packet socket [*] Unix domain sockets [*] TCP/IP networking [*] IP: multicasting 22
SCSI support SCSI support ---> [*] SCSI support [*] SCSI disk support [*] Probe all LUNson each SCSI device SCSI low-level drivers ---> [*] BusLogicSCSI support 23
Network device support Network device support ---> [*] Network device support Ethernet (10 or 100Mbit) ---> [*] Ethernet (10 or 100Mbit) [*] EISA, VLB, PCI and on board controllers [*] AMD PCnet32 PCI support 24
Character devices Character devices ---> [*] Virtual terminal [*] Support for console on virtual terminal [*] Standard/generic (8250/16550 and compatible UARTs) serial support 25
File systems File systems ---> [*] Ext3 journallingfile system support [*] /proc file system support [*] Second extended fssupport 26
Console drivers Console drivers ---> [*] VGA text console 27
Modify version of information #vi./include/linux/version.h #define UTS_RELEASE " min" 28
Make Kernel #make dep #make bzImage #cp -a./arch/i386/boot/bzImage /boot/bzImage min 29
Modify GRUB #vi /boot/grub/grub.conf title Red Hat Linux ( min) root (hd0,0) kernel /bzImage min ro root=/dev/sda2 Save and quit 30
Reboot Reboot and select your new Kernel 31
REPLENISH 32
Kernel vs. File System If Kernel don’t know your File System Must make a Initrd (Initial RAM Disk) linuxrc that can let Kernel know File System of modules Kernel can know File System after it use Initrd to load module first 33