Построение ядра Linux
Идём на www.kernel.org,
Скачиваем http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.22.tar.bz2
в /home/timur-tion/Proj/linux/
Скачиваем с сайта Завода Электрооборудования
http://www.zao-zeo.ru/media/files/linux/2.6.22/patch/linux-2.6.22_tion270_20090122.tar.gz
патч к этой версии ядра.
Распаковываем патч:
timur-tion@timur-ibm:~/Proj$ ls
hello linux OSELAS-toolchain1.1.1 ptxdist
timur-tion@timur-ibm:~/Proj$ cd linux/
timur-tion@timur-ibm:~/Proj/linux$ ls
linux-2.6.22.tar.bz2 linux-2.6.22_tion270_20090122.tar.gz
timur-tion@timur-ibm:~/Proj/linux$ tar xzf linux-2.6.22_tion270_20090122.tar.gz
timur-tion@timur-ibm:~/Proj/linux$ ls
linux-2.6.22.tar.bz2 linux-2.6.22_tion270_20090122 linux-2.6.22_tion270_20090122.tar.gz
|
Распаковываем ядро:
timur-tion@timur-ibm:~/Proj/linux$ tar xjf linux-2.6.22.tar.bz2
timur-tion@timur-ibm:~/Proj/linux$ ls
linux-2.6.22 linux-2.6.22.tar.bz2 linux-2.6.22_tion270_20090122 linux-2.6.22_tion270_20090122.tar.gz
|
Накладываем патч:
timur-tion@timur-ibm:~/Proj/linux$ cd linux-2.6.22
timur-tion@timur-ibm:~/Proj/linux/linux-2.6.22$ ls
arch COPYING crypto drivers include ipc kernel
MAINTAINERS mm README scripts sound block CREDITS
Documentation fs init Kbuild lib Makefile net
REPORTING-BUGS security usr
timur-tion@timur-ibm:~/Proj/linux/linux-2.6.22$ patch -p0 < ../linux-2.6.22_tion
270_20090122/linux-2.6.22_tion270_20090122.linux-2.6.22_tion270_20090122.log lin
ux-2.6.22_tion270_20090122.patch
timur-tion@timur-ibm:~/Proj/linux/linux-2.6.22$ patch -p0 < ../linux-2.6.22_tion
270_20090122/linux-2.6.22_tion270_20090122.patch
patching file kernel/exit.c
patching file kernel/time/timekeeping.c
patching file kernel/sched_fair.c
....................................
patching file drivers/i2c/chips/max6900.h
patching file drivers/i2c/chips/ds1337.c
patching file drivers/i2c/chips/m41t00.c
patching file drivers/i2c/chips/24c01a.c
patching file drivers/i2c/chips/Makefile
timur-tion@timur-ibm:~/Proj/linux/linux-2.6.22$
|
Устанавливаем переменные окружения:
timur-tion@timur-ibm:~/Proj/linux/linux-2.6.22$ export ARCH=arm
timur-tion@timur-ibm:~/Proj/linux/linux-2.6.22$ export CROSS_COMPILE=/opt/OSELAS
.Toolchain-1.1.1/arm-xscale-linux-gnu/gcc-4.0.4-glibc-2.3.6-kernel-2.6.17/
arm-xscale-linux-gnu/ include/ libexec/
share/ bin/ info/
man/ sysroot-arm-xscale-linux-gnu/ gcc-first/
lib/ sbin/
timur-tion@timur-ibm:~/Proj/linux/linux-2.6.22$ export CROSS_COMPILE=/opt/OSELAS.
Toolchain-1.1.1/arm-xscale-linux-gnu/gcc-4.0.4-glibc-2.3.6-kernel-2.6.17/bin/arm-
xscale-linux-gnu-
|
Затем делаем:
make tion-pro270_defconfig
CRC32 functions (CRC32) [Y/?] y
CRC32c (Castagnoli, et al) Cyclic Redundancy-Check (LIBCRC32C) [N/m/y/?] n
#
# configuration written to .config
#
|
Теперь делаем
что-то меняем если надо, но я ничего не менял, нажимаем кнопку exit,
делаем:
результатом сборки становится образ zImage.
timur-tion@timur-ibm:~/Proj/linux/linux-2.6.22$ ls
arch COPYING Documentation include Kbuild MAINTAINERS Module.symvers REPORTING-BUGS sound vmlinux
async_tx CREDITS drivers init kernel Makefile net scripts System.map
block crypto fs ipc lib mm README security usr
timur-tion@timur-ibm:~/Proj/linux/linux-2.6.22$ find . | grep zImage
./Documentation/powerpc/zImage_layout.txt
./arch/arm/boot/zImage
./arch/arm/boot/.zImage.cmd
./arch/powerpc/boot/zImage.coff.lds.S
./arch/powerpc/boot/zImage.lds.S
|
Для того, чтоб прошить этот zImage, надо его сначала преобразовать в uImage (это нужно для того, чтоб U-Boot мог загрузить этот образ по нужному адресу).
Для этого нам нужно скачать проект u-Boot-a и скомпилировать программу mkimage:
|
Качаем отсюда ftp://ftp.denx.de/pub/u-boot/u-boot-1.3.3.tar.bz2 в /home/timur-tion/Proj/u-boot1.3.3
качаем отсюда http://www.zao-zeo.ru/media/files/u-boot/patch/u-boot-1.3.3_tion-tion270-series_svn602_200906161802.tar.gz
патч для u-boot-a.
Разархивируем u-boot:
timur-tion@timur-ibm:~/Proj/u-boot1.3.3$ tar xjf u-boot-1.3.3.tar.bz2
|
Разархивируем патч:
timur-tion@timur-ibm:~/Proj/u-boot1.3.3$ tar xzf u-boot-1.3.3_tion-tion270-series_svn602_200906161802.tar.gz
timur-tion@timur-ibm:~/Proj/u-boot1.3.3$ ls
u-boot-1.3.3 u-boot-1.3.3_tion-tion270-series_svn602_200906161802
u-boot-1.3.3.tar.bz2 u-boot-1.3.3_tion-tion270-series_svn602_200906161802.tar.gz
|
Накладываем патч:
timur-tion@timur-ibm:~/Proj/u-boot1.3.3/u-boot-1.3.3$ ls
api config.mk i386_config.mk lib_microblaze MAKEALL onenand_ipl
api_examples COPYING include lib_mips Makefile post
arm_config.mk cpu lib_arm lib_nios microblaze_config.mk ppc_config.mk
avr32_config.mk CREDITS lib_avr32 lib_nios2 mips_config.mk README
blackfin_config.mk disk lib_blackfin lib_ppc mkconfig rules.mk
board doc libfdt lib_sh nand_spl sh_config.mk
CHANGELOG drivers lib_generic lib_sparc net sparc_config.mk
CHANGELOG-before-U-Boot-1.1.5 examples lib_i386 m68k_config.mk nios2_config.mk tools
common fs lib_m68k MAINTAINERS nios_config.mk
timur-tion@timur-ibm:~/Proj/u-boot1.3.3/u-boot-1.3.3$ patch -p1 < ../u-boot-1.3.3_tion-
tion270-series_svn602_200906161802/u-boot-1.3.3_tion-tion270-series_svn602.patch
patching file cpu/arm920t/ep93xx/gpio.c
patching file cpu/arm920t/ep93xx/interrupts.c
patching file cpu/arm920t/ep93xx/serial.c
patching file cpu/arm920t/ep93xx/eth.c
.................................................
patching file board/edb93xx/Makefile
patching file board/edb93xx/lowlevel_init.S
patching file common/cmd_mem.c
patching file common/lcd.c
patching file MAKEALL
patching file drivers/mtd/cfi_flash.c
|
Собираем u-boot:
timur-tion@timur-ibm:~/Proj/u-boot1.3.3/u-boot-1.3.3$ export CROSS_COMPILE=/opt/
OSELAS.Toolchain-1.1.1/arm-xscale-linux-gnu/gcc-4.0.4-glibc-2.3.6-kernel-2.6.17/
bin/arm-xscale-linux-gnu-
timur-tion@timur-ibm:~/Proj/u-boot1.3.3/u-boot-1.3.3$ make tion_pro270_config
Configuring for tion_pro270 board...
With 64 MB RAM (for 128 MB use MEMORY=128)
make
................................. много букв.............
в итоге выдало ошибку
STCC -O -o bmp_logo bmp_logo.o
strip bmp_logo
make[1]: *** No rule to make target `logos/zeo.bmp', needed by `/home/timur-tion
/Proj/u-boot1.3.3/u-boot-1.3.3/include/bmp_logo.h'. Stop.
make[1]: Leaving directory `/home/timur-tion/Proj/u-boot1.3.3/u-boot-1.3.3/tools'
make: *** [tools] Error 2
|
Но посмотрим, может быть нужный нам mkimage собрался?
timur-tion@timur-ibm:~/Proj/u-boot1.3.3/u-boot-1.3.3$ find . | grep mkimage
./tools/mkimage.c
./tools/mkimage.h
./tools/mkimage.o
./tools/mkimage
|
есть он там...
|
|
Чтобы собрать uImage нужно зайти в каталог, где у нас ядро и набрать make uImage:
timur-tion@timur-ibm:~/Proj/linux/linux-2.6.22$ make uImage
|
На это нам будет выдано:
...........................
CHK include/linux/compile.h
MODPOST vmlinux
Kernel: arch/arm/boot/Image is ready
Kernel: arch/arm/boot/zImage is ready
UIMAGE arch/arm/boot/uImage
"mkimage" command not found - U-Boot images will not be built
Image arch/arm/boot/uImage is ready
|
На самом деле uImage не готов (хотя и было написано, что arch/arm/boot/uImage is ready), нужно в PATH добавить путь к mkimage:
timur-tion@timur-ibm:~/Proj/linux/linux-2.6.22$ export PATH=$PATH:/home/timur-tion/Proj
/u-boot1.3.3/u-boot-1.3.3/tools/
|
Теперь получилось:
timur-tion@timur-ibm:~/Proj/linux/linux-2.6.22$ make uImage
...................................................
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 1483212 Bytes = 1448.45 kB = 1.41 MB
Load Address: a0008000
Entry Point: a0008000
Image arch/arm/boot/uImage is ready
|
|