ubuntu-base系统移植

目录

ubuntu 根文件系统构建

解压缩 ubuntu base 根文件系统

 

安装 qemu

 设置软件源

在主机挂载并配置根文件系统

1、在主机挂载根文件系统

2、安装常用的命令和软件

3、设置 root 用户密码

4、设置本机名称和 IP 地址

5、设置串口终端

ubuntu 根文件系统测试  

nfs 挂载测试

ubuntu 系统使用

添加新用户

1、添加新用户

 

2、设置新用户可以使用 sudo 命令

网络 DHCP 配置

安装软件

FTP 服务器搭建

 gcc 和 make 工具安装


 

Ubuntu 的移植非常简单,不需要我们编译任何东西,因为 Ubuntu 官方已经将根文件系统 制作好了!我们只需要简单配置一下 Ubuntu 官方提供的 base 根文件系统,使其在我们的开发 板上跑起来即可。因此我们首先需要下载 Ubuntu-base,为了和我们的教程一致,本章我们移植 Ubuntu 16.04 版本根文件系统,有兴趣的可以移植其他版本的 Ubuntu 内核,比如 18.04。首先 肯定是到 Ubuntu 官 方 去 下 载 16.04 的 根 文 件 系 统 , 根 文 件 系 统 下 载 地 址 为 http://cdimage.ubuntu.com/,下载界面如图 A3.1.1 所示:

点击图 A3.1.1 中的 ubuntu-base,进入到 ubuntu-base 下载界面,如图 A3.1.2 所示:

 

点击图 A3.1.2 中的“releases”,下载 releases 版本的根文件系统,进去以后如图 A3.1.3 所 示:

 

从图 A3.1.3 可以看出,Ubuntu 提供了从 12.04 开始,一直到最新的 19.10 版本的 ubuntu base 供大家下载。我们选择 16.04.5,点击以后进入如图 A3.1.4 所示界面:

 点击图 A3.1.4 中的“release”,进入 16.04.5 的下载界面,如图 A3.1.5 所示:

从图 A3.1.5 可以看出,Ubuntu 针对不同的 CPU 架构提供相应的 ubuntu base 根文件系统, 有 amd64(64 位 X86)、armhf、i386(32 位 X86)、powerpc、ppc64el 等系统的。I.MX6ULL 是 CortexA 内核的 CPU,并且有硬件浮点运算单元,因此选择 armhf 版本。在图 A3.1.5 中找到“ubuntubase-16.04.5-base-armhf.tar.gz”,也就是 16.04.5 版本的 ubuntu base 根文件系统,将其下载下来。

ubuntu 根文件系统构建

解压缩 ubuntu base 根文件系统

为了存放 ubuntu base 根文件系统,先在 PC Ubuntu 系统中的 nfs 目录下创建一个名为
ubuntu_rootfs 的目录,命令如下:
cd /home/zuozhongkai/linux/nfs //进入到 nfs 目录下
mkdir ubuntu_rootfs //创建名为“ ubuntu_rootfs ”目录

 

将上一小节下载得到的“ ubuntu-base-16.04.5-base-armhf.tar.gz ”拷贝到上面创建的
ubuntu_rootfs ”目录中,然后使用如下命令对其解压缩:
sudo tar -vzxf ubuntu-base-16.04.5-base-armhf.tar.gz

解压完成以后如图 A3.2.1.1 所示:

 

从图 A3.2.1.1 可以看出, ubuntu base 解压以后就是大家最常见的 linux 根文件系统,但是
目前还不能直接使用,还需要对其做一些其他的配置。

安装 qemu

需要在 PC Ubuntu 上安装 qemu 工具,命令如下:
sudo apt-get install qemu-user-static
将刚刚安装的 qemu-user-static 拷贝到刚刚解压出来的 ubuntu base 目录中,也就是
ubuntu_rootfs/usr/bin 目录下,命令如下:
cd /home/zuozhongkai/linux/nfs/ubuntu_rootfs // 进入到 ubuntu_rootfs 目录下
sudo cp /usr/bin/qemu-arm-static ./usr/bin/ //拷贝 qemu-arm-static

 设置软件源

我们在 ubuntu 下使用 apt-get 安装软件的时候,是从网上下载软件并安装的,因此需要指
定软件源。在设置软件源之前先将 Ubuntu 主机下的 DNS 配置文件 /etc/resolv.conf 拷贝到根文件
系统中,命令如下:
cd /home/zuozhongkai/linux/nfs/ubuntu_rootfs // 进入到 ubuntu_rootfs 目录下
sudo cp /etc/resolv.conf ./etc/resolv.conf //拷贝 resolv.conf
设置软件源,打开根文件系统中的 ubuntu_rootfs/etc/apt/sources.list 文件,在此文件最后面
添加软件源,比如国内常用的清华源、中科大源等等,这些软件源可以直接在网上查找。注意
这里要用 ubuntu16.04 ARM 源,不能找成了 X86 的源。
#中科大源
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

 大家将示例代码 A3.2.3.1 中的源添加到 sources.list 文件中即可。

在主机挂载并配置根文件系统

1、在主机挂载根文件系统

接下来将上面制作的根文件系统挂载到主机上,需要挂载 proc sys dev dev/pts 等文件
系统,最后使用 chroot 将主机的根文件系统切换到我们前面制作的根文件系统中。这里我们通
过两个脚本文件来完成挂载和卸载操作,首先是挂载脚本 mount.sh ,在 ubuntu_rootfs 目录下创
建一个名为 mount.sh shell 脚本,然后在里面输入如下所示内容:
1 #!/bin/bash
2 echo "MOUNTING"
3 sudo mount -t proc /proc /home/zuozhongkai/linux/nfs/ubuntu_rootfs/proc
4 sudo mount -t sysfs /sys /home/zuozhongkai/linux/nfs/ubuntu_rootfs/sys
5 sudo mount -o bind /dev /home/zuozhongkai/linux/nfs/ubuntu_rootfs/dev
6 sudo mount -o bind /dev/pts /home/zuozhongkai/linux/nfs/ubuntu_rootfs/dev/pts
7 sudo chroot /home/zuozhongkai/linux/nfs/ubuntu_rootfs
再编写一个卸载的脚本文件,新建名为 unmount.sh shell 脚本,在里面输入如下所示内
容:
1 #!/bin/bash
2 echo "UNMOUNTING"
3 sudo umount /home/zuozhongkai/linux/nfs/ubuntu_rootfs/proc
4 sudo umount /home/zuozhongkai/linux/nfs/ubuntu_rootfs/sys
5 sudo umount /home/zuozhongkai/linux/nfs/ubuntu_rootfs/dev/pts
6 sudo umount /home/zuozhongkai/linux/nfs/ubuntu_rootfs/dev
最后给予 mount.sh unmount.sh 这两个 shell 脚本可执行权限,命令如下:
sudo chmod 777 mount.sh unmount.sh
一切准备就绪以后执行 mount.sh 脚本,将制作的根文件系统挂载到主机下,输入如下命
令:
./mount.sh

 挂载成功以后如图 A3.2.4.1 所示:

从图 A3.2.4.1 可以看出,当前终端已经将根文件系统切换到了我们上面制作的 ubuntu_rootfs
根文件系统中。

2、安装常用的命令和软件

由于 ubuntu base 是一个最小根文件系统,很多命令和软件都没有,因此我们需要先安装一
下常用的命令和软件,输入如下命令( 注意!是在电脑的 Ubuntu 下输入这些命令,因为现在电
脑的 Ubuntu 正挂载着我们移植的 Ubuntu-base 根文件系统 ):
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

 

我们就先安装这些命令和软件,保证 ubuntu base 根文件系统能够在开发板上正常启动即
可,等启动以后再根据实际情况继续安装其他的命令和软件。

3、设置 root 用户密码

设置一下 root 用户的密码,这里我设置简单一点, root 用户密码也设置为“ root ”,相当于
用户名和密码一样,命令如下:
passwd root //设置 root 用户密码

输入“passwd root”以后会让你输入 root 用户密码,输入两次,如图 A3.2.4.2 所示:

 有兴趣的话也可以新建其他的用户并设置密码。

4、设置本机名称和 IP 地址

输入如下命令设置本机名称和 IP 地址:
echo "alientek_imx6ul" > /etc/hostname
echo "127.0.0.1 localhost" >> /etc/hosts
echo "127.0.0.1 alientek_imx6ul" >> /etc/hosts

5、设置串口终端

ubuntu 根文件系统在开发板上启动以后我们通常也希望串口终端正常工作,这里根据网友
的介绍需要创建一个链接。首先确定自己所使用的串口设备文件,比如正点原子的 ALPHA
发 板 使 用 的 UART1 对 应 的 串 口 设 备 文 件 为 ttymxc0 , 我 们 需 要 添 加 一 个 名 为
getty@ttymxc0.service 的链接,链接到 getty@.service 服务上,输入如下命令:
ln -s /lib/systemd/system/getty@.service /etc/systemd/system/getty.target.wants/getty@ttymxc0.
service
设置好以后就可以退出根文件系统了,输入如下命令退出:
exit

退出以后再执行一下 unmount.sh 脚本取消挂载,命令如下: 

./unmount.sh

至此,ubuntu base 根文件系统就已经制作好了,接下来就是挂载到开发板上去测试。

ubuntu 根文件系统测试  

nfs 挂载测试

根文件系统已经制作完成了,接下来就是测试,先用 nfs 挂载根文件系统,在 uboot 里面设
bootargs 环境变量的值如下:
setenv bootargs console=tty1 console=ttymxc0,115200 root=/dev/nfs nfsroot=192.168.1.253:/
home/zuozhongkai/linux/nfs/ ubuntu_rootfs rw ip=192.168.1.251:192.168.1.253:192.168.1.1:255.255.
255.0::eth0:off
saveenv //保存环境变量
设置完成以后重启开发 板,这个时候就会进入到 ubuntu 根文件系统中,如图 A3.3.1.1 所示:

 

从图 A3.3.1.1 可以看出, 16.04.5 版本的 ubuntu 根文件系统启动成功,并且要求我们输入
用户名和密码,用户名和密码都是 root 。用户名和密码输入成功以后就会进入到系统,如图
A3.3.1.2 所示:

ubuntu 系统使用

添加新用户

1、添加新用户

我们制作的 ubuntu 根文件系统默认只有一个 root 用户,默认都是用 root 用户登录的,和我
们在 PC 上使用 Ubuntu 系统一样,默认使用 root 用户的话可能会因为操作失误导致系统被破
坏。因此最好创建一个普通用户,默认使用普通用户,当需要 root 权限的时候就使用“ sudo
命令即可。使用 adduser 命令添加普通用户:
adduser zuozhongkai //添加普通用户

 

添加新用户的时候需要设置新用户密码,根据自己的实际情况设置即可,用户添加过程如
A3.3.2.1 所示:

新用户添加完成以后就可以重启开发板,然后使用新用户登录。

2、设置新用户可以使用 sudo 命令

默认情况下新用户是不能使用 sudo 命令的,即使你输入了密码也不能使用 sudo ,会提示“
zuozhongkai is not in the sudoers file. This incident will be reported. ”错误,如图 A3.3.2.2 所示:
我们需要修改 /etc/sudoers 文件,首先使用如下命令切换回 root 用户:
su // 切换回 root 用户
/etc/sudoers 文件默认是只读的,因此需要先修改此文件的写权限,使用如下命令:
chmod u+w /etc/sudoers
然后使用 vi 打开 /etc/sudoers ,找到“ root ALL=(ALL:ALL) ALL ”这一行,在这一行下面添
加:
zuozhongkai ALL=(ALL:ALL) ALL

 

表示“ zuozhongkai ”这个用户可以执行 sudo 命令,但是要输入密码,设置完成以后如图
A3.3.2.3 所示:

修改完成以后保存退出,重新恢复/etc/sudoers 的只读属性,使用如下命令:

chmod u-w /etc/sudoers  

设置完成以后重启切换到“ zuozhongkai ”用户,这个时候 sudo 命令就运行正常了,可以使
fdsik 命令测试一下, fdisk 需要 root 权限。输入如下命令:
sudo fdisk -l

 如果 sudo 运行正常的话就会打印出当前开发板的所有存储信息。

网络 DHCP 配置

我们默认没有配置 DHCP ,因为 ubuntu 启动以后不能直接联网,需要手动启动网卡并设置
IP 地址。这里我们配置一下网络 DHCP ,这样系统启动以后就会自动设置好网络。正点原子的
ALPHA 开发板有两个网卡,在 linux 系统下的网卡名字为 eth0 eth1 ,我们以 eth0 为例,讲
解一下如何配置其 DHCP ,输入如下命令:
su // 切换到 root 用户
echo auto eth0 > /etc/network/interfaces.d/eth0
echo iface eth0 inet dhcp >> /etc/network/interfaces.d/eth0
/etc/init.d/networking restart
设置好以后重启开发板, eth0 网卡就会默认打开,可以直接上网。 eth1 网卡同理,支持将
上述命令中的 eth0 换为 eth1 即可。

安装软件

至此, ubuntu 根文件系统已经完全在开发板上运行起来了,如果要安装什么软件的话直接
使用 apt 工具即可,和我们在 PC 下使用 ubuntu 一样。比如我们安装 mplayer ,那么就可以直接
输入:
sudo apt-get install mplayer // 安装 mplayer

 等待安装完成,完成以后就可以使用 mplayer 了,非常的方便。

FTP 服务器搭建

我们可以在开发板上搭建一个 FTP 服务器,这样就可以通过 FileZilla 这样的 FTP 客户端软
件和开发板之间进行文件传输。搭建方法和 PC 下的 Ubuntu 一模一样,参考 4.1 小节即可,主
要是在开发板上安装 vsftpd ,然后进行简单的设置即可。
开发板上的 vsftpd 部署好以后就可以使用 FileZilla 来访问了,站点设置如图 A3.4.4.1 所示:
站点设置好以后就可以进行连接了,默认进入到“ zuozhongkai ”用户目录下,如图 A3.4.4.2
所示:

 gcc make 工具安装

我们可以直接用 I.MX6ULL 来编译代码,只需要安装 gcc make 工具,这两个工具的安
装很简单,输入如下命令即可:
sudo apt-get install gcc //安装 gcc 编译器
sudo apt-get install make //安装 make 工具
安装完成以后输入“ gcc -v ”查看 gcc 是否安装成功,如果安装成功的话就会打印出 gcc
本号,如图 A3.4.5.1 所示:

 

从图 A3.4.5.1 可以看出,当前安装的 gcc 版本号为 5.4.0 。再输入“ make -v ”查看 make
具的版本号,如果 make 工具安装成功的话就会输出 make 工具版本号,如图 A3.4.5.2 所示:
  • 25
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Ubuntu Base Lite是一个基于Ubuntu的轻量级系统,它提供了一个最小化的基础系统,可以用于构建定制化的嵌入式系统。要移植Ubuntu Base Lite的rootfs,可以按照以下步骤进行操作: 1. 获取Ubuntu Base Lite根文件系统(rootfs)的镜像文件。可以从官方网站或其他可靠来源下载对应的镜像文件。 2. 在目标设备上准备好一个空的分区或者存储设备,用于挂载rootfs。可以使用命令行工具或者图形界面工具来创建分区或者格式化存储设备。 3. 将rootfs的镜像文件解压缩到之前准备好的空分区或者存储设备上。可以使用如下命令解压缩镜像文件: ``` $ sudo tar -xvf <镜像文件路径> -C <挂载点路径> ``` 其中,`<镜像文件路径>`是rootfs镜像文件的路径,`<挂载点路径>`是之前准备好的空分区或存储设备的挂载点路径。 4. 确保之前准备好的分区或者存储设备已经挂载。可以使用如下命令来确认挂载状态: ``` $ df -h ``` 如果正确挂载,你应该能够看到之前准备的空分区或存储设备的挂载点路径。 5. 在目标设备上安装引导加载程序(bootloader),例如GRUB或者U-Boot。可以通过配置引导加载程序将系统启动选项指向刚才挂载的rootfs分区。 6. 重新启动目标设备,并确保引导加载程序正确配置。如果一切配置正确,目标设备应该能够启动到Ubuntu Base Lite的最小系统环境。 通过以上步骤,你可以成功地在目标设备上移植Ubuntu Base Lite的rootfs。在移植过程中,需要注意设备硬件的兼容性以及引导加载程序的正确配置。根据具体的需求,你还可以在最小系统的基础上添加和配置其他软件和功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hqb_newfarmer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值