arm rootfs定制[通俗易懂]

arm rootfs定制[通俗易懂]最近在做rk3288的OS定制,因此将过程中遇到的问题记录下来。本文主要记录ubuntu18.04rootfs制作过程。参考文档:http://opensource.rock-chips.com/wiki_Distribution1.准备步骤获取ubuntubase18.04.3,路径:http://cdimage.ubuntu.com/ubuntu-base/releases…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

最近在做rk3288的OS定制,因此将过程中遇到的问题记录下来。

本文主要记录ubuntu 18.04 rootfs制作过程。参考文档:http://opensource.rock-chips.com/wiki_Distribution

1.准备步骤

  1. 获取ubuntu base 18.04.3,路径:http://cdimage.ubuntu.com/ubuntu-base/releases/18.04.3/release/ubuntu-base-18.04.3-base-armhf.tar.gz
  2. 解压ubuntu base,命令为:tar -xvpf /path/to/ubuntu-base-armhf -C /path/to/rootfs,其中/path/to/rootfs为解压的目标文件夹,请替换成真实解压路径
  3. 安装qemu模拟器,并将其复制到根文件系统,命令为:sudo apt-get install qemu-user-static; sudo cp /usr/bin/qemu-arm-static /path/to/rootfs/usr/bin/
  4. 复制本地DNS到根文件系统,命令为:cp -b /etc/resolv.conf /path/to/rootfs/etc/resolv.conf
  5. 修改根文件系统apt源,推荐使用中科大的源,参考附录1

2.chroot到根文件系统

命令为:/path/to/ch-mount.sh -m /path/to/rootfs/,注意结尾的反斜杠是必要的。ch-mount.sh脚本内容见附录2。

3.安装软件

此时已经chroot到根文件系统,安装软件耗时会比较久,安装过程中需要进行keyboard layout的配置,主要安装的包包括lubuntu-core和lxde-core,命令如下:

apt-get update
apt install -y lubuntu-core --no-install-recommends
apt install -y lxde-core --no-install-recommends

4.配置和清理

需要添加用户或者安装其余的包的话可以在这一步执行,命令如下:

useradd -s '/bin/bash' -m -G adm,sudo user
#passwd user
#passwd root

#apt-get install xxx or dpkg -i xxx to install other packages

#cleanup
rm -rf /var/lib/apt/lists/*
apt clean

5.退出

在chroot的根文件系统中执行exit命令退出,然后执行命令:/path/to/ch-mount.sh -u /path/to/rootfs/,注意结尾的反斜杠是必要的

6.制作rootfs.img

命令为:/path/to/mkimage.sh /path/to/rootfs rootfs.img,mkimg.sh脚本见附录3

 

附录

附录1. 中科大的apt源:1.sources-18.04.list:

# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic main restricted
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic main restricted

## Major bug fix updates produced after the final release of the
## distribution.
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-updates main restricted
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-updates main restricted

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team. Also, please note that software in universe WILL NOT receive any
## review or updates from the Ubuntu security team.
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-updates universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-updates universe

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team, and may not be under a free licence. Please satisfy yourself as to
## your rights to use the software. Also, please note that software in
## multiverse WILL NOT receive any review or updates from the Ubuntu
## security team.
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic multiverse
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-updates multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-updates multiverse

## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-backports main restricted universe multiverse

## Uncomment the following two lines to add software from Canonical's
## 'partner' repository.
## This software is not part of Ubuntu, but is offered by Canonical and the
## respective vendors as a service to Ubuntu users.
# deb http://archive.canonical.com/ubuntu bionic partner
# deb-src http://archive.canonical.com/ubuntu bionic partner

deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-security main restricted
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-security main restricted
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-security universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-security universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-security multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-security multiverse

附录2. ch-mount.sh脚本:

#!/bin/bash

function mnt() {
    echo "MOUNTING"
    sudo mount -t proc /proc ${2}proc
    sudo mount -t sysfs /sys ${2}sys
    sudo mount -o bind /dev ${2}dev

    sudo chroot ${2}
}

function umnt() {
    echo "UNMOUNTING"
    sudo umount ${2}proc
    sudo umount ${2}sys
    sudo umount ${2}dev

}


if [ "$1" == "-m" ] && [ -n "$2" ] ;
then
    mnt $1 $2
elif [ "$1" == "-u" ] && [ -n "$2" ];
then
    umnt $1 $2
else
    echo ""
    echo "Either 1'st, 2'nd or both parameters were missing"
    echo ""
    echo "1'st parameter can be one of these: -m(mount) OR -u(umount)"
    echo "2'nd parameter is the full path of rootfs directory(with trailing '/')"
    echo ""
    echo "For example: ch-mount -m /media/sdcard/"
    echo ""
    echo 1st parameter : ${1}
    echo 2nd parameter : ${2}
fi

附录3. mkimg.sh脚本:

#!/bin/bash

rootfs_dir=$1
rootfs_file=$2
rootfs_mnt="mnt"

if [ ! $rootfs_dir ] || [ ! $rootfs_file ];
then
        echo "Folder or target is empty."
        exit 0
fi

if [ -f "$rootfs_file" ]; then
    echo "-- Delete exist $rootfs_file ..."
    rm -f "$rootfs_file"
fi

echo "-- Create $rootfs_file ..."
dd if=/dev/zero of="$rootfs_file" bs=1M count=4096
sudo mkfs.ext4 -F -L linuxroot "$rootfs_file"

if [ ! -d "$rootfs_mnt" ]; then
        mkdir $rootfs_mnt
fi

echo "-- Copy data to $rootfs_file ..."
sudo mount $rootfs_file $rootfs_mnt
sudo cp -rfp $rootfs_dir/* $rootfs_mnt
sudo sync
sudo umount $rootfs_mnt
rm -r $rootfs_mnt

echo "-- Resize $rootfs_file ..."
/sbin/e2fsck -p -f "$rootfs_file"
/sbin/resize2fs -M "$rootfs_file"

echo "-- Done."

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/185193.html原文链接:https://javaforall.net

(0)
上一篇 2022年10月6日 下午8:00
下一篇 2022年10月6日 下午8:16


相关推荐

  • Android 一一 简述Android四大组件

    Android 一一 简述Android四大组件Android 四大基本组件 Activity BroadcastRec 广播接收器 ContentProvi 内容提供者 Service 服务 Activity nbsp 应用程序中 一个 Activity 就相当于手机屏幕 它是一种可以包含用户界面的组件 主要用于和用户进行交互 一个应用程序可以包含许多活动 比如事件的点击 一般都会触发一个新的 Activity BroadcastRec

    2026年3月10日
    2
  • POJ1469_COURSES(二部图最大匹配)

    POJ1469_COURSES(二部图最大匹配)

    2022年1月15日
    45
  • dovecot mysql_dovecot+mysql认证问题

    dovecot mysql_dovecot+mysql认证问题本帖最后由 qscf 520 于 2010 08 1114 53 编辑 Aug1114 22 07auth default Info clientin AUTH1PLAINse pop3lip 192 168 1 200rip 123 16 136 30lport 110rport 1645r

    2025年11月21日
    5
  • strictmode android,Android 2.3关于StrictMode使用教程

    strictmode android,Android 2.3关于StrictMode使用教程02-2710:03:56.122:DEBUG/StrictMode(16210):StrictModepolicyviolation;~duration=696ms:android.os.StrictMode$StrictModeDiskReadViolation:policy=23violation=202-2710:03:56.122:DEBUG/StrictMode(162…

    2022年6月10日
    31
  • 软件测试流程及产出物

    软件测试流程及产出物本文目录结构软件测试流程…11      软件项目测试过程…11.1       需求分析…11.2       项目整体计划及评审…11.3       测试用例设计及评审…21.4       测试执行…21.5       测试评估…31.6       产品试用及客户培训…32      软件测试阶段……

    2022年5月21日
    136
  • 软件工程师业绩简要描述(优秀员工工作业绩和自我评价)

    1/9JAVA软件工程师简历自我评价具有很强的团队精神,有良好的组织和协调能力,有强烈的集体荣誉感。自学能力强,喜欢钻研新技术,敢于面对和克服困难。熟练使用spring+struts+hibernate整合开发。熟练使用jsp、servlet、jstl、jdbc下的编程开发。熟练使用eclipseide开发工具,熟练掌握tomcat等web容器以及j2ee容器的配置以及部署,能够使用junit进行…

    2022年4月13日
    378

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号