chroot构建ubunt文件系统 在rk1808 imx6q上测试过
配置过程
要求本地的ubunt版本高于要使用chroot制作的文件系统
1.下载
这里把要用chroot制作的ubunt文件系统放在armrootfs文件夹下
hann@hann-virtual-machine:~/armrootfs$ wget http://cdimage.ubuntu.com/ubuntu-base/releases/16.04/release/ubuntu-base-16.04.6-base-armhf.tar.gz
解压
hann@hann-virtual-machine:~/armrootfs$ sudo tar -zxvf ubuntu-base-16.04.6-base-&&&&&&&&&&&&&&
要使用chroot,所以需要能够在chroot环境执行armhf版本的binary,
所以我们要接触linux的binfmt机制和qemu static解释器
sudo apt-get install qemu-user-static
sudo cp /usr/bin/qemu-arm-static /home/hann/armrootfs/usr/bin/
先将本机的dns配置复制到目标rootfs,后面联网时会用到
sudo cp -b/etc/resolv.conf ~/armrootfs/etc/resolv.conf
4.挂载和卸载脚本
注意在刚开始挂载一次,在做完文件系统打包前 卸载一次
#!/bin/bash
function mnt() {echo "MOUNTING"sudo mount -t proc /proc ${2}procsudo mount -t sysfs /sys ${2}syssudo mount -o bind /dev ${2}devsudo mount -o bind /dev/pts ${2}dev/pts sudo chroot ${2}
}
function umnt(){echo "UNMOUNTING"sudo umount ${2}procsudo umount ${2}syssudo umount ${2}dev/ptssudo umount ${2}dev
}
if [ "$1" == "-m" ] && [ -n "$2" ] ;
thenmnt $1 $2
elif [ "$1" == "-u" ] && [ -n "$2" ] ;
thenumnt $1 $2
elseecho ""echo "Either 1'st, 2'nd or bothparameters were missing"echo ""echo "1'st parameter can be one ofthese: -m(mount) OR -u(umount)"echo "2'nd parameter is the full pathof rootfs directory(with trailing '/')"echo ""echo "For example: ch-mount -m/media/sdcard/"echo ""echo 1st parameter : ${1}echo 2nd parameter : ${2}
fi
5.安装基本的命令
apt update
apt upgrate
安装必须
apt-get install\language-pack-en-base \sudo \ssh \net-tools \ethtool \wireless-tools \ifupdown \network-manager \iputils-ping \rsyslog \bash-completion \htop \--no-install-recommends
设置用户密码
root@hann-virtual-machine:/# sudo useradd -m -s /bin/sh hann
root@hann-virtual-machine:/# cat /etc/hostname
hann
root@hann-virtual-machine:/# passwd hann
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
设置本机入口ip:
echo"127.0.0.1 localhost">>/etc/hosts
echo"127.0.1.1 ubuntu-arm">>/etc/hosts
sudo vim /root/.bashrc添加(未实现)
export LANGUAGE="en_US.UTF-8"
export LANG=en_US:zh_CN.UTF-8
export LC_ALL=C
这个没搞成功
允许自动更新dns:
dpkg-reconfigureresolvconf
设置时区:
dpkg-reconfiguretzdata
7.设置可使用root用户登录ssh
安装ssh后,默认情况下不允许使用root用户登录,需作以下修改:
root@chry-PC:/# vi /etc/ssh/sshd_config
PermitRootLogin prohibit-password,改成PermitRootLogin yes
X11Forwarding yes# 这个选为yes 可以进入xservice
设置串口
因为暂时未安装桌面,所以这里的配置要具体和内核中登录的串口的设备对应起来,不然对导致无法通过串口登录的问题。具体可能会因为目标板差异而不同,具体要参考所使用的平台进行修改。 我的目标开发板为rk1808,它的登录串口为ttyFIQ0,
vi /lib/systemd/system/serial-getty@.service 修改BindsTo选项:
dev-%i.device 改成 dev-%i
如果不执行这一步,烧录文件系统后启动,串口可能会卡死。 :https://blog.csdn.net/cry1994/article/details/100518871
串口自动登录root用户(可选)
修改ExecStart选项:
-/sbin/agetty --keep-baud 115200,38400,9600 %I $TERM 改成 -/sbin/agetty -a root --keep-baud 115200,38400,9600 %I $TERM
允许root用户登录串口(可选)
vi /etc/pam.d/login
搜索pam_securetty.so,找到改行在前面加#号注释掉: #auth [success=ok new_authtok_reqd=ok ignore=ignore user_unknown=bad default=die] pam_securetty.so
几个不错的知识点:
走进Linux之systemd启动过程 :该文介绍了系统启动init父进程后:是如何一步步操作的:
所以,这里需要把你原板子文件系统的 /etc/fstab 挂载分区部分copy过来
Linux在远程X Server上显示图形界面:该文告诉我们,怎么启动xservice
打包
打包 img rk1808烧录格式
使用dd指令制作空的固件容器
dd if=/dev/zero of=armrootfs.img bs=1M count=2048
sudo mkfs.ext4 armrootfs.img
将arm文件系统内容制作到armrootfs.img
mkdir ubuntu-mount
sudo mount armrootfs.img ubuntu-mount/
sudo cp -rfp armrootfs/* ubuntu-mount/
sudo umount ubuntu-mount/
e2fsck -p -f armrootfs.img
resize2fs -M armrootfs.img
打包 tar.bz2这个就较为简单 imx6q的文件系统烧录格式
cd armrootfstar -jcvf ../rootfs.tar.bz2 ./*
启动
启动ssh 服务
service ssh start
配置IP 网关 mac dns 等使其可以联网
略
ping baidu.com
ping通后,只要emmc空间够,想怎么折腾怎么折腾
chroot构建ubunt文件系统 在rk1808 imx6q上测试过相关推荐
- Ubuntu-Base 18 文件系统 在iMX8平台上的移植
Ubuntu-Base 18 文件系统 在iMX8平台上的移植 开发板是如下的型号 OKMX8MPX-C V2.0 OKMX8PQ-C开发板 FETMX8MPX-C V1.0 在 飞凌 提供的 ubu ...
- 嵌入式中利用ubuntu-base构建根文件系统
在嵌入式环境中,我们最常用busybox.yocto或buildroot来构建根文件系统,这种情况下,当我们需要使用一些组件的时候,往往需要我们使用源码编译,移植到开发板中.那有没有像ubuntu的文 ...
- 【ARM】使用Ubuntu-base构建根文件系统
使用Buildroot构建根文件系统 介绍 资源下载 配置根文件系统 设置软件源 安装必要软件 添加新用户 设置主机名称和本机IP 设置终端串口 网络DHCP FTP服务器搭建 串口无法登录 开机启动 ...
- 通过chroot运行linux,通过chroot构建Linux操作系统
通过chroot构建Linux操作系统 发布时间:2006-04-14 12:41:48来源:红联作者:翔翔 转贴:出处:天极网 在已有的Linux操作系统中,安装另一个开源操作系统,我们一般是先构建 ...
- 基于ubuntu-base构建根文件系统并移植到RK3568开发板
目录 前言 一.根文件系统是什么? 二.构建根文件系统的方法 1.debootstrap 2.builroot 3.busybox 4.ubuntu-base 三.进入主题--如何使用ubuntu-b ...
- 教你用 buildroot 构建根文件系统
如果想要构建完整的根文件系统,大家一般都是使用buildroot,它不仅包含了 busybox 的功能,而且里面还集成了各种软件,需要什么软件就选择什么软件,不需要我们去移植. 嵌入式系统三大部分:b ...
- 构建根文件系统(一)
接着前边内核移植的文章,记录根文件系统的构建. 这里要用到强大的busybox,我选择的版本是busybox-1.18.5.tar.bz2 ,1.17的也可以:之所以选择这个版本是因为基于现在的交叉编 ...
- buildroot构建根文件系统
buildroot构建根文件系统 一.简介 Buildroot是Linux平台上一个构建嵌入式Linux系统的框架.整个Buildroot是由Makefile脚本和Kconfig配置文件构成的.本文使 ...
- Buildroot 构建根文件系统(Jz2440)
1. Buildroot 简介 Buildroot是Linux平台上一个构建嵌入式Linux系统的框架.整个Buildroot是由Makefile脚本和Kconfig配置文件构成的.你可以和 ...
最新文章
- 使用system语句出现不明确问题
- 如何将TensorFlow Serving的性能提高超过70%?
- SpringMVC注解@initbinder解决类型转换问题
- tableau实战系列(二十五)-如何将 R语言与tableau进行结合,实现聚类分析
- 望城——民营经济的“旺城”
- 数字化时代,阿里、京东们能否解决困扰市场已久的“倒奶问题”?
- tomcat的缺少tcnative-1.dll的解决
- rs485编程java_串行编程RS485
- 自定义工具类:导入工具类测试
- python创建函数、可以接受任意多个整数参数并求和_pythonxlwt:求和函数最大参数限制?...
- html的post和get请求参数,HTTP 方法:GET 对比 POST | w3cschool菜鸟教程
- oracle =1,oracle中的 where 1=1 和where 1 !=1
- k8s-自动横向伸缩pod 根据CPU使用率,QPS访问数监控指标
- [jQuery原理] jQueryDOM操作相关方法
- SeismicUnix:wtlib.c[小波变换库]
- IOS 世界标准时间UTC /GMT 转为当前系统时区对应的时间
- 锐龙r7 4800h性能怎么样
- Python下载与安装,以及下载安装编辑器Geany且通过Geany编辑运行第一个程序Hello world.
- EMR 上的 Spark 或 Hive 作业失败并出现 HTTP 503 “Slow Down” AmazonS3Exception
- select SCM type and URL 用m2e插件从svn导出maven项目
热门文章
- R1 协议:基于以太坊的去中心化交易协议
- XP退役,IE6再见
- 2020 Q3数字资产衍生品交易所行业研究报告 | TokenInsight
- word转PDF空白页的添加与删除
- sizeof()导致的野指针问题,(Xuexi.exe 中)处有未经处理的异常: 0xC0000005: 写入位置 0x0000000F 时发生访问冲突。
- js 非输入框元素获取焦点
- 机械故障诊断02-基于HHT的轴承振动分析
- LittleVGL (LVGL)干货入门教程四之制作和使用中文汉字字库
- 终于就“带宽不足”下了文,并做了强制性国家标准
- Corel Painter 11的余温还没有过呢,Corel Painter 12就发布了,Corel 公司真是太有速度了。小猪我也是刚刚听朋友说Corel Painter 12发布一个月了。Core