1、什么是根文件系统
rootfs是linux内核启动后,挂载的第一个文件系统。rootfs不是一个可执行程序,而是一个文件包,这个文件包中,有应用程序、shell命令、动态库、配置文件、设备文件、多媒体文件、…
挂载完rootfs,再挂载其他的文件系统。
例、挂载U盘
注意:在linux内核中,已经有u盘的驱动:USB的主机驱动、USB mass storage、fat文件系统
root@GEC6818 /]#cat /proc/partitions —->查找linux系统的块设备
major minor #blocks name
179 0 7634944 mmcblk0 ——>eMMC电子硬盘:存放u-boot、kernel、rootfs
179 1 65536 mmcblk0p1
179 2 772096 mmcblk0p2
179 3 438272 mmcblk0p3
179 4 1 mmcblk0p4
179 5 8192 mmcblk0p5
179 6 22528 mmcblk0p6
179 7 6324224 mmcblk0p7
179 16 4096 mmcblk0boot1
179 8 4096 mmcblk0boot0
8 0 1956864 sda —–>U盘
8 1 1802240 sda1
[root@GEC6818 /]#ls /dev/sda1 -l
brw-rw-rw- 1 root root 8, 1 Jan 1 00:00 /dev/sda1 —->U盘的设备文件
[root@GEC6818 /]#mount -t vfat /dev/sda1 udisk —->将U盘挂载到rootfs的某个目录上
[root@GEC6818 /]#ls /udisk —>通过挂载点,访问U盘的内容
rootfs也有文件系统的格式:GEC6818—>ext4
2、rootfs中有什么东西?
[root@GEC6818 /]#ls / /—->linux操作系统的根
IOT etc lost+found root sys var
bin lib mnt run tmp
dev linuxrc proc sbin usr
1)/bin /sbin /usr/bin /usr/sbin
linux shell命令 <—– busybox软件包交叉编译后生成的。
2)/lib /usr/local/Qt-Embedded-5.7.0/lib
—->运行linux应用程序使用的动态库。
思考:在嵌入式平台,是否有静态库?
3)/etc
—->linux系统的配置文件。
/etc/profile —>声明linux的环境变量
/etc/fstab —->当linux内核挂载完rootfs后,自动挂载其他的文件系统:如将proc文件系统挂在到/proc目录下;将sysfs文件系统挂在到/sys目录下;将tmpfs挂在到/dev目录下。
/etc/hostname —>主机名
/etc/pointercal —>触摸屏的校正文件
注意:
GEC6818平台上,U盘自动挂载到/mnt/udisk,如何实现的????
vi /etc/mdev.conf(自动挂载的文件)
USB disk or SD disk
sd[a-z]*[0-9] root:root 666 @mount -t vfat MDEV/mnt/udisk−outf8=1(U盘挂载)sd[a−z]root:root666 umount /mnt/udisk(U盘卸载)
mmcblk[1]*p[0-9] root:root 666 @mount -t vfat $MDEV /mnt/sd -o utf8=1(SD卡挂载)
4) /dev
—–>linux的设备文件(只有字符设备和块设备有设备文件,网络设备是没有设备文件的)。应用程序通过设备文件访问linux内核中的驱动程序,再通过驱动程序访问硬件。
crw-rw—- 1 root root 204, 64 Jan 1 1970 ttySAC0
crw-rw—- 1 root root 204, 65 Jan 1 1970 ttySAC1
crw-rw—- 1 root root 204, 66 Jan 1 1970 ttySAC2
crw-rw—- 1 root root 204, 67 Jan 1 1970 ttySAC3
crw-rw—- 1 root root 81, 5 Jan 1 1970 video5
crw-rw—- 1 root root 81, 6 Jan 1 1970 video6
crw-rw—- 1 root root 29, 0 Jan 1 1970 fb0
crw-rw—- 1 root root 14, 3 Jan 1 1970 dsp
crw-rw—- 1 root root 14, 19 Jan 1 1970 dsp1
crw-rw—- 1 root root 14, 0 Jan 1 1970 mixer
crw-rw—- 1 root root 14, 16 Jan 1 1970 mixer1
brw-rw-rw- 1 root root 8, 0 Jan 1 00:00 sda
brw-rw-rw- 1 root root 8, 1 Jan 1 00:00 sda1
crw-rw—- 1 root root 10, 130 Jan 1 1970 watchdog
5)/proc
—->实时的反应linux系统的工作信息。linux挂载完rootfs后,将proc文件系统挂载到/proc目录下。proc文件系统是一种虚拟的文件系统,会将linux系统的工作详细信息进行抽象,挂载到/proc目录下
/proc/数字 —-> 进程的详细信息
/proc/devices —->查看linux内核中,安装了哪些字符设备和块设备
/proc/filesystems —>查看linux系统支持哪些文件系统
/proc/interrupts —>看看linux内核中注册哪些中断,以及这些中断发生的次数。
6)/mnt
—->挂载点,udisk—U盘的挂载点,sd—SD卡的挂载点
7)/root
—–>root用户的家目录
8)/sys
—–>linux设备驱动的详细信息,linux挂载完rootfs后,将sysfs文件系统挂载到/sys目录下,实时的反应linux设备设备驱动的详细信息。
9)/tmp
—–>存放临时文件
10)/usr
—–>用户的一些应用小工具,或者动态库
11)/var
——>linux系统的工作日志
12)/IOT
——>物联网实验平台使用的驱动程序、应用程序、测试程序、数据
3、/etc/profile文件
Source configuration files from /etc/profile.d
for i in /etc/profile.d/*.sh ; do
if [ -r “
i”];then.
i
fi
unset i
done
PATH=/bin:/sbin:/usr/bin:/usr/sbin
LD_LIBRARY_PATH=/lib:/lib:/usr/lib
USER=”id -un
”
LOGNAME=$USER
HOME=/root
PS1=’[\u@\h \w]#’
export USER LOGNAME HOME PS1 PATH LD_LIBRARY_PATH —–>声明linux系统的环境变量
export QTDIR=/usr/local/Qt-Embedded-5.7.0
export PATH=
QTDIR/bin:
PATH
export QT_QPA_PLATFORM_PLUGIN_PATH=
QTDIR/pluginsexportQTQPAPLATFORMPATH=
QTDIR/plugins
export QT_QPA_PLATFORM=linuxfb
export QT_QPA_FONTDIR=/usr/share/fonts
export LD_LIBRARY_PATH=
QTDIR/lib:
LD_LIBRARY_PATH
export QT_QPA_GENERIC_PLUGINS=evdevtouch:/dev/event0
export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event0
export QMLSCENE_DEVICE=softwarecontext
export QML2_IMPORT_PATH=$QTDIR/qml ——》声明QT的环境变量
ifconfig eth0 up —->
ifconfig eth0 192.168.14.4 netmask 255.255.254.0
route add default gw 192.168.14.1
echo “nameserver 202.96.134.33” > /etc/resolv.conf
echo “nameserver 192.168.14.1” >> /etc/resolv.conf
source /IOT/driver_ko/insmod_driver.sh —->执行一个安装驱动的脚本
cd /IOT
./iot & —–>执行物联网平台的应用程序
cd /
echo “7 4 1 7” > /proc/sys/kernel/printk
udhcpc