定制最简linux和根文件系统(平台龙芯1B开发板)共13页word资料

更新时间:2023-05-03 03:28:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

版本历史

版本时间备注

V1.0 2013-08-28 创建

1. 前言 (2)

1.1. 开发板版本号 (2)

1.2. 工具链版本号 (2)

1.3. 参考文档及其版本号 (3)

1.4. 目标 (3)

2. 搭建开发环境 (3)

3. 制作根文件系统 (3)

3.1. 配置 (3)

3.1.1. 拷贝源码,并解压 (3)

3.1.2. 配置选项简述 (4)

3.2. 编译 (4)

3.3. 构建根文件系统 (5)

3.3.1. 建立系统根目录 (5)

3.3.2. 建立设备文件 (5)

3.3.3. 建立系统配置文件 (5)

4. 编译linux (7)

4.1. 配置 (8)

4.1.1. 首先拷贝源码,并解压 (8)

4.1.2. 不安装Ncurses (8)

4.1.3. 没有拷贝.config (8)

4.1.4. 不用修改Makefile (8)

4.1.5. 配置选项简述 (9)

4.2. 编译 (10)

5. 启动运行linux (11)

5.1. 拷贝vmlinux到tftp服务器目录下 (11)

5.2. 设置PMON的ip地址 (11)

5.3. 下载内核 (12)

5.4. 启动linux (12)

第 1 页

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上的绿色软件一样,仅此而已,这比安装vs2019快多了,方便多了”。

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

1.1. 开发板版本号

LS1B DEMO BOARD Schematic Revision 2.0即版本为2.0

1.2. 工具链版本号

版本为gcc-3.4.6-2f.tar.gz

第 2 页

1.3. 参考文档及其版本号

《1B开发板用户手册》V1.2

1.4. 目标

参考《1B开发板用户手册》创建一个最简化的linux和根文件系统。同时不破坏开发板预装的linux等,并将这个过程记录下来,仅供参考。

这里在明确一下本次任务的详细内容

?PMON不变(不要动PMON,包括PMON环境变量,除了ip地址外)

?LINUX内核配置尽量简单(驱动方面,除了串口外,其它的网口,声卡,触屏都不要

选上),linux内核也仅仅下载到内存,不要写到flash

?根文件系统尽量简单(根文件系统就直接从busybox编译后得到,暂时不移植什么应

用),同时这里也选择RAMDISK文件系统,不要写到flash

2.搭建开发环境

安装虚拟机和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]# ls

1b-linux-3.0-d8b47bb 1b-linux-3.0-d8b47bb.tar.gz busybox-1.19.2-default.tar.gz

[root@localhost test]# tar -zxf busybox-1.19.2-default.tar.gz

[root@localhost test]# ls

1b-linux-3.0-d8b47bb busybox-1.19.2-default

1b-linux-3.0-d8b47bb.tar.gz busybox-1.19.2-default.tar.gz

第 3 页

[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 prompts

Init 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

[ ] ubiupdatevol

3.2. 编译

执行make

[root@localhost busybox-1.19.2-default]# make

执行完后,如下

然后执行make install

[root@localhost busybox-1.19.2-default]# make install

已经把需要的东西放到当前目录的_install下

然后在这基础上制作根文件系统

第 4 页

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]# ls

dev 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]#

第 5 页

3.3.3.2. 新建etc/rc.d/rc.sysinit文件

[root@localhost LS1B]# vim etc/rc.d/rc.sysinit

#!/bin/sh

#Set binary path

export PA TH=/bin:/sbin:/usr/bin:/usr/sbin

#Config dev environment

mount -t tmpfs -o size=64k,mode=0755 tmpfs /dev

mkdir -p /dev/pts

mount -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/fstab

echo "#mount all......"

/bin/mount -a

echo "#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/fstab

sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 tmpfs /tmp tmpfs defaults 0 0 tmpfs /mnt tmpfs defaults 0 0 tmpfs /root tmpfs defaults 0 0 tmpfs /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 shells echo "Processing /etc/profile..."

第 6 页

#Set search library path

export LD_LIBRARY_PA TH=/lib:/usr/lib

#Set user path

export PA TH=/bin:/sbin:/usr/bin:/usr/sbin

#Set PS1

USER="'id -un'"

LOGNAME=$USER

PS1='[\u@\h:\w]\$'

PATH=$PATH

alias 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/LS1B

dev 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/LS1B

bin dev etc home lib linuxrc mnt proc root sbin sys tmp usr var

至此根文件系统制作完成!

4.编译linux

在强调一下,我使用的是red hat,直接root登录,手册《1B开发板用户手册》使用的是Ubuntu。您可能又不一样,这个自己随机应变。

还有手册《1B开发板用户手册》用的是linux-2.6.21,而我用的是开发板光盘中的linux 3.0。这个同样根据自己情况随机应变。

第 7 页

本文来源:https://www.bwwdw.com/article/1yne.html

Top