当前位置:文档之家› 定制最简linux和根文件系统(平台龙芯1B开发板)

定制最简linux和根文件系统(平台龙芯1B开发板)

定制最简linux和根文件系统(平台龙芯1B开发板)版本历史1. 前言 (5)1.1. 开发板版本号 (7)1.2. 工具链版本号 (8)1.3. 参考文档及其版本号 (8)1.4. 目标 (9)2. 搭建开发环境 (9)3. 制作根文件系统 (11)3.1. 配置 (11)3.1.1. 拷贝源码,并解压 (11)3.1.2. 配置选项简述 (12)3.2. 编译 (13)3.3. 构建根文件系统 (15)3.3.1. 建立系统根目录 (15)3.3.2. 建立设备文件 (16)3.3.3. 建立系统配置文件 (16)4. 编译linux (22)4.1. 配置 (23)4.1.1. 首先拷贝源码,并解压 (23)4.1.2. 不安装Ncurses (24)4.1.3. 没有拷贝.config (24)4.1.4. 不用修改Makefile (25)4.1.5. 配置选项简述 (26)4.2. 编译 (30)5. 启动运行linux (31)5.1. 拷贝vmlinux到tftp服务器目录下 . 315.2. 设置PMON的ip地址 (31)5.3. 下载内核 (32)5.4. 启动linux (33)1.前言很高心拿到了龙芯1B开发板。

然后仔细的看了开发板光盘里的《1B开发板用户手册.pdf》。

里面写得非常详细,并且都附有截图,很明了。

从最开始装虚拟机到编译linux,制作根文件系统等等,连虚拟机软件和Ubuntu系统镜像都有。

可以说这套开发板考虑得非常周到。

然后我就参照《1B开发板用户手册.pdf》编译了linux,制作了根文件系统,最后终于跑起来,进入了shell。

这里谈谈我的感想用户手册更像一个工具书就拿根文件系统来说吧。

Cramfs,Jffs2,Yaffs2的制作步骤都有,这表示该手册很全面,但是如果是一个初学者的话,给的选择太多不一定是好事。

这也是我想写这篇文档的原因。

我想linux 的配置尽量简单(除了串口驱动以外,其它的比如,网卡,声卡,触屏等都暂时不需要),根文件系统也尽量简单(手册中的已经很简单了,后面我们就参照手册),另外为了再简单一点我把根文件系统也选择内存文件系统,内核只下载到内存而不烧写到flash,同时PMON参数也不修改。

这样做有个好处——任何时候我可以复位进入开发板预装的linux和文件系统。

这便于在我们遇到问题时参考。

●制作根文件系统的章节还有点小小的问题需要改进⏹手册中的笔误Busybox配置过程中ionice错写为inoice⏹没有新建目录/root和/var/log⏹没有新建console和串口设备节点ttyS2另外,说点题外话,回想以前读大学时,非常想学习嵌入式,但是感觉非常困难。

现在看来,当时感觉困难的原因是入门太难了。

为什么入门难,弄了很久连环境都没打起来,更别说编译linux,制作根文件系统了。

在这里我想说“朋友们,搭建环境只需要把开发板的工具链解压到指定目录就可以了。

就相当于windows上的绿色软件一样,仅此而已,这比安装vs2005快多了,方便多了”。

既然开发环境搭建起来了,后面就是配置编译linux,制作根文件系统了(先不要管PMON了,就像电脑一样,很少有人换bios,最多重装系统)。

这也就是本篇文章的任务。

1.1. 开发板版本号LS1B DEMO BOARD Schematic Revision 2.0即版本为2.01.2. 工具链版本号版本为gcc-3.4.6-2f.tar.gz1.3. 参考文档及其版本号《1B开发板用户手册》V1.21.4. 目标参考《1B开发板用户手册》创建一个最简化的linux和根文件系统。

同时不破坏开发板预装的linux等,并将这个过程记录下来,仅供参考。

这里在明确一下本次任务的详细内容⏹PMON不变(不要动PMON,包括PMON环境变量,除了ip地址外)⏹LINUX内核配置尽量简单(驱动方面,除了串口外,其它的网口,声卡,触屏都不要选上),linux内核也仅仅下载到内存,不要写到flash⏹根文件系统尽量简单(根文件系统就直接从busybox编译后得到,暂时不移植什么应用),同时这里也选择RAMDISK文件系统,不要写到flash2.搭建开发环境安装虚拟机和Ubuntu网上有很多,当然手册中也讲得很详细,这个就自己解决。

假设您已经装好了。

另外我用的是red hat 企业版5(手册中用的是Ubuntu),并且直接登录root账户,避免了什么权限的麻烦。

安装工具链手册中已经讲得非常好了,这里直接截图。

3.制作根文件系统3.1. 配置3.1.1.拷贝源码,并解压[root@localhost test]# cp ../LS1B/busybox-1.19.2-default.tar.gz ./l[root@localhost test]# ls1b-linux-3.0-d8b47bb1b-linux-3.0-d8b47bb.tar.gzbusybox-1.19.2-default.tar.gz[root@localhost test]# tar -zxf busybox-1.19.2-default.tar.gz[root@localhost test]# ls1b-linux-3.0-d8b47bbbusybox-1.19.2-default1b-linux-3.0-d8b47bb.tar.gzbusybox-1.19.2-default.tar.gz[root@localhost test]# cd busybox-1.19.2-default [root@localhost busybox-1.19.2-default]#和linux内核一样,通过执行make menuconfig 来配置,输入后回车如下图所示3.1.2.配置选项简述Busybox Settings --->Build Options --->[*] Build BusyBox as a static binary (no shared libs)(/opt/GCC/gcc-3.4.6-2f/bin/mipsel-linux-) Cross Compiler prefix (交叉编译器的绝对路径前缀,根据自己情况修改)Busybox Library Tuning --->[*] vi-style line editing commands[*] Fancy shell promptsInit Utilities --->[*] init[*] Support reading an inittab file[*] Run commands with leading dash with controlling tty[*] Support running init from within an initrd (not initramfs)Miscellaneous Utilities --->[ ] ionice[ ] ubiattach[ ] ubidetach[ ] ubimkvol[ ] ubirmvol[ ] ubirsvol[ ] ubiupdatevol3.2. 编译执行make[root@localhost busybox-1.19.2-default]# make 执行完后,如下然后执行make install[root@localhost busybox-1.19.2-default]# make install已经把需要的东西放到当前目录的_install下然后在这基础上制作根文件系统3.3. 构建根文件系统3.3.1.建立系统根目录[root@localhost nfsramdisk]# mkdir LS1B [root@localhost nfsramdisk]# cd LS1B[root@localhost LS1B]# ls[root@localhost LS1B]# mkdir dev home proc tmp var etc lib mnt sys usr etc/rc.d root var/log [root@localhost LS1B]# lsdev etc home lib mnt proc root sys tmp usr var[root@localhost LS1B]#3.3.2.建立设备文件建立console和串口设备文件[root@localhost LS1B]# mknod -m 600 dev/console c 5 1[root@localhost LS1B]# mknod -m 600 dev/ttyS2 c 4 66[root@localhost LS1B]#3.3.3.建立系统配置文件注意:以下的配置文件不是在开发主机的根目录下创建的。

3.3.3.1. 添加etc/inittab文件[root@localhost LS1B]# vim etc/inittab::sysinit:/etc/rc.d/rc.sysinit// 指定系统启动后首先执行的文件#Example of how to put a getty on a serial line(rot a terminal)ttyS2::respawn:~/bin/sh #no login(启动后进入shell)#::respawn:/sbin/getty -L ttyS2 115200 vt100#use login#tty::respawn:~/bin/sh#Stuff to do when restarting the init process ::restart:/sbin/init#Stuff to do before rebooting::ctrlaltdel:/sbin/reboot // 捕捉ctrl+alt+del键,重启文件系统::shutdown:/bin/umount -a -r // 当关机时卸载所有文件系统::shutdown:/sbin/swapoff -a~~"etc/inittab" [新] 14L, 553C 已写入[root@localhost LS1B]#3.3.3.2. 新建etc/rc.d/rc.sysinit文件[root@localhost LS1B]# vim etc/rc.d/rc.sysinit#!/bin/sh#Set binary pathexport PATH=/bin:/sbin:/usr/bin:/usr/sbin#Config dev environmentmount -t tmpfs -o size=64k,mode=0755 tmpfs /devmkdir -p /dev/ptsmount -t devpts devpts /dev/pts#mknod -m 600 /dev/console c 5 1#mknod -m 600 /dev/ttyS2 c 4 66#mount all filesystem defined in /etc/fstabecho "#mount all......"/bin/mount -aecho "#Starting mdev......"echo /sbin/mdev>/proc/sys/kernel/hotplug/sbin/mdev -s#Set hostname/bin/hostname "Loongson-gz"export LOGNAME=root"etc/rc.d/rc.sysinit" [新] 24L, 489C 已写入[root@localhost LS1B]#3.3.3.3. 新建etc/fstab文件[root@localhost LS1B]# vim etc/fstabsysfs /sys sysfs defaults 0 0proc /proc proc defaults 0 0tmpfs /tmp tmpfs defaults 0 0tmpfs /mnt tmpfs defaults 0 0tmpfs /root tmpfs defaults 0 0tmpfs /var/log tmpfs defaults 0 0~"etc/fstab" [新] 7L, 213C 已写入[root@localhost LS1B]#3.3.3.4. 新建etc/profile文件[root@localhost LS1B]# vim etc/profile#!/bin/sh#/etc/profile:system-wide .profile file for the Bourne shellsecho "Processing /etc/profile..."#Set search library pathexport LD_LIBRARY_PATH=/lib:/usr/lib#Set user pathexport PATH=/bin:/sbin:/usr/bin:/usr/sbin#Set PS1USER="'id -un'"LOGNAME=$USERPS1='[\u@\h:\w]\$'PATH=$PATHalias ll="ls -l"echo "Done!""etc/profile" 20L, 330C 已写入[root@localhost LS1B]#3.3.3.5. 修改系统配置文件权限[root@localhost LS1B]# chmod 755 etc/*[root@localhost LS1B]# chmod 755 etc/rc.d/rc.sysinit[root@localhost LS1B]#3.3.3.6. 拷贝Busybox文件[root@localhost ~]# cd /home/dev/test/busybox-1.19.2-default[root@localhost busybox-1.19.2-default]# ls /nfsramdisk/LS1Bdev etc home lib mnt proc root sys tmp usr var[root@localhost busybox-1.19.2-default]# cp -rf _install/* /nfsramdisk/LS1B[root@localhost busybox-1.19.2-default]# ls /nfsramdisk/LS1Bbin dev etc home lib linuxrc mnt proc root sbin sys tmp usr var至此根文件系统制作完成!4.编译linux在强调一下,我使用的是red hat,直接root 登录,手册《1B开发板用户手册》使用的是Ubuntu。

相关主题