配置过程

要求本地的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上测试过相关推荐

  1. Ubuntu-Base 18 文件系统 在iMX8平台上的移植

    Ubuntu-Base 18 文件系统 在iMX8平台上的移植 开发板是如下的型号 OKMX8MPX-C V2.0 OKMX8PQ-C开发板 FETMX8MPX-C V1.0 在 飞凌 提供的 ubu ...

  2. 嵌入式中利用ubuntu-base构建根文件系统

    在嵌入式环境中,我们最常用busybox.yocto或buildroot来构建根文件系统,这种情况下,当我们需要使用一些组件的时候,往往需要我们使用源码编译,移植到开发板中.那有没有像ubuntu的文 ...

  3. 【ARM】使用Ubuntu-base构建根文件系统

    使用Buildroot构建根文件系统 介绍 资源下载 配置根文件系统 设置软件源 安装必要软件 添加新用户 设置主机名称和本机IP 设置终端串口 网络DHCP FTP服务器搭建 串口无法登录 开机启动 ...

  4. 通过chroot运行linux,通过chroot构建Linux操作系统

    通过chroot构建Linux操作系统 发布时间:2006-04-14 12:41:48来源:红联作者:翔翔 转贴:出处:天极网 在已有的Linux操作系统中,安装另一个开源操作系统,我们一般是先构建 ...

  5. 基于ubuntu-base构建根文件系统并移植到RK3568开发板

    目录 前言 一.根文件系统是什么? 二.构建根文件系统的方法 1.debootstrap 2.builroot 3.busybox 4.ubuntu-base 三.进入主题--如何使用ubuntu-b ...

  6. 教你用 buildroot 构建根文件系统

    如果想要构建完整的根文件系统,大家一般都是使用buildroot,它不仅包含了 busybox 的功能,而且里面还集成了各种软件,需要什么软件就选择什么软件,不需要我们去移植. 嵌入式系统三大部分:b ...

  7. 构建根文件系统(一)

    接着前边内核移植的文章,记录根文件系统的构建. 这里要用到强大的busybox,我选择的版本是busybox-1.18.5.tar.bz2 ,1.17的也可以:之所以选择这个版本是因为基于现在的交叉编 ...

  8. buildroot构建根文件系统

    buildroot构建根文件系统 一.简介 Buildroot是Linux平台上一个构建嵌入式Linux系统的框架.整个Buildroot是由Makefile脚本和Kconfig配置文件构成的.本文使 ...

  9. Buildroot 构建根文件系统(Jz2440)

    1. Buildroot 简介      Buildroot是Linux平台上一个构建嵌入式Linux系统的框架.整个Buildroot是由Makefile脚本和Kconfig配置文件构成的.你可以和 ...

最新文章

  1. 使用system语句出现不明确问题
  2. 如何将TensorFlow Serving的性能提高超过70%?
  3. SpringMVC注解@initbinder解决类型转换问题
  4. tableau实战系列(二十五)-如何将 R语言与tableau进行结合,实现聚类分析
  5. 望城——民营经济的“旺城”
  6. 数字化时代,阿里、京东们能否解决困扰市场已久的“倒奶问题”?
  7. tomcat的缺少tcnative-1.dll的解决
  8. rs485编程java_串行编程RS485
  9. 自定义工具类:导入工具类测试
  10. python创建函数、可以接受任意多个整数参数并求和_pythonxlwt:求和函数最大参数限制?...
  11. html的post和get请求参数,HTTP 方法:GET 对比 POST | w3cschool菜鸟教程
  12. oracle =1,oracle中的 where 1=1 和where 1 !=1
  13. k8s-自动横向伸缩pod 根据CPU使用率,QPS访问数监控指标
  14. [jQuery原理] jQueryDOM操作相关方法
  15. SeismicUnix:wtlib.c[小波变换库]
  16. IOS 世界标准时间UTC /GMT 转为当前系统时区对应的时间
  17. 锐龙r7 4800h性能怎么样
  18. Python下载与安装,以及下载安装编辑器Geany且通过Geany编辑运行第一个程序Hello world.
  19. EMR 上的 Spark 或 Hive 作业失败并出现 HTTP 503 “Slow Down” AmazonS3Exception
  20. select SCM type and URL 用m2e插件从svn导出maven项目

热门文章

  1. R1 协议:基于以太坊的去中心化交易协议
  2. XP退役,IE6再见
  3. 2020 Q3数字资产衍生品交易所行业研究报告 | TokenInsight
  4. word转PDF空白页的添加与删除
  5. sizeof()导致的野指针问题,(Xuexi.exe 中)处有未经处理的异常: 0xC0000005: 写入位置 0x0000000F 时发生访问冲突。
  6. js 非输入框元素获取焦点
  7. 机械故障诊断02-基于HHT的轴承振动分析
  8. LittleVGL (LVGL)干货入门教程四之制作和使用中文汉字字库
  9. 终于就“带宽不足”下了文,并做了强制性国家标准
  10. Corel Painter 11的余温还没有过呢,Corel Painter 12就发布了,Corel 公司真是太有速度了。小猪我也是刚刚听朋友说Corel Painter 12发布一个月了。Core