System Linux - jądro Jądro systemu Linux jest bezpłatnie rozpowszechniane Jądro systemu Linux jest utrzymywane przez Linusa Torvaldsa Numeracja jądra nr_głowny.nr_poboczny.nr_łaty nr_główny - rzadko się zmienia 0-13.05.1991; 1-13.03.1994, 2-13.06.1996 nr_poboczny - parzysty to jądro stabilne, nieparzysty to jądro rozwojowe nr_łaty (patch) - numer łaty dla aktualnej wersji jądra np. 2.1.13 - jądro rozwojowe, łata (patch) trzynasta
System Linux - jądro (c.d.) Po co nam nowe jądro usunięcie zbędnego kodu poprawia działanie errare humanum est - nowe jądro nie ma starych błędów ma za to nowe błędy!!!!!!! aby móc używać nowego kompilatora lub biblioteki Pobieranie kodu źródłowego jądra publikowane w postaci linux-2.4.23.tar.gz ftp ftp.icm.edu.pl cd /pub/linux/kernel/v2.4 get linux-2.4.23.tar.gz get patch-2.4.23.gz
System Linux - jądro (c.d.) RedHat Linux 9.0 jednolity układ graficzny Open Office, Mozilla,... http://www.redhat.com/software/linux/features/ kernel 2.4.20, GCC 3.2.1 Libc 2.3.2... http://www.redhat.com/software/linux/technical/packages.html Fedora Core 2,3 http://www.fedora.org http://www.fedorafaq.org kernel 2.6.5.1 Fedora Core 4 kernel 2.6.11.1 Fedora Core 5 kernel 2.6.16, Gnome 3.5, GCC 4.1, glibc 2.4, Xen 3.0.1, Samba 3.0.2
System Linux - jądro (c.d.) Jądro 2.4 obsługa do 64GB RAM obsługa wielu procesorów (SMP) obsługa USB (HID - Human Interface Device) nowe sterowniki urządzeń Aironet 802.11 IPv6 NFS v3 ATM TUX WWW Serwer 2.0 zwiększone bezpieczeństwo 2.4.32 (listopad, 2005) 2.4.33.3 (październik, 2006) 2.4.34.5 (czerwiec, 2007) 2.4.36.2 (marzec, 2008) 2.4.37.6 (wrzesień, 2009)
System Linux - jądro (c.d.) Jądro 2.6 (grudzień, 2003) architektura 64-bitowa wywłaszczanie jądra 16 procesorów ulepszone aplikacje baz danych wydajność niezawodność tar xvfj linux-2.6.8.1.tar.bz2 (sierpień, 2004) tar xvfj linux-2.6.16.19.tar.bz2 (maj, 2006) tar xvfj linux-2.6.18.1.tar.bz2 (październik, 2006) tar xvfj linux-2.6.21.5.tar.bz2 (czerwiec, 2007) tar xvfj linux-2.6.24.3.tar.bz2 (marzec, 2008) tar xvfj linux-2.6.31.4.tar.bz2 (paźdzernik, 2009) Linus zachowuje numerację x.y.z, numeracja x.y.z.? oznacza jedynie trywialne patche
Rozpakowanie nowego jądra cd /usr/src/ rm linux mkdir linux-2.4.23 ln -s linux-2.4.23 linux tar xvzf linux-2.4.23.tar.gz Stosowanie łat cd /usr/src uname -a : linux-2.4.22!!!!!! gunzip patch-2.4.23.gz; patch -p0 patch-2.4.23 find /usr/src/linux -follow -name *.rej -print find /usr/src/linux -follow -name *# -print
Struktura katalogowa kodu źródłowego systemu Linux linux modules mm net kernel init lib include ipc ext fs unix inet arch drivers nfs mips net linux asm-alpha ext2 proc alpha char asm-i386 xiafs minix sparc block asm-m68k isofs msdos ppc scsi asm-generic hpfs sysv i386 sound asm-mips umsdos kernel boot mm math-emu asm-sparc
Budowanie (generowanie) jądra cd /usr/src/linux make config lub make menuconfig :Y (tak), N (nie) lub m - moduł jądra jądro eksperymentalne Prompt for development and/or incomplete code/drivers (CONFIG_EXPERIMENTAL) [N/y/?] y obsługa modułów ładowalnych Enable loadable module support (CONFIG_MODULES) [Y/n/?] rodzaj procesora Processor family (386, 486, 586/K5/5x86/6x86/6x86MX, Pentium-Classic, Pentium-MMX, Pentium-Pro/Celeron/Pentium- II, Pentium-III/Celeron(Coppermine), Pentium-4, K6/K6-II/K6- III, Athlon/Duron/K7, Crusoe, Winchip-C6, Winchip-2, Winchip- 2A/Winchip-3, CyrixIII/C3) [Pentium-4]
Budowanie jądra (c.d.) obsługa symetrycznej wieloprocesorowości Symmetric multi-processing support (CONFIG_SMP) [Y/n/?] n obsługa sieci (networking support) Networking support (CONFIG_NET) [Y/n/?] obsługa PCI PCI support (CONFIG_PCI) [Y/n/?] funkcje IPC System V IPC (CONFIG_SYSVIPC) [Y/n/?] obsługa sysctl Sysctl support (CONFIG_SYSCTL) [Y/n/?] obsługa ELF Kernel support for ELF binaries (CONFIG_BINFMT_ELF) [Y/m/n/?]
Budowanie jądra (c.d.) zarządzanie zasilaniem Power Management support (CONFIG_PM) [N/y/?]? CONFIG_PM: "Power Management" means that parts of your computer are shut off or put into a power conserving "sleep" mode if they are not being used. There are two competing standards for doing this: APM and ACPI. If you want to use either one, say Y here and then also to the requisite support below. Power Management is most important for battery powered laptop computers; if you have a laptop, check out the Linux Laptop home page on the WWW at http://www.cs.utexas.edu/users/kharker/linux-laptop/ and the Battery Powered Linux mini-howto, available from http://www.linuxdoc.org/docs.html#howto. Note that, even if you say N here, Linux on the x86 architecture will issue the hlt instruction if nothing is to be done, thereby sending the processor to sleep and saving power.
Budowanie jądra (c.d.) zarządzanie zasilaniem (c.d.) Power Management support (CONFIG_PM) [N/y/?] n obsługa portu równoległego Parallel port support (CONFIG_PARPORT) [N/y/m/?] y PC-style hardware (CONFIG_PARPORT_PC) [N/y/m/?] y obsługa Plug and Play ( nie dotyczy PCI) Plug and Play support (CONFIG_PNP) [Y/m/n/?] n obsługa urządzeń blokowych (np. floppy) Normal PC floppy disk support (CONFIG_BLK_DEV_FD) [Y/m/n/?] Loopback device (CONFIG_BLK_DEV_LOOP) [N/y/m/?] y RAM disk support (CONFIG_BLK_DEV_RAM) [N/y/m/?] y obsługa RAID i LVM (multi-device) Multiple devices (RAID and LVM) (CONFIG_MD) [N/y/?] n
Budowanie jądra (c.d.) opcje sieciowe Packet socket (CONFIG_PACKET) [Y/m/n/?] Netlink device emulation (CONFIG_NETLINK_DEV) [N/y/m/?] y Socket Filtering (CONFIG_FILTER) [N/y/?] y Unix domain sockets (CONFIG_UNIX) [Y/m/n/?] TCP/IP networking (CONFIG_INET) [Y/n/?] IP: multicasting (CONFIG_IP_MULTICAST) [Y/n/?] n protokól IPX The IPX protocol (CONFIG_IPX) [N/y/m/?] y IPX: Full internal IPX network (CONFIG_IPX_INTERN) [N/y/?] (NEW) y
Budowanie jądra (c.d.) QoS QoS and/or fair queueing (CONFIG_NET_SCHED) [N/y/?] n testowanie sieci obsługa telefonii Linux telephony support (CONFIG_PHONE) [N/y/m/?] n obsługa ATA, IDE and ATAPI ATA/IDE/MFM/RLL support (CONFIG_IDE) [Y/m/n/?] Include IDE/ATAPI CDROM support (CONFIG_BLK_DEV_IDECD) [Y/m/n/?] y obsługa chipsetu IDE RZ1000 chipset bugfix/support (CONFIG_BLK_DEV_RZ1000) [Y/n/?] n
Budowanie jądra (c.d.) obsługa dysków SCSI SCSI support (CONFIG_SCSI) [Y/m/n/?] n obsługa IEEE 1394 (FireWire) obsługa urządzeń sieciowych Network device support (CONFIG_NETDEVICES) [Y/n/?] Dummy net driver support (CONFIG_DUMMY) [M/n/y/?] y Ethernet (10 or 100Mbit) (CONFIG_NET_ETHERNET) [Y/n/?] n Ethernet (1000 Mbit) Intel(R) PRO/1000 Gigabit Ethernet support (CONFIG_E1000) [N/y/m/?] y
Budowanie jądra (c.d.) obsługa protokołów sieciowych PLIP (parallel port) support (CONFIG_PLIP) [N/y/m/?] m PPP (point-to-point protocol) (CONFIG_PPP) [N/y/m/?] y PPP support for async serial ports (CONFIG_PPP_ASYNC) [N/y/m/?] (NEW) y PPP over Ethernet (EXPERIMENTAL) (CONFIG_PPPOE) [N/y/m/?] (NEW) y SLIP (serial line) support (CONFIG_SLIP) [N/y/m/?] y CSLIP compressed headers (CONFIG_SLIP_COMPRESSED) [N/y/?] (NEW) y Keepalive and linefill (CONFIG_SLIP_SMART) [N/y/?] (NEW) y Six bit SLIP encapsulation (CONFIG_SLIP_MODE_SLIP6) [N/y/?] (NEW) y
Budowanie jądra (c.d.) obsługa radia amatroskiego Amateur Radio support (CONFIG_HAMRADIO) [N/y/?] obsługa Input core dla HID Input core support (CONFIG_INPUT) [N/y/m/?] y Keyboard support (CONFIG_INPUT_KEYBDEV) [N/y/m/?] m Mouse support (CONFIG_INPUT_MOUSEDEV) [N/y/m/?] m obsługa urządzeń znakowych Parallel printer support (CONFIG_PRINTER) [N/y/m/?] (NEW) m obsługa myszy PS/2 mouse (aka "auxiliary device") support (CONFIG_PSMOUSE) [Y/n/?]
Budowanie jądra (c.d.) obsługa systemów plików Ext3 journalling file system support (CONFIG_EXT3_FS) [N/y/m/?] y DOS FAT fs support (CONFIG_FAT_FS) [N/y/m/?] y MSDOS fs support (CONFIG_MSDOS_FS) [N/y/m/?] y VFAT (Windows-95) fs support (CONFIG_VFAT_FS) [N/y/m/?] y ISO 9660 CDROM file system support (CONFIG_ISO9660_FS) [Y/m/n/?] NTFS file system support (read only) (CONFIG_NTFS_FS) [N/y/m/?] y Second extended fs support (CONFIG_EXT2_FS) [Y/m/n/?] m
Budowanie jądra (c.d.) obsługa sieciowych systemów plików NFS file system support (CONFIG_NFS_FS) [Y/m/n/?] Provide NFSv3 client support (CONFIG_NFS_V3) [N/y/?] y NFS server support (CONFIG_NFSD) [Y/m/n/?] Provide NFSv3 server support (CONFIG_NFSD_V3) [N/y/?] y SMB file system support (to mount Windows shares etc.) (CONFIG_SMB_FS) [N/y/m/?] y
Budowanie jądra (c.d.) obsługa sieciowych systemów plików (c.d.) NCP file system support (to mount NetWare volumes) (CONFIG_NCP_FS) [N/y/m/?] y Packet signatures (CONFIG_NCPFS_PACKET_SIGNING) [N/y/?] y Proprietary file locking (CONFIG_NCPFS_IOCTL_LOCKING) [N/y/?] y Clear remove/delete inhibit when needed (CONFIG_NCPFS_STRONG) [N/y/?] y Use NFS namespace if available (CONFIG_NCPFS_NFS_NS) [N/y/?] y Lowercase DOS filenames (CONFIG_NCPFS_SMALLDOS) [N/y/?] y
Budowanie jądra (c.d.) obsługa stron kodowych (NLS) Codepage 852 (Central/Eastern Europe) (CONFIG_NLS_CODEPAGE_852) [N/y/m/?] (NEW) y Windows CP1250 (Slavic/Central European Languages) [CONFIG_NLS_CODEPAGE_1250] [N/y/m/?] (NEW) y NLS ISO 8859-2 (Latin 2; Slavic/Central European Languages) (CONFIG_NLS_ISO8859_2) [N/y/m/?] (NEW) y obsługa dźwieku Sound card support (CONFIG_SOUND) [Y/m/n/?] n
Budowanie jądra (c.d.) obsługa portu USB Support for USB (CONFIG_USB) [Y/m/n/?] Preliminary USB device filesystem (CONFIG_USB_DEVICEFS) [N/y/m/?] y EHCI HCD (USB 2.0) support (EXPERIMENTAL) (CONFIG_USB_EHCI_HCD) [N/y/m/?] m UHCI Alternate Driver (JE) support (CONFIG_USB_UHCI_ALT) [N/y/m/?] m USB Human Interface Device (full HID) support (CONFIG_USB_HID) [N/y/m/?] m USS720 parport driver (CONFIG_USB_USS720) [N/y/m/?] y USB Serial Converter support (CONFIG_USB_SERIAL) [N/y/m/?] y
Budowanie jądra (c.d.) kernel hacking Kernel debugging (CONFIG_DEBUG_KERNEL) [N/y/?] n make dep zależności pomiędzy plikami źródłowymi ->Makefile make clean gwarantuje kompilację jądra od początku make bzimage cd /usr/src/linux/arch/i386/boot ls -lr make modules
Moduły ładowalne urządzeń make modules_install cd /lib/modules/2.4.23 depmod -a (przebudowanie bazy modułów) zarządzanie modułami insmod /lib/modules/2.4.23/kernel/drivers/net/plip.o lsmod rmmod plip automatyczne ładowanie modułów kerneld (w czasie konfiguracji jądra) potrzebne System V IPC kmod - nowsze wersje jądra
Jądro 2.6 Zmiany instalacja: module-init-tools./configure --prefix=/ make moveold make make install./generate-modprobe.conf /etc/modprobe.conf sysfs (w /etc/fstab) none /sys sysfs defaults 0 0 Inne: RPM, USB, Wireless, Sound, HotPlug http://en.wikipedia.org/wiki/linux_kernel
Jądro 2.6 (FC2,3) rozpakowanie źrodła jak dla 2.4 konfigurowanie wiele opcji, lepsze grupowanie cd /usr/src/linux cp../linux-2.6.5-1.358/configs/kernel-2.6.5-i686.config.config make menuconfig
make xconfig
Jądro 2.6 (FC2,3) (c.d.) make make modules make modules_install kopiowanie jądra do katalogu /boot (jak dla 2.4) fragmenty kodu (np. ext3) biorące udział w rozruchu są modułami - potrzebny ram dysk cd /boot /sbin/mkinitrd /boot/initrd-2.6.8.1.img 2.6.8.1 grub.conf Title Fedora Core 2 (2.6.8.1) root (hd0,2) kernel /boot/bzimage-2.6.8.1 ro root=label=/ rhgb quiet initrd /boot/initrd-2.6.8.1.img http://www.digitalhermit.com/linux/kernel-build-howto.html
Jądro 2.6 (FC4) (c.d.) bzip2 cd linux-2.6.13.4.tar.bz2 tar xvf - -C /usr/src cd /usr/src ln s linux-2.6.13.4 linux cd linux patch -p0 < kernel.patch cp av../kernels/2.6.11-1.1369_fc4-i686/.config. make menuconfig make all make modules_install make install Nvidia driver http://www.mjmwired.net/resources/mjm-kernel-fc4.html SATA driver http://www.keffective.com/mvsata/fc4_howto.html