1. 设置root密码

 

2. 取消开机输入用户名密码

 

3. 优化rootfs的大小

此段参考链接

【分享】优化rootfs的大小 - HankFu - 博客园 (cnblogs.com)

3.1 介绍

解压rootfs.cpio.gz,得到rootfs.cpio,再解压,得到就是rootfs的实际文件

3.2 检查目录大小

使用du命令,可以检查各个文件夹的大小。

du --max-depth=1 -h查看一级目录的文件夹大小

xlx@u16:~/temp$ du --max-depth=1 -h

17M       ./usr

4.0K       ./run

4.0K       ./dev

4.0K       ./tmp

4.0K       ./mnt

6.4M      ./lib

4.0K       ./media

4.0K       ./sys

52K ./var

2.9M      ./bin

2.0M      ./sbin

800K      ./etc

4.0K       ./proc

4.0K       ./boot

20K ./home

29M      

du --max-depth=2 -h | grep [0-9]M查看二级目录,并且只看大于等于1M的

xlx@u16:~/temp $ du --max-depth=2 -h | grep [0-9]M

7.7M      ./usr/lib

3.3M      ./usr/bin

3.2M      ./usr/sbin

2.4M      ./usr/share

17M       ./usr

2.0M      ./lib/modules

6.4M      ./lib

2.9M      ./bin

2.0M      ./sbin

29M      

3.3 检查文件大小

目录大小有助于粗略的分析根文件系统大小。要找到真正的原因,并找到减小根文件系统大小,需要分析文件大小。使用find命令,找到文件,再使用ls命令,查看文件大小;最后使用grep命令过滤出大文件。

find | xargs -n 1 ls -l -h | grep [0-9]M

xlx@u16~/temp$ find | xargs -n 1 ls -l -h | grep [0-9]M

total 6.8M

-rwxr-xr-x 1 xlx xlx 2.5M 5月  27 14:04 libcrypto.so.1.1

-rwxr-xr-x 1 xlx xlx 1.8M 5月  27 14:02 libstdc++.so.6.0.27

-rwxr-xr-x 1 xlx xlx 2.5M 5月  27 14:04 ./usr/lib/libcrypto.so.1.1

-rwxr-xr-x 1 xlx xlx 1.8M 5月  27 14:02 ./usr/lib/libstdc++.so.6.0.27

total 3.3M

-rwxr-xr-x 1 xlx xlx 1.1M 9月  16 16:36 ctrlsw_encoder

-rwxr-xr-x 1 xlx xlx 1.1M 9月  16 16:36 ./usr/bin/ctrlsw_encoder

total 3.2M

total 3.5M

-rwxr-xr-x 1 xlx xlx 1.4M 5月  27 13:58 libc-2.30.so

-rwxr-xr-x 1 xlx xlx 1.4M 5月  27 13:58 ./lib/libc-2.30.so

total 2.9M

-rwxr-xr-x 1 xlx xlx 1.2M 5月  27 14:07 bash.bash

-rwxr-xr-x 1 xlx xlx 1.6M 5月  27 14:09 busybox

-rwxr-xr-x 1 xlx xlx 1.6M 5月  27 14:09 ./bin/busybox

-rwxr-xr-x 1 xlx xlx 1.2M 5月  27 14:07 ./bin/bash.bash

total 2.0M

3.4 去掉不必要文件。

根据上述找到的大文件,禁止不使用的软件包,就能减小根文件系统大小。

比如,在petalinux工程中,禁止下列软件包后,rootfs.cpio.gz从114MB,减小到16.4MB。下列内容是从project-spec/configs/rootfs_config提取的。

# CONFIG_gdb is not set

# CONFIG_gdbserver is not set

# CONFIG_kernel-module-hdmi is not set

# CONFIG_packagegroup-core-x11 is not set

# CONFIG_packagegroup-petalinux-audio is not set

# CONFIG_packagegroup-petalinux-gstreamer is not set

# CONFIG_packagegroup-petalinux-matchbox is not set

# CONFIG_packagegroup-petalinux-qt is not set

# packagegroup-petalinux-v4lutils

# CONFIG_packagegroup-petalinux-v4lutils is not set

# CONFIG_packagegroup-petalinux-x11 is not set

# CONFIG_trd-init is not set

# CONFIG_vcu-gst-app is not set

# CONFIG_custom-edid is not set

# CONFIG_gst-shark is not set

# CONFIG_gstreamer-vcu-examples is not set

# CONFIG_vcu-qt is not set

4. rootfs设置开机自启动

4.1 基本介绍

嵌入式系统里不同的rootfs系统实现方式不同,需要根据实际情况调整

方法1:

/etc/profile

方法2:

/etc/init.d/rcS

/etc/rc0.d

注意命令一定要后台运行,不能后台运行的加&

前台运行会阻塞登录界面,导致调试串口无法登录

/etc/rc.d/rc.local

并非所有的发行版都使用了rc.local

4.2 init.d方式介绍

/etc/init.d/rcS

/etc/rcX.d 对应的运行级别

运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动

运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆

运行级别2:多用户状态(没有NFS)

运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式

运行级别4:系统未使用,保留

运行级别5:X11控制台,登陆后进入图形GUI模式

运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动

查看运行级别用:

runlevel

进入其它运行级别用:

(sudo) init N

init 0为关机,init 6为重启系统

 /etc/rc.d/rc0.d~/etc/rc.d/rc6.d这些文件夹分别包含每个运行等级对应的init脚本。

在实际使用中,一般通过符号链接到/etc/init.d文件夹下的实际文件

这些文件夹下的init脚本都有一些特别的名字,

命名都以S(start)、K(kill)或D(disable)开头,后面跟一个数字

Logo

更多推荐