之前使用虚拟机搭建过S5PV210的开发环境,后面由于电脑除了问题导致环境丢失,本文记录从0开始搭建嵌入式Linux开发环境的流程。
开发环境使用ubuntu18.04
1 安装VMWare虚拟机
参考下面文章
https://blog.csdn.net/SoulNone/article/details/126681722
2 在VMWare中安装Ubuntu 18.04
参考下面文章
https://blog.csdn.net/weixin_43290551/article/details/125954709
3 Ubuntu18.04的基本配置
3.1 换源
- 首先备份ubuntu下载源的配置文件
sudo cp /etc/apt/sources.list /etc/apt/sources_copy.list
- 打开文件/etc/apt/sources.list并写入内容
sudo cp /etc/apt/sources.list /etc/apt/sources_copy.list
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
- 执行新源的更新
sudo apt update
sudo apt upgrade
3.2 重新安装Vim
sudo apt remove vim-common
sudo apt install vim
3.3 配置命令补全忽略大小写
# 在用户目录下创建.inputrc文件并写入set completion-ignore-case on
echo 'set completion-ignore-case on' >> ~/.inputrc
4. 创建共享文件夹
- 在VMWare中创建共享文件夹并启用
虚拟机->设置->选项->共享文件夹->添加共享文件夹
例如文件夹名为Work
2. 在Ubuntu中挂载共享文件到指定路径下
在 home/user目录下创建文件夹Work,将共享文件夹挂载到此目录下
cd /home/user
mkdir Work
sudo vmhgfs-fuse .host:/ /home/user/Work -o allow_other
挂载完成之后可以在 /home/user/Work/Work 目录下访问Windows上的共享文件夹
3. 配置开机自动挂载共享文件夹
编辑/etc/fatsb文件并在文件末尾追加一下内容
.host:/ /home/user/Work fuse.vmhgfs-fuse allow_other 0 0
每次开机就可以自动挂载共享文件夹
5. 安装交叉编译工具链
使用共享文件夹将arm-2009q3.tar.bz2拷贝到Ubuntu中,并进行解压
tar -jxvf arm-2009q3.tar.bz2
将解压后得到的arm-2009q3拷贝到 /user/local/arm目录下
sudo mkdir /usr/local/arm
sudo mv arm-2009q3/ /usr/local/arm/
之后正常情况下就可以进入交叉编译工具链的目录下执行应用程序,正常情况下会打印出版本号,安装就算成功
cd /usr/local/arm/arm-2009q3/bin/
./arm-none-linux-gnueabi-gcc -v
如果出现下面的情况,可能是因为安装的ubuntu 18.04是64位操作系统,arm-2009q3交叉编译工具链是32位的的程序,需要安装32位的运行时库,可以参考另一篇文章解决问题
ubuntu20.04下安装arm-linux-gcc交叉编译工具链 bash: ./arm-none-linux-gnueabi-gcc: 没有那个文件或目录
上面安装完成之后只能在安装目录下运行编译工具,需要将路径导出到环境变量
cd ~
echo 'export PATH=/usr/local/arm/arm-2009q3/bin:$PATH' >> ./.bashrc
6. 配置Ubuntu的网络为桥接模式
虚拟机->设置->网络适配器->网络连接->选择为桥接模式
修改虚拟网络编辑器,将虚拟机网络桥桥接到有线网卡
编辑->虚拟网络编辑器
配置Ubuntu静态IP
sudo vi /etc/network/interfaces
在文件中写入下面内容,静态和动态IP根据需要进行配置,ens33位虚拟机网卡名称
auto lo
iface lo inet loopback
# 静态IP,和开发板连接使用
auto ens33
iface ens33 inet static
address 192.168.1.143
netmask 255.255.255.0
getway 192.168.1.1
# 动态IP,上网时使用
#dhcp
#audo ens33
#iface ens33 inet dhcp
重启网卡
# 关闭网卡
sudo ifdown ens33
# 启动网卡
sudo ifup ens33
8. 配置开发板和虚拟机之间网络联通
本节需要将虚拟机Ubuntu,Windows和开发板配置到同一网段,开发板和Windows之间使用网线连接,Ubuntu桥接到Windwos的有线网卡上。
Ubuntu 192.168.1.104
Windwos 192.168.1.20
开发板 192.168.1.10
Ubuntu
配置完成之后重启网卡
# 静态IP,和开发板连接使用
auto ens33
iface ens33 inet static
address 192.168.1.143
netmask 255.255.255.0
getway 192.168.1.1
Windwos
以Windows11为例
设置->网络和Internrt->高级网络设置 启动以太网
开发板
x210 # print
mtdpart=80000 400000 3000000
baudrate=115200
ethaddr=00:40:5c:26:0a:5b
ipaddr=192.168.1.10
gatewayip=192.168.1.1
之后便可以在开发板上使用Ping命令Ping同Ubuntu,Ubuntu不能Ping同Windwos和开发板属于正常情况,因为Windows的有线网卡在未联网时会禁用
这种配置可以让Ubuntu和开发板通信,但是不能正常访问网络,需要联网时将虚拟机网络配置为Net,之后重启网卡即可
sudo ifdown ens33
sudo ifup ens33
9. 搭建TFTP服务器
安装 tftp-hpa,tftpd-hpa,xinetd
sudo apt-get install tftp-hpa tftpd-hpa
sudo apt-get install xinetd
配置/etc/xinetd.conf为以下内容
# Simple configuration file for xinetd
#
# Some defaults, and include /etc/xinetd.d/
defaults
{
# Please note that you need a log_type line to be able to use log_on_success
# and log_on_failure. The default is the following :
# log_type = SYSLOG daemon info
}
includedir /etc/xinetd.d
配置/etc/default/tftpd-hpa为以下内容,修改tftp工作目录
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
# 工作目录需要授权 chmod 777 tftpboot
TFTP_DIRECTORY="/home/vertor/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="-l -c -s"
配置/etc/xinetd.d/tftp文件为以下内容,如果没有就新建一个
service tftp
{
socket_type = dgram
wait = yes
disable = no
user = root
protocol = udp
server = /usr/sbin/in.tftpd
server_args = -s /home/vertor/tftpboot
#log_on_success += PID HOST DURATION
#log_on_failure += HOST
per_source = 11
cps =100 2
flags =IPv4
}
重启tftp服务
sudo service tftpd-hpa restart
sudo /etc/init.d/xinetd reload
sudo /etc/init.d/xinetd restart
本地测试
通过以上几步就可以建立好 tftp 服务器了,可以在本地先进行一下测试。还是以我的配置
文件为例,首先在/tftpboot 中新建一个文件 file,然后在其中随便输入内容;然后进入一个不是
/tftpboot 的目录下(原因是避免混淆,因为在获取文件是,默认是将想要获取的文件存放在当
前目录下的);再在终端中输入 sudo tftp localhost,进入 tftp 命令符下(可以在其中输入 help
查看命令和命令的作用),输入 get file,如果没有任何提示,就说明传输成功了,然后输入 q
退出 tftp 命令符,在当前目录下就可以看到一个 file 文件,内容是与开始新建的那个 file 的内容
是一致的。同样也可以在 tftp 命令符中输入 put xx,把 xx 文件上传到服务器文件夹中。如果一
切 ok,那就么一个可用的 tftp 服务器就顺利搭建成功了。
10. 搭建nfs服务器
执行命令
sudo apt-get install nfs-kernel-server
sudo apt-get install nfs-common
sudo vi /etc/exports
在文末添加以下内容
/root/rootfs是rootfs的工作目录
/root/rootfs *(rw,sync,no_root_squash,no_subtree_check)
命令行执行
chmod 777 -R /root/rootfs
sudo showmount -e
sudo exportfs -r
sudo showmount localhost -e
重启NFS服务
sudo /etc/init.d/nfs-kernel-server restart
挂载测试,执行后,进入/mnt 目录中,如果可以看到/root/rootfs 中的内容,则说明 nfs 搭建成功!
mount -t nfs -o nolock localhost:/root/rootfs /mnt