移植linux3.4.2到jz2440上出现的问题和构建文件系统出现的问题(uboot没有移植,使用时uboot1.1.6)的汇总

一安装交叉编译器arm-linux-gcc-4.3.2.tar.bz2

1先查看交叉编译器arm-linux-gcc  -v

  不同的编译器编译不同的内核

2查看环境变量echo  $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/work/tools/gcc-3.4.5-glibc-2.3.6/bin

3安装交叉编译器arm-linux-gcc-4.3.2.tar.bz2

步骤:先把安装包arm-linux-gcc-4.3.2.tar.bz2 放到/work/tools/ 

           cd /work/tools/

           sudo tar xjf arm-linux-gcc-4.3.2.tar.bz2 -C /(-C指的路径)

           sudo vi /etc/environment   //编辑环境变量文件,加入编译器的bin目录路径 /usr/local/arm/4.3.2/bin

           进入Vi编辑器,按i进入插入模式,添加 /usr/local/arm/4.3.2/bin(把原来最后的安装编译器的路径去掉),   按wq退出

           source    /etc/environment   //使文件生效

           echo $PATH  //查看此时环境变量的显示(如下图就正确)

           /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/arm/4.3.2/bin

     安装完成可以的写一个代码进行编译看是否成功

二移植linux-3.4.2的内核

     把下载的内核linux-3.4.2压缩包放到的/work/system

     tar  xjf   linux-3.4.2.tar.bz2

     cd   /work/system/linux-3.4.2

     修改顶层的Makefile 

     ARCH            ?= arm
     CROSS_COMPILE   ?= arm-linux-

     make  s3c2410_defconfig//进行编译生成.config (不用修改机器ID)

     make  uImage  

     把生成的ulmage 下载到开发板上

   解决内核烧到开发板上出现效验失败问题 Verifying Checksum … Bad Data CRC问题

   原因:烧进开发板的内核(2.3M)大于内核分区(2M),部分代码丢失,校验失败(像id和其他的基本都不用改,可能韦东山老师已经改过)

   方法是进行分区减少代码量

    cd   /work/system/linux-3.4.2

    make menuconfig //对内核进行裁剪

   System Type->
          SAMSUNG S3C24XX SoCs Support->

            [ ] SAMSUNG S3C2410
            [ ] SAMSUNG S3C2412
            [ ] SAMSUNG S3C2416/S3C2450
            [ ] SAMSUNG S3 C2442
            [ ] SAMSUNG S3C2443
            [ ] Simtec Electronics ANUBIS
            [ ] Avantech AT2440EVB development board
            [ ] NexVision NEXCODER 2440 Light Board
            [ ] Simtec IM2440D20 (OSIRIS) module
            [ ] HP iPAQ rx3715

    File systems  --->
        < > Second extended fs support
        < > Ext3 journalling file system suppor
t
        CD-ROM/DVD Filesystems  --->
            < > ISO 9660 CDROM file system support
        DOS/FAT/NT Filesystems  --->
            < > MSDOS fs support
            < > VFAT (Windows-95) fs support

        [*] Miscellaneous filesystems  --->   
            < >   Compressed ROM file system support (cramfs)  
            [ ]     Include support for ZLIB compressed file systems
            < >   ROM file system support     

    Device Drivers  --->
        SCSI device support  --->

            < > SCSI device support
        Input device support  --->     
            [ ]   Provide legacy /dev/psaux device
            [ ]   Mice  --->    
            [ ]   Keyboards  --->   
            [ ]   Joysticks/Gamepads  --->

            [*]   Touchscreens  --->
                <*>   Samsung S3C2410/generic touchscreen input driver
                < >   USB Touchscreen Driver

        <*> Sound card support  --->
            <*>   Advanced Linux Sound Architecture  --->
                [ ]   USB sound devices  --->
        Multifunction device drivers  --->
            < > Support for Silicon Motion SM501
            < > Support for NXP PCF50633

        [*] USB support  --->
            [ ]    USB device filesystem (DEPRECATED)
            [ ]   The shared table of common (or usual) storage devices
            < >   USB Serial Converter support  --->

  make  uImage  //ulmage1.9M

   内核出现乱码    

       我的乱码是的|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||类似这样的

      解决内核乱码方法     (记的打补丁)

                                                1 先把ulmage下载到开发板上

                                                2 进入uboot菜单界面,使用命令q进入设置区

                                                3 set bootargs console=ttySAC0,115200 root=/dev/nfs

                                                4 save进行保存

                                                5 boot进行启动

       构建根文件系统,只有匹配相应的文件系统才能运行

    移植Busybox-1.7.0

       cd /work/system            

       tar -xjf busybox-1.7.0.tar.bz2

       解压后,cd busybox-1.7.0 进入busybox-1.7.0目录

       在顶层Makefile中  修改   CROSS_COMPILE   ?= arm-linux-

        make menuconfig 进行编译

      在Library Tuning(库调整)子菜单中设置按tab键补齐,如下图:

 

       取消静态连接,如下图:

 

      选择tar命令:

 

选择insmod/rmod/lsmod命令,支持2.6.x内核:

 

支持mdev(并支持medv.conf和热拔插),选择mount/umount命令(并支持NFS文件系统)

 

选择ifconfig命令

 

make                        //编译busybox可执行文件

会出现错误

cd  /usr/local/arm/4.3.2/.../arm-none-linux-gnueabi/libc/usr/include/linux
sudo sudo   netfilter.h
添加的 #include <netinet/in.h>

就可以成功编译Busybox1.7.0

cd     /work/nfs_root    

 

mkdir  fs_mini_mdev_new

make CONFIG_PREFIX= /work/nfs_root/fs_mini_mdev_new   install  //安装到指定目录下

安装的  glibc库  

cd   /work/system/busybox1.7.0

echo  $PATH  //查看一下环境变量

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/arm/4.3.2/bin

cd    /usr/local/arm/4.3.2

find  -name  lib//查看库看到如下这两个库是需要复制的

./arm-none-linux-gnueabi/libc/armv4t/lib
./arm-none-linux-gnueabi/libc/armv4t/usr/lib

cd   /work/nfs_root/ fs_mini_mdev_new

mkdir     lib//在  /work/nfs_root/ fs_mini_mdev_new下创建目录lib

cd  /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib    //进入此目录

cp  *.so*    /work/nfs_root/ fs_mini_mdev_new/lib   -d   //复制lib目录下的*.so*到  /work/nfs_root/ fs_mini_mdev_new/lib目录下

cd    /work/nfs_root/ fs_mini_mdev_new    

mkdir     -p  usr/lib    //同时创建dev和lib两个目录

cd  /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib     //进入此目录

cp  *.so*    /work/nfs_root/ fs_mini_mdev_new/usr/lib     -d      //进行复制

cd   /work/nfs_root   

cp   fs_mini_mdev/etc      fs_mini_mdev_new   -rf  //减少过程的配置在复制文件的基础上进行删除和增减修改

cd    /work/nfs_root/ fs_mini_mdev_new

sudo  vi   /etc/init.d

修改s3c2410_serial10::askfirst:-/bin/sh为console::askfirst:-/bin/sh   //对应从内核传入的参数

cd     /work/nfs_root/ fs_mini_mdev_new

mdkir  dev   //创建设备目录、

cd  dev

sudo mknod –m 660  console c 5 1    //创建console字符设备,设置权限用户和组都能读写

sudo mknod –m 660 null c 1 3    //创建null 字符设备, 设置权限用户和组都能读写

cd   /work/nfs_root/ fs_mini_mdev_new  返回到fs_mini_mdev_new 

mkdir  proc  mnt  tmp  sys  root  //创建其他目录

cd     /work/nfs_root   //准备开始制作的文件系统

mkfs.jffs2  -n -s  2048 -e  128KiB  -d  fs_mini_mdev_new  -o  fs_mini_mdev_new.jffs2

把它下载到开发板上出现此情况

 

Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000004. 编译busybox 和 kernel 的工具链的体系结构不一样

文件的解决办法是:使内核具有的相同的EABI

cd    /work/system/linux-3.4.2

make menucofig 

make  uImage

然后下载开发板上

然后进入uboot的菜单中

使用命令q进入设置参数中

nand erase.part rootfs
set bootargs console=ttySAC0,115200 root=/dev/mtdblock3 rootfstype=jffs2

就ok了

 

 

 

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值