главная->Тион-Про-270->Сборка ядра 
    

Построение ядра 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
#

Теперь делаем
make menuconfig

что-то меняем если надо, но я ничего не менял, нажимаем кнопку exit,
делаем:
make 

результатом сборки становится образ 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



Используются технологии uCoz