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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • vscode html注释快捷键_VSCode 的快捷键及常用插件总结

    vscode html注释快捷键_VSCode 的快捷键及常用插件总结1、注释:·单行注释:ctrl+/,注释后再按取消·取消单行注释:alt+shift+A注释后再按取消2、移动行·向上移动一行:alt+up·向下移动一行:alt+down3、显示/隐藏左侧目录栏·ctrl+b4、复制当前行·向上复制一行:shift+alt+up·向下复制一行:shift+alt+down5、删除当前行·shift+ctrl+k6、控制台显示隐藏…

    2022年6月11日
    96
  • Java走向中国

    Java走向中国             今天,工作之余浏览sun网站的文档中心,惊喜地看到j2se5.0viewchinese!!! 毫不犹豫,先点之而后快。 进入网页: http://gceclub.sun.com.cn/chinese_java_docs.html         虽然只有一个包被翻译了,但不管怎么说,这是一个好的开始!而且更令人高兴的是,这次,j2se5.0版

    2022年7月9日
    19
  • 使用 SCTP 优化网络

    使用 SCTP 优化网络SCTP是在IP网络上使用的一种可靠的通用传输层协议。尽管SCTP协议最初是为发送电话信号而设计的(RFC2960),但带来了一个意外的收获:它通过借鉴UDP的优点解决了TCP的某些局限。SCTP提供的特性使套接字初始化的可用性、可靠性和安全性都得以提高。(图1给出了IP堆栈的层次化架构。)图1.IP栈的层次化架构本文简要介绍了Linux

    2022年6月16日
    33
  • php输出命令_php怎么调用函数

    php输出命令_php怎么调用函数哈尔滨洛弘科技有限公司php执行命令的函数合集

    2022年10月3日
    3
  • 第七章 vShpere新功能之容错(FT)的实现

    第七章 vShpere新功能之容错(FT)的实现

    2021年8月7日
    79
  • 【ThinkingInJava】6、测试自己的输出类库

    【ThinkingInJava】6、测试自己的输出类库/***书本:《ThinkingInJava》*功能:定制工具库,用于System.out.println的简化*文件:Print.java*时间:2014年10月7日19:45:31*作者:cutter_point*/packagenet.mindview.util;importjava.io.*;importjavax.print.attribute.

    2022年7月9日
    24

发表回复

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

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