基于learning armbian step(4) 的总结,我们来实践一下,接下来的会把整个构建的log都贴出来:

vmuser@vmuser-virtual-machine:~/qemu-arm$ sudo apt-get install qemu-user-static

[sudo] password for vmuser:

Reading package lists... Done

Building dependency tree

Reading state information... Done

The following additional packages will be installed:

binfmt-support

The following NEW packages will be installed:

binfmt-support qemu-user-static

0 upgraded, 2 newly installed, 0 to remove and 325 not upgraded.

Need to get 7,753 kB of archives.

After this operation, 86.1 MB of additional disk space will be used.

Do you want to continue? [Y/n] y

Get:1 http://mirrors.aliyun.com/ubuntu xenial/main amd64 binfmt-support amd64 2.1.6-1 [50.7 kB]

Get:2 http://mirrors.aliyun.com/ubuntu xenial-updates/universe amd64 qemu-user-static amd64 1:2.5+dfsg-5ubuntu10.34 [7,702 kB]

Fetched 7,753 kB in 8s (910 kB/s)

Selecting previously unselected package binfmt-support.

(Reading database ... 276761 files and directories currently installed.)

Preparing to unpack .../binfmt-support_2.1.6-1_amd64.deb ...

Unpacking binfmt-support (2.1.6-1) ...

Selecting previously unselected package qemu-user-static.

Preparing to unpack .../qemu-user-static_1%3a2.5+dfsg-5ubuntu10.34_amd64.deb ...

Unpacking qemu-user-static (1:2.5+dfsg-5ubuntu10.34) ...

Processing triggers for systemd (229-4ubuntu21.15) ...

Processing triggers for ureadahead (0.100.0-19) ...

Processing triggers for man-db (2.7.5-1) ...

Setting up binfmt-support (2.1.6-1) ...

Setting up qemu-user-static (1:2.5+dfsg-5ubuntu10.34) ...

Processing triggers for systemd (229-4ubuntu21.15) ...

Processing triggers for ureadahead (0.100.0-19) ...

vmuser@vmuser-virtual-machine:~/qemu-arm$ sudo apt install debootstrap

Reading package lists... Done

Building dependency tree

Reading state information... Done

The following NEW packages will be installed:

debootstrap

0 upgraded, 1 newly installed, 0 to remove and 325 not upgraded.

Need to get 37.2 kB of archives.

After this operation, 262 kB of additional disk space will be used.

Get:1 http://mirrors.aliyun.com/ubuntu xenial-updates/main amd64 debootstrap all 1.0.78+nmu1ubuntu1.6 [37.2 kB]

Fetched 37.2 kB in 0s (357 kB/s)

Selecting previously unselected package debootstrap.

(Reading database ... 276841 files and directories currently installed.)

Preparing to unpack .../debootstrap_1.0.78+nmu1ubuntu1.6_all.deb ...

Unpacking debootstrap (1.0.78+nmu1ubuntu1.6) ...

Processing triggers for man-db (2.7.5-1) ...

Setting up debootstrap (1.0.78+nmu1ubuntu1.6) ...

We can use qemu-debootstrap to building ubuntu rootfs .

vmuser@vmuser-virtual-machine:~/qemu-arm$ sudo qemu-debootstrap --verbose --arch=arm64 --variant=buildd xenial  ubuntu_arm64_xenial  http://mirrors.ustc.edu.cn/ubuntu-ports

[sudo] password for vmuser:

Ok , we get it.

I: Configuring gcc-5...

I: Configuring libstdc++-5-dev:arm64...

I: Configuring gcc...

I: Configuring g++-5...

I: Configuring g++...

I: Configuring build-essential...

I: Configuring libc-bin...

I: Base system installed successfully.

Now we can get the ubuntu rootfs capacity

vmuser@vmuser-virtual-machine:~/qemu-arm$ du -h ubuntu_arm64_xenial/

1.2M         ubuntu_arm64_xenial/var/cache/debconf

12K  ubuntu_arm64_xenial/var/cache/ldconfig

4.0K ubuntu_arm64_xenial/var/cache/apt/archives/partial

54M ubuntu_arm64_xenial/var/cache/apt/archives

54M ubuntu_arm64_xenial/var/cache/apt

55M ubuntu_arm64_xenial/var/cache

4.0K ubuntu_arm64_xenial/var/tmp

68M ubuntu_arm64_xenial/var

318M        ubuntu_arm64_xenial/

If you want to custom your rootfs , your can add build args , qemu-debootstrap will transmit args to debootstrap ,

so learn debootstrap usage, read fonts can help you customization you ubuntu rootfs.

vmuser@vmuser-virtual-machine:~/qemu-arm$ debootstrap --help

Usage: debootstrap [OPTION]... <suite> <target> [<mirror> [<script>]]

Bootstrap a Debian base system into a target directory.

--help                 display this help and exit

--version              display version information and exit

--verbose              don't turn off the output of wget

--download-only        download packages, but don't perform installation

--print-debs           print the packages to be installed, and exit

--arch=A               set the architecture to install (use if no dpkg)

[ --arch=powerpc ]

--include=A,B,C        adds specified names to the list of base packages

--exclude=A,B,C        removes specified packages from the list

--components=A,B,C     use packages from the listed components of the

archive

--variant=X            use variant X of the bootstrap scripts

(currently supported variants: buildd, fakechroot,

scratchbox, minbase)

minbase: 只包含必要的包和apt; 
buildd: 包含编译工具包 
fakechroot: 包含不用root权限的包 
scratchbox: 包含scratchbox(交叉编译工具链)相关包

--keyring=K            check
Release files against keyring K

--no-check-gpg         avoid
checking Release file signatures

--force-check-gpg      force
checking Release file signatures

(also disables
automatic fallback to HTTPS in case

of a missing
keyring), aborting otherwise

--no-resolve-deps      don't try
to resolve dependencies automatically

--unpack-tarball=T     acquire
.debs from a tarball instead of http

--make-tarball=T       download
.debs and create a tarball (tgz format)

--second-stage-target=DIR

Run second stage
in a subdirectory instead of root

(can be used to
create a foreign chroot)

(requires
--second-stage)

--extractor=TYPE       override
automatic .deb extractor selection

(supported: dpkg-deb
ar)

--debian-installer     used for
internal purposes by debian-installer

--private-key=file     read the
private key from file

--certificate=file     use the
client certificate stored in file (PEM)

--no-check-certificate do not check certificate against certificate
authorities

Verify arm64 ubuntu
rootfs:

# cp /usr/bin/qemu-aarch64-static
ubuntu_arm64_xenial/usr/bin/

# mount 
proc ubuntu_arm64_xenial/proc -t proc

# mount 
sysfs ubuntu_arm64_xenial/sys -t sysfs

# cp /etc/hosts
ubuntu_arm64_xenial/etc/hosts

# cp /etc/resolv.conf
ubuntu_arm64_xenial/etc/resolv.conf

# chroot ubuntu_arm64_xenial/

root@vmuser-virtual-machine:/# ls   ---- 》we got it, running arm rootfs in X86 host

bin 
boot  dev  etc 
home  lib  media 
mnt  opt  proc  root  run 
sbin  srv  sys 
tmp  usr  var

root@vmuser-virtual-machine:/# ifconfig

bash: ifconfig: command not found

root@vmuser-virtual-machine:/# apt install net-tools

Reading package lists... Done

Building dependency tree... Done

The following NEW packages will be
installed:

net-tools

0 upgraded, 1 newly installed, 0 to remove
and 0 not upgraded.

Need to get 165 kB of archives.

After this operation, 688 kB of additional
disk space will be used.

Get:1 http://ports.ubuntu.com/ubuntu-ports
xenial/main arm64 net-tools arm64 1.60-26ubuntu1 [165 kB]

Fetched 165 kB in 2s (79.9 kB/s)

perl: warning: Setting locale failed.

perl: warning: Please check that your
locale settings:

LANGUAGE
= "en_US",

LC_ALL
= (unset),

LC_PAPER
= "zh_CN.UTF-8",

LC_NUMERIC
= "zh_CN.UTF-8",

LC_IDENTIFICATION
= "zh_CN.UTF-8",

LC_MEASUREMENT
= "zh_CN.UTF-8",

LC_NAME
= "zh_CN.UTF-8",

LC_TELEPHONE
= "zh_CN.UTF-8",

LC_ADDRESS
= "zh_CN.UTF-8",

LC_MONETARY
= "zh_CN.UTF-8",

LC_TIME
= "zh_CN.UTF-8",

LANG
= "en_US.UTF-8"

are supported and installed on your system.

perl: warning: Falling back to the standard
locale ("C").

debconf: delaying package configuration,
since apt-utils is not installed

E: Can not write log (Is /dev/pts mounted?)
- posix_openpt (2: No such file or directory)

Selecting previously unselected package
net-tools.

(Reading database ... 11949 files and
directories currently installed.)

Preparing to unpack
.../net-tools_1.60-26ubuntu1_arm64.deb ...

Unpacking net-tools (1.60-26ubuntu1) ...

Setting up net-tools (1.60-26ubuntu1) ...

附加如下为构建桌面系统对应的源:

deb http://ports.ubuntu.com/ubuntu-ports/ xenial main restricted
deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial main restricted
deb http://ports.ubuntu.com/ubuntu-ports/ xenial-updates main restricted
deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-updates main restricted
deb http://ports.ubuntu.com/ubuntu-ports/ xenial universe
deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial universe
deb http://ports.ubuntu.com/ubuntu-ports/ xenial-updates universe
deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-updates universe
deb http://ports.ubuntu.com/ubuntu-ports/ xenial-backports main restricted
deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-backports main restricted
deb http://ports.ubuntu.com/ubuntu-ports/ xenial-security main restricted
deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-security main restricted
deb http://ports.ubuntu.com/ubuntu-ports/ xenial-security universe
deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-security universe
deb http://ports.ubuntu.com/ubuntu-ports/ xenial-security multiverse
deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-security multiverse

learning armbian steps(5) ----- armbian 构建arm rootfs的更多相关文章

  1. learning armbian steps(6) ----- armbian 源码分析(一)

    为了深入学习armbian,前面已经学习了如何手动构建arm ubuntu rootfs. 由于armbian官方的文档比较的匮乏,所以最终还是决定通过其编译的过程来深入地学习. 为了快速度深入地学习 ...

  2. learning armbian steps(8) ----- armbian 源码分析(三)

    在lib/main.sh当中 ) == main.sh ]]; then echo "Please use compile.sh to start the build process&quo ...

  3. learning armbian steps(9) ----- armbian 源码分析(四)

    在上一节的分析当中,我们知道是通过对话框来选择到底编译的是哪块板子,基于什么样的配置. 接下来我们来拿一个实例来分析一下具体的案例,我们会选中如下所示的版本 iotx-3 AM335X 1Gb SoC ...

  4. learning armbian steps(3) ----- armbian 文件系统定制思路

    如何定制自已的armbian文件系统. 1)uboot 2)  kernel 3)  rootfs 针对linux 系统开发人员来说,真正有用的只是其armbian文件系统, 将其制作成所需的文件系统 ...

  5. learning armbian steps(7) ----- armbian 源码分析(二)

    从compile.sh开始入手: SRC="$(dirname "$(realpath "${BASH_SOURCE}")")" # fal ...

  6. learning armbian steps(2) ----- armbian 镜像编译

    参考:https://docs.armbian.com/Developer-Guide_Build-Preparation/ 通过如下指令进行编译: apt-get -y -qq install gi ...

  7. learning armbian steps(1) ----- armbian 入门知识基础学习

    第一问: armbian是什么? Armbian是轻量级的Debian系统和为ARM开发板专门发行并重新编译的Ubuntu系统. 第二问:  什么场景下会用到armbian系统? 一个带有arm编译器 ...

  8. learning armbian steps(4) ----- armbian 技术内幕

    在学习新的框架之前,肯定有一个原型机,通过最普通的指令来实现其功能. 做到这一点之后,所有的东西都不在是秘密,缺的时间进行系统深入的学习. 其实可以自已先来手动构建一个原生的arm 文件系统,基于qe ...

  9. 构建 ARM Linux 4.7.3 嵌入式开发环境 —— U-BOOT 引导 Kernel

    经过若干天的反复测试,搜索.终于成功利用 Qemu 在 u-boot 下引导 ARM Linux 4.7.3 内核.如下详细解释整个构建过程. 准备环境 运行环境:Ubuntu 16.04 需要的虚拟 ...

随机推荐

  1. Python之系统编程笔记

    概念 命令行工具. Shell 脚本.  系统管理 系统模块 sys   提供一组功能映射Python运行时的操作系统 os    提供跨平台可移植的操作系统编程接口   os.path 提供文件及目 ...

  2. go 数组的定义和赋值

    package main import "fmt" func main() {     //字符数组定义     var str [2]string     str[0] = &q ...

  3. PHP的 parse_ini_file 解析配置文件

    解析配置文件: parse_ini_file 类似解析php.ini文件样 配置文件内容如下: Example #1 sample.ini 的内容 ; This is a sample configu ...

  4. win10系统ping另一台电脑上虚拟机的IP

    刚刚因为虚拟机与主机没法互相ping通的事情,奋战到将近凌晨一点.现在把这个过程总结一下,以方便后加入该行业的广大IT精英. VMWare提供了三种工作模式:bridged(桥接模式).NAT(网络地 ...

  5. (五)mybatis之一对一关系

    一.需求分析 需求:查询订单信息关联查询用户信息 分析:一条订单只能由一个消费者来下单,也就是说从订单的角度来说与消费者是一对一的关系. 二.建数据库表和实体对象 其中订单表中的字段user_id对应 ...

  6. (六)Redis之数据结构之sorted-set

    一.常用方法 Sorted-Set和Set的区别 Sorted-Set中的成员在集合中的位置是有序的 添加元素 获得元素 删除元素 范围查询 1和2和3和4 添加/获得/删除元素/范围查询 packa ...

  7. Sublime Text 添加C/C++环境

    轻巧便捷的sublime text 3代码编辑功能非常强大,不过作为一款代码编辑软件,我们要是让它能把我们的c或者c++代码run起来,变成一个轻量级编译器那就更好了!今天来给大家说一下怎么在subl ...

  8. XML-RPC-2RPC

    远程过程调用协议 RPC一般指远程过程调用协议 RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议.RPC协 ...

  9. React/react相关小结

    React React组件由React元素组成,React组件使用React.Component或React.PureComponent来生成:React元素使用JSX的语法来编写或使用React.c ...

  10. Vivado Bit文件压缩

    前言 Vivado编译生成的Bit文件太大,想要小一点该咋办呢?那么就需要给bit文件瘦身. 流程 直接在约束文件xdc中添加下述语句即可: set_property BITSTREAM.GENERA ...