Petalinux快速入门向导 (10) 第九章.rootfs常见问题
设置root密码2.取消开机输入用户名密码3.优化rootfs的大小此段参考链接【分享】优化rootfs的大小 - HankFu - 博客园 (cnblogs.com)3.1介绍解压rootfs.cpio.gz,得到rootfs.cpio,再解压,得到就是rootfs的实际文件3.2检查目录大小使用du命令,可以检查各个文件夹的大小。du --max-depth=1 -h查看一级目录的文件夹大小x
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.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)开头,后面跟一个数字
更多推荐
所有评论(0)