创建网站的app,梅州网站设计,现在网站用什么软件做,青岛网站建设商家一. 内核启动流程#xff0c;据此配置内核(机器ID) 1. 获取内核源码 www.kernel.org https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.4.2.tar.bz2 2. 解压内核 # tar xjvf linux-3.4.2.tar.bz2 3. 修改顶层Makefile#xff0c;指定交叉编译器 ARCH ? arm CRO…一. 内核启动流程据此配置内核(机器ID) 1. 获取内核源码 www.kernel.org https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.4.2.tar.bz2 2. 解压内核 # tar xjvf linux-3.4.2.tar.bz2 3. 修改顶层Makefile指定交叉编译器 ARCH ? arm CROSS_COMPILE ? arm-linux- 4. 使用默认配置编译内核可使用如下命令查看内核有哪些默认配置 # find -name “*defconfig” 使用缺省内核配置文件,s3c2410_defconfig 是SMDK2410 的缺省配置文件 # make s3c2410_defconfig 编译、测试 # make uImage 拷贝uImage到tftpboot目录 # cp arch/arm/boot/uImage /work/tftpboot/uImage_3.4.2 下载、启动内核 # tftp 32000000 uImage_3.4.2 # bootm 32000000 结果启动后会产生乱码原因是bootargs参数并未指定串口波特率修改bootargs如下即可正常启动看到输出 # set bootargs consolettySAC0,115200 root/dev/mtdblock3 5. 修改晶振频率 # vim arch/arm/mach-s3c24xx/mach-smdk2440.c –s3c24xx_init_clocks(16934400); s3c24xx_init_clocks(12000000); 编译、测试 # make s3c2410_defconfig //支持内核较多 # make uImage # set machid 16a //SMDK2440的机器ID# set bootargs consolettySAC0,115200 root/dev/mtdblock3# tftp 32000000 uImage_3.4.2# bootm 32000000
可正常输出内核启动信息说明串口工作正常二. 修改分区, 制作新的文件系统 2.1 修改分区和我修改后的u-boot-2012.04.01一致参考友善之臂文档《Mini2440 Linux移植开发实战指南.pdf》 0x00000000-0x00060000 : “bootloader” 0x00060000-0x00080000 : “params” 0x00050000-0x00580000 : “kernel” 0x00580000- : “root” # vim arch/arm/mach-s3c24xx/common-smdk.c 点击(此处)折叠或打开 static struct mtd_partition smdk_default_nand_part[] { [0] { .name “bootloader”, .size SZ_256K SZ_128K, .offset 0, }, [1] { .name “params”, .offset SZ_256K SZ_128K, .size SZ_128K, }, [2] { .name “kernel”, .offset SZ_512K, .size 0x00500000, }, [3] { .name “root”, .offset SZ_512K 0x00500000, .size MTDPART_SIZ_FULL, }, }; 编译、测试 # make uImage # cp arch/arm/boot/uImage /work/tftpboot/uImage_3.4.2 # setenv bootcmd tftp 32000000 uImage_3.4.2;bootm 32000000# boot
可看到打印出如下分区信息点击(此处)折叠或打开 List of all partitions: 1f00 384 mtdblock0 (driver?) 1f01 128 mtdblock1 (driver?) 1f02 5120 mtdblock2 (driver?) 1f03 1042944 mtdblock3 (driver?) 烧写文件系统、测试fs_mini_mdev.yaffs2该文件系统来自韦东山老师的教程# tftp 32000000 fs_mini_mdev.yaffs2# nand erase.part root# nand write.yaffs 32000000 0x580000 $filesize测试# set bootargs consolettySAC0,115200 root/dev/mtdblock3# setenv bootcmd tftp 32000000 uImage_3.4.2;bootm 32000000# boot结果No filesystem could mount root, tried: ext3 ext2 cramfs vfat msdos iso9660 romfs测试jffs2 # tftp 32000000 fs_mini_mdev.jffs2# nand erase.part root# nand write.jffs2 32000000 580000 $filesize# set bootargs consolettySAC0,115200 root/dev/mtdblock3 rootfstypejffs2# boot不能使用2.2 制作根文件系统 ① 编译安装busybox编译 busybox-1.20.0.tar.bz2# tar xjvf busybox-1.20.0.tar.bz2# cd busybox-1.20.0# make menuconfigBusybox Settings --- Build Options --- () Cross Compiler prefix 填入arm-linux- 保存、退出执行make# make创建文件系统目录# cd /work/nfsroot# mkdir fs_mini_mdev_new安装# make install CONFIG_PREFIX/work/nfsroot/fs_mini_mdev_new② 安装libc库使用arm-linux-gcc 4.3.2 中的库文件# cd /work/nfsroot/fs_mini_mdev_new# mkdir lib# cd lib# cp /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib/*so* ./ -d # cd ../# mkdir usr/lib -p# cd usr/lib# cp /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib/*so* ./ -d③ 构建etc目录 # cp -rf ../fs_mini_mdev/etc ./修改inttab# vim inittab将s3c2410_serial0改为console④ 构建dev目录 # mkdir dev# cd dev# mknod console c 5 1 # mknod null c 1 3⑤ 创建其他目录# mkdir proc tmp mnt sys root⑥ 制作jffs2根文件系统参考《嵌入式Linux应用开发完全手册》# mkfs.jffs2 -n -s 2048 -e 128KiB -d fs_mini_mdev_new -o fs_mini_mdev_new.jffs2 ⑦ 烧写测试# cp fs_mini_mdev_new.jffs2 /work/tftpboot# tftp 32000000 fs_mini_mdev_new.jffs2# nand erase.part root# nand write.jffs2 32000000 580000 $filesize# set bootargs consolettySAC0,115200 root/dev/mtdblock3 rootfstypejffs2# boot⑧ 结果Kernel panic - not syncing: Attempted to kill init! exitcode0x00000004出错、退出解决方法
配置内核# make menuconfigKernel Features --- [*] Use the ARM EABI to compile the kernel //选中该项# make uImage# cp arch/arm/boot/uImage /work/tftpboot/uImage_3.4.2_eabi测试# tftp 32000000 uImage_3.4.2_eabi# bootm 32000000
可正常启动Please press Enter to activate this console. / # 三. 移植YAFFS文件系统 获取yaffs2源码 # git clone git://www.aleph1.co.uk/yaffs2 给内核打yaffs2补丁参考readme # cd yaffs2 # ./patch-ker.sh c m /work/kernel/linux-3.4.2 配置内核使其支持yaffs2文件系统 # make menuconfig File systems — [*]Miscellaneous filesystems — * yaffs2 file system support # make uImage
制作yaffs2根文件系统 # mkyaffs2image fs_mini_mdev_new fs_mini_mdev_new.yaffs2# mv fs_mini_mdev_new.yaffs2 /work/tftpboot/# cp arch/arm/boot/uImage /work/tftpboot/uImage_3.4.2_yaffs2
烧写Yaffs2文件系统# tftp 32000000 fs_mini_mdev_new.yaffs2# nand erase.part root //擦除root分区# nand write.yaffs 32000000 580000 $filesize //亲测用nand write.jffs2会出错找不到init进程启动内核# tftp 32000000 uImage_3.4.2_yaffs2# set bootargs consolettySAC0,115200 root/dev/mtdblock3# bootm 32000000 可修改bootcmd参数便捷启动 # setenv bootcmd ‘tftp 32000000 uImage_3.4.2_yaffs2;bootm 32000000’
四. 裁剪内核 查看现在内核大小 # ls arch/arm/boot/uImage -l -rw-r–r– 1 root root 2486104 Dec 30 22:41 arch/arm/boot/uImage # make menuconfig //去掉不需要的项 a. 去掉不需要支持的单板 System Type — SAMSUNG S3C24XX SoCs Support — * S3C24XX SoCs * [ ] SAMSUNG S3C2410 [ ] SAMSUNG S3C2412 [ ] SAMSUNG S3C2416/S3C2450 [*] SAMSUNG S3C2440 [ ] SAMSUNG S3C2442 [ ] SAMSUNG S3C2443 * S3C2440 Boards * [ ] Simtec Electronics ANUBIS [ ] Avantech AT2440EVB development board [*] MINI2440 development board [ ] NexVision NEXCODER 2440 Light Board [ ] Simtec IM2440D20 (OSIRIS) module [ ] HP iPAQ rx3715 [*] SMDK2440 [*] SMDK2440 with S3C2440 CPU module
b. 裁剪对文件系统的支持File systems --- Second extended fs support //去掉对ext2的支持 Ext3 journalling file system support //去掉对ext3的支持DOS/FAT/NT Filesystems --- //不作修改对U盘的支持需要
c. 裁剪对驱动的支持Device Drivers --- Input device support --- [ ] Provide legacy /dev/psaux device //delete[ ] Mice --- //delete[ ] Keyboards --- //deleted.继续裁剪File systems --- CD-ROM/DVD Filesystems --- ISO 9660 CDROM file system support //去掉对光盘的支持[*] Miscellaneous filesystems --- Compressed ROM file system support (cramfs) //delete[ ] Include support for ZLIB compressed file systems //delete ROM file system support //deleteDevice Drivers ---Input device support --- [*] Touchscreens ---* Samsung S3C2410/generic touchscreen input driver //配置上该项 USB Touchscreen Driver //deleteDevice Drivers ---* Sound card support --- * Advanced Linux Sound Architecture --- [ ] USB sound devices --- //deleteDevice Drivers ---[*] USB support ---[ ] The shared table of common (or usual) storage devices //delete保存、退出编译内核# make uImage# cp arch/arm/boot/uImage /work/tftpboot/uImage_3.4.2_sm
烧写内核# tftp 30000000 uImage_3.4.2_sm# nand erase.part kernel; nand write 30000000 kernel
启动内核# set bootcmd nand read 30000000 kernel;bootm 30000000# set bootargs consolettySAC0,115200 root/dev/mtdblock3# set machid 16a# save# boot原文地址