嵌入式Linux学习之旅(11)— 搭建Ubuntu的根文件系统

搭建Ubuntu的根文件系统

一、获取源码

Ubuntu文件系统的下载地址:http://cdimage.ubuntu.com/ubuntu-base/releases/
选择一个版本,这里我选择16.04.5
在这里插入图片描述
点击【release】
在这里插入图片描述
在这里插入图片描述
选择ubuntu-base-16.04.5-base-armhf.tar.gz下载
在这里插入图片描述

二、开始构建文件系统

1、解压根文件系统

nfs文件夹下新建ubuntu_rootfs文件夹,将下载的压缩包放到这个文件夹下,然后将其解压

sudo tar -vzxf ubuntu-base-16.04.5-base-armhf.tar.gz
2、安装qemu

在PC机的Ubuntu下安装qemu工具:

sudo apt-get install qemu-user-static

然后将安装的qemu-user-static拷贝到我们新建的根文件系统的文件夹下

sudo cp /usr/bin/qemu-arm-static ./usr/bin/

如下所示
在这里插入图片描述

3、设置软件源

先将Ubuntu主机下的DNS配置文件拷贝过来:

sudo cp /etc/resolv.conf ./etc/

然后在根文件系统文件夹下的/ubuntu_rootfs/etc/apt/sources.list文件后面添加软件源,如下为中科大的软件源,直接添加失去即可

deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-backports main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-proposed main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-backports main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-proposed main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main multiverse restricted universe
4、在主机挂载并配置根文件系统

ubuntu_rootfs目录下创建mount.sh挂载脚本文件,输入如下内容:

#!/bin/bash
echo "MOUNTING"
sudo mount -t proc /proc /home/william/imx6u_alpha/nfs/ubuntu_rootfs/proc
sudo mount -t sysfs /sys /home/william/imx6u_alpha/nfs/ubuntu_rootfs/sys
sudo mount -o bind /dev /home/william/imx6u_alpha/nfs/ubuntu_rootfs/dev
sudo mount -o bind /dev/pts /home/william/imx6u_alpha/nfs/ubuntu_rootfs/dev/pts
sudo chroot /home/william/imx6u_alpha/nfs/ubuntu_rootfs

还有unmount.sh卸载脚本文件,输入如下内容:

#!/bin/bash
echo "UNMOUNTING"
sudo umount /home/william/imx6u_alpha/nfs/ubuntu_rootfs/proc
sudo umount /home/william/imx6u_alpha/nfs/ubuntu_rootfs/sys
sudo umount /home/william/imx6u_alpha/nfs/ubuntu_rootfs/dev
sudo umount /home/william/imx6u_alpha/nfs/ubuntu_rootfs/dev/pts

给予其可执行权限:

chmod 777 mount.sh unmount.sh

然后执行挂载脚本

./mount.sh

如下所示
在这里插入图片描述
然后我们执行如下命令安装一些常用的命令和软件:

apt update
apt install sudo
apt install vim
apt install kmod
apt install net-tools
apt install ethtool
apt install ifupdown
apt install language-pack-en-base
apt install rsyslog
apt install htop
apt install iputils-ping

接下来设置root用户密码,输入命令

passwd root

接着输入密码即可,我这里设置为 root
在这里插入图片描述
然后输入如下命令设置本机名称和IP地址:

echo "imx6ull" > /etc/hostname
echo "127.0.0.1 localhost" >> /etc/hosts
echo "127.0.0.1 imx6ull" >> /etc/hosts

因为我们的开发板是使用串口作为终端的,所以需要设置一下,比如我们开发板使用的UART1对应的串口设备文件为ttymxc0,我们输入如下命令

ln -s /lib/systemd/system/getty@.service /etc/systemd/system/getty.target.wants/getty@ttymxc0.service

这样我们就设置好了,我们退出这个根文件系统,然后取消挂载

exit
./unmount.sh

三、启动开发板

将uboot里的环境变量设置:

setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs rw nfsroot=192.168.0.106:/home/william/imx6u_alpha/nfs/ubuntu_rootfs ip=192.168.0.101:192.168.0.106:192.168.1.1:255.255.255.0::eth0:off'
saveenv 

然后使用boot命令启动,可以看到,启动成功
在这里插入图片描述

四、ubuntu系统完善

1、创建一个新用户

刚刚制作的根文件系统只有一个root用户,我们可以创建一个普通用户,使用命令

adduser william

然后输入密码,接下来直接回车即可
在这里插入图片描述
然后给这个新建的用户提供sudo权限,回到root用户下,打开/etc/sudoers文件,添加如下一行
在这里插入图片描述
保存之后切换到新创建的用户下,使用sudo fdisk -l命令测试一下,可以看到,输入密码后会打印出当前开发板的存储器的信息

在这里插入图片描述

2、配置DHCP连接到网络

因为没有配置DHCP,所以Ubuntu根文件系统启动后不能直接联网,切换好root用户,配置DHCP,命令如下

su
echo auto eth0 > /etc/network/interfaces.d/eth0
echo iface eth0 inet dhcp >> /etc/network/interfaces.d/eth0
/etc/init.d/networking restart

然后重启一下开发板,可以看到,已经可以连接到网络了
在这里插入图片描述

3、安装gcc和make

可以尝试使用如下命令安装gcc和make工具:

sudo apt-get install gcc   #安装 gcc编译器 编译器 
sudo apt-get install make  #安装 make工具

安装后后使用gcc -vmake -v查看其版本号。
注意:由于I.MX6ULL 性能比较差,只能编译一些简单的而是代码,稍微复杂一点的代码编译就会很慢!因此不建议在 I.MX6ULL 上编译程序!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值