首页 > 其他分享 >Hi3798MV200 恩兔N2 NS-1 (四): 制作 Debian rootfs

Hi3798MV200 恩兔N2 NS-1 (四): 制作 Debian rootfs

时间:2023-08-07 21:12:51浏览次数:47  
标签:sudo modules 恩兔 apt etc free Hi3798MV200 N2 rootfs

目录

关于 Debian rootfs

Debian 没有像 Ubuntu 提供 Ubuntu-Base 那样提供打包好的 rootfs, 但是 Debian 提供了一个制作 rootfs 的工具 debootstrap. 以下介绍使用 debootstrap 制作 Debian rootfs 的过程.

debootstrap 初始化一阶段

安装 debootstrap

sudo apt install 安装 debootstrap

准备一个工作目录, 例如 workroot, 初始化. 注意一定要加 mirror, 否则会非常慢

sudo debootstrap --arch=arm64 --foreign buster workroot/ http://mirrors.ustc.edu.cn/debian/

复制 qemu-aarch64-static 到目标系统, 如果没有的话要先安装一下sudo apt install qemu-user-static

sudo cp /usr/bin/qemu-aarch64-static workroot/usr/bin/

检查一下是否能正常执行

sudo chroot workroot/ /usr/bin/qemu-aarch64-static /bin/ls

准备 resolv.conf

echo "nameserver 127.0.0.53" | sudo tee workroot/etc/resolv.conf

debootstrap 初始化二阶段

chroot 到目标系统下

sudo chroot workroot/

第二阶段的初始化

/debootstrap/debootstrap --second-stage http://mirrors.ustc.edu.cn/debian/ 

初始化成功的话, 能看到I: Base system installed successfully

安装设置

安装基础软件

添加 Debian apt source

cat <<EOT > /etc/apt/sources.list
# 依次输入以下内容
deb http://mirrors.ustc.edu.cn/debian buster main contrib non-free
deb-src http://mirrors.ustc.edu.cn/debian buster main contrib non-free
deb http://mirrors.ustc.edu.cn/debian-security/ buster/updates main contrib non-free
deb-src http://mirrors.ustc.edu.cn/debian-security/ buster/updates main contrib non-free
deb http://mirrors.ustc.edu.cn/debian buster-updates main contrib non-free
deb-src http://mirrors.ustc.edu.cn/debian buster-updates main contrib non-free
EOT

检查是否正确

cat /etc/apt/sources.list

最后执行 apt update 更新, apt upgrade 升级

安装一些基础软件, 这一步之后系统大小为 434M

apt install locales dialog

配置 locales, 选择 en_US.UTF-8 UTF-8, en_US.UTF-8

dpkg-reconfigure locales

继续安装一些软件

apt install vim-tiny openssh-server sudo ifupdown net-tools udev iputils-ping sysstat smartmontools

添加驱动文件

仅使用kernel自带的驱动可以启动rootfs, 但是一些板载的外设, 例如SATA硬盘和USB, 会因为没有驱动而无法识别. 需要手动将这些驱动放到rootfs中.

通过uname -r可以看到目标系统的架构为4.4.35-hi3798mv2x, 由此可以确定驱动的路径为

/lib/modules/4.4.35-hi3798mv2x/

将系统中这部分文件提取后放到rootfs的对应目录下, 结构类似于

modules
└── 4.4.35-hi3798mv2x
    ├── kernel
    │   ├── crypto
    │   ├── drivers
    │   ├── fs
    │   ├── lib
    │   └── net
    ├── modules.alias
    ├── modules.alias.bin
    ├── modules.builtin
    ├── modules.builtin.alias.bin
    ├── modules.builtin.bin
    ├── modules.dep
    ├── modules.dep.bin
    ├── modules.devname
    ├── modules.order
    ├── modules.softdep
    ├── modules.symbols
    └── modules.symbols.bin

基础设置

设置主机名

echo n2ns1 > /etc/hostname

设置网络

cat << EOT > /etc/network/interfaces.d/10-eth0
# 依次输入
auto eth0
iface eth0 inet dhcp
EOT

设置 vim

nano /etc/vim/vimrc.tiny

# 修改compatible为nocompatible
set nocompatible
# 增加这行修复backspace键
set backspace=2

重要 给 root 用户设置密码, 否则刷完没法登录

passwd

开启 root 用户 ssh 访问, 编辑 /etc/ssh/sshd_config, 找到

#PermitRootLogin prohibit-password

替换为

PermitRootLogin yes

配置登录的串口, 修改文件 /etc/systemd/system/getty.target.wants/[email protected]

vi /etc/systemd/system/getty.target.wants/getty\@tty1.service

ConditionPathExists=/dev/tty0

修改为实际的名称

ConditionPathExists=/dev/ttyAMA0

添加欢迎界面, 新建 /etc/update-motd.d/60-welcome, 内容如下, 属性设为可执行

#!/bin/sh
#
IP=$(ifconfig eth0 | grep '\<inet\>'| grep -v '127.0.0.1' | awk '{print $2}' | awk 'NR==1')
DEVICE=$(dmesg 2> /dev/null | grep "CPU: hi3798" | awk -F ':[ ]' '/CPU/{printf ($2)}')
[ ! "$DEVICE" ] && DEVICE=$(head -n 1 /etc/regname 2> /null)
echo "
   Board   : ${DEVICE}
   Module  : $(egrep -oa "hi3798.+reg" /dev/mmcblk0p1| cut -d '_' -f1 | sort | uniq | tr "\\n" ",")
   CPU     : $(cat -v /proc/device-tree/compatible |sed 's/\^@//g') @ $(cat /proc/cpuinfo | grep "processor" | sort | uniq | wc -l) cores
   Version : $(awk -F '[= "]' '/PRETTY_NAME/{print $3,$4,$5}' /etc/os-release) | $(uname -r)-$(getconf LONG_BIT)bit
   Storage : $(df -m / | grep -v File | awk '{a=$4*100.0/$2;b=$4;c=$2} {printf("%.1f%% free, %.1fMiB of %.1fMiB\n",a,b,c)}')
   Memory  : $(free -m | grep Mem | awk '{a=$7*100.0/$2;b=$2} {printf("%.1f%% free, %.1fMiB total\n",a,b)}') | Swap:$(free -m | grep Swap | awk '{a=$4*100/$2;b=$4} {printf("%.1f%% %.1fMiB\n",a,b)}')
   Up Time : $(awk '{a=$1/86400;b=($1%86400)/3600;c=($1%3600)/60;d=($1%60)} {printf("%d days %02d:%02d:%02d\n",a,b,c,d)}' /proc/uptime)
   IP Addr : $IP
   Temp    : $(grep Tsensor /proc/msp/pm_cpu | awk '{print $4}')°C
   MAC     : $(ifconfig eth0 |grep "ether"| awk '{print $2}')
"

文件清理

安装完成后, 清理apt

apt autoremove
apt autoclean
apt clean

最后exit退出

制作 rootfs 镜像文件

# 生成一个适当大小的空镜像,这个大小参考du -h workroot/ -d1
dd if=/dev/zero of=rootfs.img bs=1M count=1024
# 格式化 
mkfs.ext4 rootfs.img
# or
mkfs -t ext4 rootfs.img
# 挂载空镜像
mkdir rootfs
sudo mount rootfs.img rootfs/
# 写入文件, 保留权限
sudo cp -rfp workroot/* rootfs/
# 取消挂载
sudo umount rootfs/
# 检查文件系统并自动修复
e2fsck -p -f rootfs.img
# 使镜像紧凑
resize2fs -M rootfs.img

参考

标签:sudo,modules,恩兔,apt,etc,free,Hi3798MV200,N2,rootfs
From: https://www.cnblogs.com/milton/p/17607702.html

相关文章

  • AP5126 DC-DC降压恒流 LED摩托电动汽车灯IC 同款LN2576/LN2556
    产品描述 AP5126是一款PWM工作模式,高效率、外围简单、内置功率管,适用于12-80V输入的高精度降压LED恒流驱动芯片。输出最大功率可达15W,最大电流1.2A。AP5126可实现全亮/半亮功能切换,通过MODE切换:全亮/半亮/循环模式。AP5126工作频率固定在140KHZ,同时内置抖频电......
  • ThinkPad P15vGen2 拆解评析
    ThinkPadP15vGen2拆解评析夜之子  5人赞同了该文章准备工具:3.0规格十字螺丝刀、塑料撬棒。1.用螺丝刀拧下后盖全部螺丝,从CD面接缝处用撬棒划开即可打开后盖。注:后盖螺丝均为防脱设计,拧松即可。2.内部全貌。3.内存、硬盘对应位置均有黑色麦拉......
  • Hi3798MV200 恩兔N2 NS-1 (三): 制作 Ubuntu rootfs
    目录Hi3798MV200恩兔N2NS-1(一):设备介绍和刷机说明Hi3798MV200恩兔N2NS-1(二):HiNAS海纳思使用和修改Hi3798MV200恩兔N2NS-1(三):制作UbunturootfsHi3798MV200恩兔N2NS-1(四):制作Debianrootfs关于根文件系统rootfs在Linux中,所有的文件和目录被......
  • json2yolo
    json2yolo脚本yolo所对应的格式是.txt,其中包含框的类别索引,中心点坐标,boundingboxs的宽,高。importjsonimportos#由x1,y1,x2,y2---->Cx,Cy,W,H相对位置(取值范围0-1)name2id={'person':0,'mask':1}#写好自己的类别和标签defconvert(img_size,box):......
  • origin软件下载 origin2022最新中文版下载 官方版特色
    origin官方版是款由originlab公司为用户们打造的函数绘图制图工具。origin拥有强大的数据导入功能,支持多种格式的数据,包括ASCII、Excel、NITDM、DIADem、NetCDF、SPC等。origin既可以满足一般用户的映射需求,也可以满足高级用户数据分析和功能拟合的需求。软件地址:看置顶贴Origin软......
  • ID软件下载Adobe InDesign2023安装包+教程(全版本) 官方版特色
    InDesignCC2020中文版是一款适合页面设计时使用的专业高效的页面排版设计工具,InDesignCC2020中文版功能强劲,能够帮助用户快速完美地控制设计在印刷样式中的各个像素,InDesignCC2020软件操作非常简便,可让您建立精美且吸引人的成果,将其用于印刷或显示在画面中。软件地址:看置顶贴......
  • Spring源码分析(五) MappingJackson2HttpMessageConverter
    大家用过springmvc的肯定都用过@RequestBody和@ResponseBody注解吧,你了解这个的原理吗?这篇文章我们就来说下它是怎么实现json转换的。首先来看一个类RequestResponseBodyMethodProcessor,这个类继承了AbstractMessageConverterMethodProcessor,我们来看看这个类的构造方法protec......
  • min25筛学习笔记
    min25筛min25筛用于求一类数论函数的前缀和,适用于函数在素数处的取值可以用一个关于此素数的多项式来表示的数论函数。处理质数部分这部分我们需要解决\(\sum\limits_{p\subseteqprime}f(p)\),这里简单起见,假设\(f(p)=p^t\)用\(s_i\)表示前\(i\)个质数之和,用\(LPF_i\)表示\(i......
  • 防干扰/抗电压波动双按键/2路触摸触控芯片VK36N2D SOP8 适用于厨房秤/温控器/加湿器等
    概述:VK36N2DSOP8具有2个触摸按键,可用来检测外部触摸按键上人手的触摸动作。该芯片具有较高的集成度,仅需极少的外部组件便可实现触摸按键的检测。提供了2个1对1输出脚,可通过IO脚选择上电输出电平,有直接输出和锁存输出2个型号可选。芯片内部采用特殊的集成电路,具有高电源电压抑制比......
  • MappingJackson2HttpMessageConverter数据处理
    主键用的雪花算法,值域超过了js的范围……后端返回的日期字段总不是我想要的格式……空值的字段就不要返回了,省点流量吧……试试换成自己的MappingJackson2HttpMessageConverter呗Talkischeap,showyouthecode!importcom.fasterxml.jackson.annotation.JsonInclude;importco......