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

搭建Ubuntu的根文件系统

一、获取源码

Ubuntu文件系统的下载地址:http://cdimage.ubuntu.com/ubuntu-base/releases/
选择一个版本,这里我选择16.04.5
嵌入式Linux学习之旅(11)— 搭建Ubuntu的根文件系统_第1张图片
点击【release】
嵌入式Linux学习之旅(11)— 搭建Ubuntu的根文件系统_第2张图片
嵌入式Linux学习之旅(11)— 搭建Ubuntu的根文件系统_第3张图片
选择ubuntu-base-16.04.5-base-armhf.tar.gz下载
嵌入式Linux学习之旅(11)— 搭建Ubuntu的根文件系统_第4张图片

二、开始构建文件系统

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
嵌入式Linux学习之旅(11)— 搭建Ubuntu的根文件系统_第5张图片
然后输入如下命令设置本机名称和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/[email protected] /etc/systemd/system/getty.target.wants/[email protected]

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

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命令启动,可以看到,启动成功
嵌入式Linux学习之旅(11)— 搭建Ubuntu的根文件系统_第6张图片

四、ubuntu系统完善

1、创建一个新用户

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

adduser william

然后输入密码,接下来直接回车即可
嵌入式Linux学习之旅(11)— 搭建Ubuntu的根文件系统_第7张图片
然后给这个新建的用户提供sudo权限,回到root用户下,打开/etc/sudoers文件,添加如下一行
嵌入式Linux学习之旅(11)— 搭建Ubuntu的根文件系统_第8张图片
保存之后切换到新创建的用户下,使用sudo fdisk -l命令测试一下,可以看到,输入密码后会打印出当前开发板的存储器的信息

嵌入式Linux学习之旅(11)— 搭建Ubuntu的根文件系统_第9张图片

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

然后重启一下开发板,可以看到,已经可以连接到网络了
嵌入式Linux学习之旅(11)— 搭建Ubuntu的根文件系统_第10张图片

3、安装gcc和make

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

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

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

你可能感兴趣的:(嵌入式Linux)