嵌入式linux shadow文件,04.嵌入式Linux文件系统

1.文件系统的一般定义是

负责管理和存储文件信息的软件系统

2.文件系统的功能

1.负责存储器中文件的组织和分配

2.提高对存储器资源的利用效率

3.将文件的存取、共享、和保护等功能提供给操作系统和用户

4.简化用户对文件的各项操作

5.保证在多用户环境下文件的安全性和一致性

文件系统是操作系统的重要组成部分,是实现文件多元化管理的必要条件。

3.虚拟文件系统

为了对各类文件系统进行统一管理,Linux引入了虚拟文件系统--VFS(Virtual File System), 为各类文件系统提供统一的操作界面和应用编程接口。

VFS并不是一种实际的文件系统, 它是物理文件系统与服务之间的一个接口层

VFS只存在于内存中, 不存在于任何外存空间

VFS在系统启动时建立, 在系统关闭时消亡

4.Linux根文件系统标准目录

df90f5fbad4b

QQ截图20181024111933.png

5.使用busybox制作跟文件系统

0.准备工具

0.0. busybox-1.29.3:或选用其他版本的 busybox,大同小异

0.1. 下载地址:http://www.busybox.net/

0.2. 交叉编译器安装:sudo apt-get install gcc-arm-linux-gnueabihf

1.构建目录结构

1.0. 创建根文件系统目录,主要包括以下目录:

/dev /etc /lib /usr /var /proc /tmp /home /root /mnt /bin

/sbin /opt /sys /media

1.1. 命令:

mkdir $HOME/rootfs

cd $HOME/rootfs

mkdir dev etc lib usr var proc tmp home root mnt bin sbin opt sys media

*rootfs目录位置可根据自己实际需求放置,只要保证路径中国无中文字符与特殊字符即可*

2.使用busybox构建 /bin /sbin linuxrc

2.1. 解压busybox

tar -jxvf busybox-x.xx.x.tar.bz2

cd busybox-x.xx.x/

2.2. 使用busybox的默认配置

make defconfig

*使用默认配置 busybox,大部分的命令都会被选中*

make menuconfig

*如果此过程中出错多半是因为加载库文件失败导致, 使用命令sudo apt-get install libncurses5-dev 安装ncurses5即可*

进入Settings ---> 找到 ---Build Options

选中Build static binary (no shared libs)

选中Cross compiler prefix,设置交叉编译前缀为 arm-linux-gnueabihf-

向下滑动找到 ---Library Tuning

选中Username completion

选中Fancy shell prompts

选中Query cursor position from terminal

按左右键选中Exit退出到最后一层,选择Save Configuration to an Alternate File保存

最后选择Exit退出界面

2.3.make

2.4.make install

2.5.完成在 busybox 目录下会看见 _install 目录,里面有 bin sbin usr linuxrc 四个文件与目录,

将这三个目录或文件拷到第 1 步所建的 rootfs 文件夹下,

命令:cp bin sbin usr linuxrc $HOME/rootfs -rfav

*-a 的参数必不可少,因为 bin sbin 里面的命令大多是到 busybox 的动态链接,

如果不加-a 则拷贝过程中会自动将每个命令复制一份*

**************************************************************************

* 到这里就实现了跟文件系统的基本工作,文件系统就可以正常使用了 *

**************************************************************************

3.构建 /lib 目录

进入 /usr/arm-linux-gnueabihf/lib/ 目录,将以下动态库拷贝到$HOME/rootfs/lib 下

命令:cp *so* $HOME/rootfs/lib -av

4.构建 /etc 目录

4.1./etc 目录下最重要的四个文件

inittab:用来作为 linuxrc 的配置脚本。

init.d/rcS:inittab 启动的第一个脚本,一般用来挂载系统必需的文件系统,必要的设备连接,设置 IP 地址,启动其他脚本等。默认仅有 mount –a

fstab:执行 mount –a 时,按照此文件挂载文件系统。

profile:登陆完 shell 后自动执行此脚本,一般用来配置用户的登录环境。

4.2.进入根文件系统 rootfs 的 etc 目录,执行如下操作:

拷贝 Busybox 目录下 examples/bootfloopy/etc/ 下的所有文件到当前目录下,以此为模板构建我们的根文件系统。

命令:cd $HOME/rootfs/etc

cp -rv ../../busybox-1.29.3/examples/bootfloppy/etc/ * .

4.3.修改 inittab

inittab 的作用及格式请参考其他说明

删除第三行代码:tty2::askfirst:-/bin/sh

命令:vi inittab

将第三行删除或者在本行最前面加一个#将其注释

4.4.修改 init.d/rcS 文件

init 进程通过 inittab 启动的第一个进程为此脚本,我们需要做以下修改:

命令:vi init.d/rcS 或 gedit init.d/rcS

将下列信息覆盖到打开的文件中

#! /bin/sh

#1.根据 fstab 配置文件挂载相应的文件系统

/bin/mount -a

#2.配置 telnetd 服务器的时候需要以下文件夹及文件系统

/bin/mkdir -p /dev/pts

/bin/mkdir -p /dev/shm

/bin/mount -t devpts devpts /dev/pts

/bin/mount -t tmpfs tmpfs /dev/shm

#3.启动需要以下文件夹

/bin/mkdir /var/tmp

/bin/mkdir /var/modules

/bin/mkdir /var/run

/bin/mkdir /var/log

#4.在 lib 下创建相应文件夹(与当前内核版本相同) ,为驱动模块加载作准备

if ! [ -d /lib/modules ]; then

mkdir /lib/modules

fi

if ! [ -d /lib/modules/$(uname -r) ]; then

mkdir /lib/modules/$(uname -r)

fi

#5.自动在/dev 下创建设备节点

/sbin/mdev -s

5.修改 fstab 文件,将一下内容替换源文件fstab 中的内容

#device mount-point type options dump fask order

proc /proc proc defaults 0 0

ramfs /var ramfs defaults 0 0

ramfs /tmp ramfs defaults 0 0

none /sys sysfs defaults 0 0

none /dev ramfs defaults 0 0

6.修改 profile,将一下内容填写到profile的第五行位置

#1.初始化 PATH 环境变量及动态链接库路径

export PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib:/usr/lib

#2.初始化主机名以及当前工作路径

/bin/hostname TechManZhang

USER="`id -un`"

LOGNAME=$USER

HOSTNAME='/bin/hostname'

PS1='[\u@\h \W]# '

6.用户名、密码文件构建(这步可以不做,一般开发板都不带密码)

拷贝虚拟机上的/etc/passwd, /etc/group, /etc/shadow 到 rootfs/etc 下。

命令:

cp /etc/passwd $HOME/rootfs/etc

cp /etc/group $HOME/rootfs/etc

cp /etc/shadow $HOME/ rootfs/etc

对以下三个文件修改,只保存与 root 相关的项(每个文件的第一行)只保留 passwd 第一行,为:

root:x:0:0:root:/root:/bin/sh

(而且最后改成/bin/ash,PC 使用 bash 作为默认 shell,嵌入式系统不支持 bash,这里改为 sh 或 ash)只保留 group 第一行,为:

root:x:0:root

只保留 shadow 第一行,为:

root:$1$x9yv1WlB$abJ2v9jOlOc9xW/y0QwPs.:14034:0:99999:7:::

(注意这个值不一定一样,各人密码不一样,这个值也不一样,这个的密码是六个1:111111)这个文件在本地登录或者 ftp、telnet 登录时起作用打开/etc/inittab

把第二行:::respawn:-/bin/sh

改为::respawn:-/bin/login //登录时需要用户名、密码验证

这样,以后登陆开发板时需输入用户名密码,同虚拟机相同

登陆后可以通过 passwd 命令修改密码或通过 adduser 增加新用户

至此,根文件系统制作完毕

6.根文件系统验证及镜像制作

验证根文件系统主要有两种方式:

1.通过 Nfs 启动根文件系统验证

2.制作镜像烧写到开发板中验证

6.1.nfs 启动根文件系统

网络文件系统是 FreeBSD 支持的文件系统中的一种, 也被称为 NFS。 NFS允许一个系统在网络上与他人共享目录和文件。通过使用 NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件。

在 u-boot 的配置界面按照以下格式,可设置 nfs 启动系统。

模板:

setenv bootargs ‘noinitrd root=/dev/nfs nfsroot=(虚拟机路径),rsize=1024,wsize=1024 ip=(开发板 iP):(服务器 ip):(网关):255.255.255.0::eth0:off init=/linuxrc console=ttySAC0,115200’

注:服务器 ip 一般是虚拟机 ip

例子:

setenv bootargs ‘noinitrd root=/dev/nfs nfsroot=/home/zhang/MyShare/04_day/rootfs_test_2,rsize=1024,wsize=1024 ip=10.0.108.117:10.0.108.229:10.0.108.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0 , 115200’

saveenv

如果想恢复本机 emmc 启动,请输入:

setenv bootargs 'noinitrd root=/root=/dev/mmcblk0p2 rwrootfstype=ext4 init=/linuxrc lcd=wy070ml tp=gslx680'

saveenv

6.2.制作文件系统镜像

用 make_ext4fs 制作 ext4 文件系统镜像

tar xvf mkfs_ext4.tar.gz

cp make_ext4fs /bin/make_ext4fs

sudo chmod 777 $HOME/rootfs/ -R

制作 ext4 镜像

make_ext4fs -s -l 314572800 -a root -L linux gtk.img /home/edu/rootfs

以下是对提供的参考资料的总结,按照要求结构化多个要点分条输出: 4G/5G无线网络优化与网规案例分析: NSA站点下终端掉4G问题:部分用户反馈NSA终端频繁掉4G,主要因终端主动发起SCGfail导致。分析显示,在信号较好的环境下,终端可能因节能、过热保护等原因主动释放连接。解决方案建议终端侧进行分析处理,尝试关闭节电开关等。 RSSI算法识别天馈遮挡:通过计算RSSI平均值及差值识别天馈遮挡,差值大于3dB则认定有遮挡。不同设备分组规则不同,如64T和32T。此方法可有效帮助现场人员识别因环境变化引起的网络问题。 5G 160M组网小区CA不生效:某5G站点开启100M+60M CA功能后,测试发现UE无法正常使用CA功能。问题原因在于CA频点集标识配置错误,修正后测试正常。 5G网络优化与策略: CCE映射方式优化:针对诺基亚站点覆盖农村区域,通过优化CCE资源映射方式(交织、非交织),提升RRC连接建立成功率和无线接通率。非交织方式相比交织方式有显著提升。 5G AAU两扇区组网:与三扇区组网相比,AAU两扇区组网在RSRP、SINR、下载速率和上传速率上表现不同,需根据具体场景选择适合的组网方式。 5G语音解决方案:包括沿用4G语音解决方案、EPS Fallback方案和VoNR方案。不同方案适用于不同的5G组网策略,如NSA和SA,并影响语音连续性和网络覆盖。 4G网络优化与资源利用: 4G室分设备利旧:面对4G网络投资压减与资源需求矛盾,提出利旧多维度调优策略,包括资源整合、统筹调配既有资源,以满足新增需求和提质增效。 宏站RRU设备1托N射灯:针对5G深度覆盖需求,研究使用宏站AAU结合1托N射灯方案,快速便捷地开通5G站点,提升深度覆盖能力。 基站与流程管理: 爱立信LTE基站邻区添加流程:未提供具体内容,但通常涉及邻区规划、参数配置、测试验证等步骤,以确保基站间顺畅切换和覆盖连续性。 网络规划与策略: 新高铁跨海大桥覆盖方案试点:虽未提供详细内容,但可推测涉及高铁跨海大桥区域的4G/5G网络覆盖规划,需考虑信号穿透、移动性管理、网络容量等因素。 总结: 提供的参考资料涵盖了4G/5G无线网络优化、网规案例分析、网络优化策略、资源利用、基站管理等多个方面。 通过具体案例分析,展示了无线网络优化中的常见问题及解决方案,如NSA终端掉4G、RSSI识别天馈遮挡、CA不生效等。 强调了5G网络优化与策略的重要性,包括CCE映射方式优化、5G语音解决方案、AAU扇区组网选择等。 提出了4G网络优化与资源利用的策略,如室分设备利旧、宏站RRU设备1托N射灯等。 基站与流程管理方面,提到了爱立信LTE基站邻区添加流程,但未给出具体细节。 新高铁跨海大桥覆盖方案试点展示了特殊场景下的网络规划需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值