内核以及文件系统制作,搭建板子上linux开发环境,挂载文件系统,通过虚拟机操作板子上的文件。

本文以是三星tiny4412芯片为例,操作系统为Linux。

通过串口连接开发板请看我上一篇播客,此时开发板是没有Linux内核的,本篇文章将说明内核移植以及文件系统挂载。

uboot使用,uboot常见指令。MobaXterm的安装和使用,通过串口连接虚拟机和开发板。_东城南陌的博客-CSDN博客uboot,MobaXterm介绍。uboot使用,uboot常见指令。MobaXterm的安装和使用,通过串口连接虚拟机和开发板。https://blog.csdn.net/weixin_50796066/article/details/131410676?spm=1001.2014.3001.5501

 相关资料放在资源中,需要可以下载https://download.csdn.net/download/weixin_50796066/87953585?spm=1001.2014.3001.5503https://download.csdn.net/download/weixin_50796066/87953585?spm=1001.2014.3001.5503

一、内核 

1.概念

这里的内核指的就是linux的操作系统,操作系统是管理计算机软件和硬件的计算机的程序,这是一个大型的复杂的计算机程序,操作系统是由内核+文件系统组成的。

操作系统是一个管理者:

        管理文件

        管理设备

        管理网络

        管理进程

        管理内存

2.linux内核的文件夹

arch 架构相关的文件夹

        存放的都是架构初始化相关的代码  

        初始化所需要的头文件

        \linux-3.5-20141114\linux-3.5\arch\arm\mach-exynos 

Documentation:说明文档

drivers:驱动相关的源代码

include:标准的头文件

net   :网络相关的文件

sound:声卡相关的

Makefile :管理整个工程的makefile文件

如下三个文件比较重要:

tiny4412_android_defconfig   当编译安卓的内核使用的配置文件

tiny4412_linux_defconfig     当编译linux内核使用的配置文件   

tiny4412_ubuntu_defconfig   ubuntu的配置文件

        这三个配置文件,是友善之臂提供的配置好的文件,假如我们自己要想配置内核,这个工作量很大。自己配置的时候,我们需要借助于make menuconfig 界面,要想能够进入menuconfig  必须安装一个库。

sudo apt-get install libncurses5-dev

        在make menuconfig配置完成之后  会将配置文件放入到.config。文件里makefile就会根据.config 来编译内核。

要想使用友善之臂提供的配置文件

cp  tiny4412_linux_defconfig  ./.config

3.linux内核的配置和编译

1.拷贝配置文件  替代原有的配置

cp tiny4412_linux_defconfig ./.confi

2.去掉内核的保护机制

在linux内核的根目录  执行  make menuconfig

通过上下键选择  system type,按回车进入,按空格键将如图所示的选项前边的*变成  空格

 3.修改配置文件

在linux内核的根目录执行

gedit kernel/timeconst.pl   打开配置文件

在373行有一句

if (!defined(@val)) { 改成 if (! (@val)) {

保存退出。

4.执行编译的命令

编译

make  &&  make zImage

5.当出现如下两句话则表示内核已经编译完成了

Kernel: arch/arm/boot/Image is ready

Kernel: arch/arm/boot/zImage is ready

编译完成的内核位置为

linux-3.5/arch/arm/boot

6.烧录中断向量表

将sd卡插入到电脑上  并且让虚拟机识别。

sudo dd iflag=dsync oflag=dsync if=/uboot_tiny4412-sdk1506/sd_fuse/tiny4412/E4412_tzsw.bin of=/dev/sdb seek=705

7.烧录内核

 sudo dd iflag=dsync  oflag=dsync if=./zImage of=/dev/sdb seek=1057

 8.将sd卡插回到开发板上,上电。

        在mobx出现如下界面则表示内核烧录成功 。

二、文件系统

制作文件系统一般是先制作三个文件夹bin、sbin、usr,制作这三个文件必须使用busybox。

1.文件系统制作

1.将busybox压缩包拷贝到虚拟机

2.解压压缩包

tar xvf busybox-1.21.1.tar.bz2

3.进入到解压后busybox目录busybox-1.21.1

4.在busybox的根目录执行

make menuconfig

5.设置共享库

依次进入如下图所示

6.指定交叉编译工具

 没有交叉编译工具可以自行下载,以后会出一篇交叉编译的博库(如果有时间的话,我把编译工具放本篇开头的资料里,需要的可以自取)

7.设置文件系统的安装的位置。

 此路径不唯一,这个文件夹在挂载成功以后更新的数据会实时同步到开发板上。

8.添加模块化命令

 

 9.保存退出

10.编译并安装

make  && make install

11.编译安装完成之后  会在指定的位置生成一个文件夹

12.进入到生成的文件夹里

13.拷贝文件系统所用到的库

cp /opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/lib/ ./ -rap

 14.补全目录

mkdir dev etc/init.d home proc sys root opt tmp var -p

 15.创建设备节点

mknod dev/console c 5 1

mknod dev/null c 1 3

16.创建/etc/fstab

        vim etc/fstab

        添加如下内容

# device mount-point type options dump fsck order
proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
sysfs /sys sysfs defaults 0 0
tmpfs /dev tmpfs defaults 0 0

17.创建inittab文件

        vim etc/inittab

        添加入如下内容

::sysinit:/etc/init.d/rcS 
console::askfirst:-/bin/sh                
::ctrlaltdel:/sbin/reboot 
::shutdown:/bin/umount -a -r

 18.创建rcS文件

        vim etc/init.d/rcS

        添加如下内容

#!/bin/sh 
mount -a 
mkdir /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
/bin/hostname XYD

 19.给rcS文件加上可执行权限

        chmod +x etc/init.d/rcS

20.创建etc/profile文件

        vim etc/profile

        添加如下内容

USER="`id -un`"
LOGNAME=$USER
PS1='[\u@\h \W]# '
PATH=$PATH
HOSTNAME=`/bin/hostname`
export USER LOGNAME PS1 PATH

21.拷贝用户密码和组相关文件

cp /etc/group /etc/passwd ./etc/

2.配置虚拟机

1.安装nfs服务器端  要保证网络是通畅的

sudo apt-get install nfs-kernel-server

 2.配置nfs服务

sudo vim /etc/exports

        添加如下一句话  共享文件夹

/home/duan/work/20230620202/rootfs *(rw,sync,no_root_squash)

3.如果开发板上的nfs服务的版本比较老

        需要修改一个配置,让他向下兼容

sudo vim /etc/default/nfs-kernel-server

        在文件的最后加上

RPCNFSDOPTS="--nfs-version 2,3,4 --debug --syslog"

4.重启nfs服务

sudo /etc/init.d/nfs-kernel-server restart

5.设置网络

 点击   右上角的 +  号

 

此处ip信息可以随意填写,但一定要与配置开发板上的ip信息相对应。

6.配置虚拟机的网络链接的方式  先挂起虚拟机

桥接到有线网卡。

3.配置开发板 

1.将开发板网线跟电脑链接一起,启动开发板   在倒计时结束之前  按任意键进入命令行模式

set bootargs 'noinitrd root=/dev/nfs nfsroot=192.168.15.2:/home/dsp/rootfs ip=192.168.15.5:192.168.15.2:192.168.15.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0 lcd=S70'

此处信息要与虚拟机ip设置的信息相对应,不然ping不通。 

2.保存配置

        save

3.重启uboot

        reset

4.当出现如下界面的时候  表示文件系统挂载成功

 

注意点:

        虚拟机防火墙要关闭。

sudo ufw disable

        物理机的防火墙也要关闭。

其他会出现的问题我放到本章的资料中,如有需要请到相应资源中下载。

挂载文件系统很难一次成功,如果有问题可以多操作几次,也可以参考我资料中系统挂载问题总结的PDF。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值