Linux_硬盘和文件系统_操作步骤和排查方式

发布时间 2023-07-10 17:26:44作者: 辰令

-技术背景

DRIVE Orin™ 的 AI 计算与完整传感器套件-提供每秒 254 TOPS(万亿次运算)
DRIVE Atlan
DRIVE Thor-计划于 2025 年开始量产 2000 万亿次浮点运算性


-Mobileye  EyeQ5

1.操作系统

车端--EXTLINUX is a Syslinux variant which boots from a Linux filesystem.
###操作系统
NVIDIA TEGRA--NV SDK提供的Linux-定制化Linux环境
   extlinux是由syslinux派生来的,可以从ext2和ext3 linux文件系统启动系统。其工作方式和syslinux差不多,只是做了了很小的修改
   Jetson使用extlinux而不是grub作为bootloader
     syslinux是一个轻量级的启动装载器
	    syslinux 用于从微软的文件系统 fat 16/32 引导,isolinux 用于从光盘引导,pexlinux 用于从网络引导,extlinux 用于从 ext2/3 文件系统引导

 操作系统引导过程中的BIOS与磁盘分区表的内容,也提到了bootloader,bootloader作为BIOS与OS之间的桥梁,
 在BIOS完成引导的部分工作退出后,
  由bootloader担负起启动内核的重任。在openEuler中,我们使用的系统加载器主要有两个:syslinux以及GRUB2
  GRUB(GRand Unified Bootloader)是GNU下的FSF组织所推行的一套多重开机管理软件,目前 GRUB 分成 GRUB legacy 和 GRUB 2

内核启动拉起initrd	
  
 ###开机自启动   
 1.开机自启
rc.local脚本是一个Ubuntu开机后自动执行的脚本,可以在脚本内添加行指令,该脚本位于/etc/路径下,需要root权限才能修改
linux的/etc/rc.local文件(开机自启)
    /etc/rc.local是/etc/rc.d/rc.local的软连接
	    /etc/rc.d/rc.local 用于添加开机启动命令
  ubuntu-18.04不能像ubuntu14一样通过编辑rc.local来设置开机启动脚本
 ubuntu 20.04上是没有像centos 那样有/etc/rc.local文件的。如果要加开机启动,可以通过systemd的方式systemctl命令。

2.定时任务-周期任务-触发任务
 crontab定时执行sh脚本
 docker镜像,通过运行容器时给定参数--restart always

3.普通脚本和任务. 

2.硬件和驱动

Nvidia的Tegra系列SOC(System On Chip)采用ARM架构 
  nVIDIA Tegra是一款系统单芯片。内建ARM架构的处理器核心(即CPU)、基于GeForce的立体显示核心、影像处理器、音效处理器和图像处理器
EGLStream vs. NvStream
EGLStream是CUDA的一个扩展-支持多个进程间进行无拷贝的视频流传输

nvidia driveos中关于camera,自己封装了一层nvsipl框架,
在linux应用层,可以直接调用nvmedia 库,即可操作摄像头,对于配置这一块,也提供了json文件,xml文件来进行serdes的配置开
 NvStream库包含了三个模块:NvSciBuf、NvSciSync、NvSciStream)
   SIPL框架是DriveOS中NvMedia中一个组成部分

众所周知,对于camera模块来讲,linux驱动中,使用的是v4l2框架,在nvsipl框架中,同样,底层也是使用了 v4l2框架

jetpack是NVIDIA用于构建AI应用程序的最全面的开发环境包,支持所有Jetson模块和开发套件。
JetPack SDK包括最新的Linux驱动程序包(L4T),具有Linux操作系统以及CUDA-X加速库和API

除了驱动之外,还有一些命令是开机自动启动的,所以才会重启可以解决

3.库

不同的库(即,NvMedia、CUDA、OpenGL),用于生成和处理各种类型的图像和高维数据
数据类型(RawBuffer、Image、ImagePyramid、Tensor)
GSML-相机高速传输接口(硬件),包括编码器和解码器

4.硬盘与移动硬盘

  可以分区也可以不分区直接使用,你只要把你要存的东西分类存到文件夹下就不会乱,分区对移动硬盘的读取写入速度影响不是太大
   移动硬盘只有一个盘,一个磁头,分区只是逻辑上分开了,物理上没分开
      所谓主分区就是要安装操作系统的分区,
	   一般来说,没人会在移动硬盘里安装操作系统(就是WINDOWS),所以不需要主分区。没有主分区还有一个好处,就是可以避免启动类病毒的感染

  系统盘之所以要分区,是管理方便。比如ghost一下,C盘就全覆盖了,当然不能把系统和数据放一个

  使用tail命令查看日志变化情况   
  /var/log/syslog:这个文件主要是记录系统的运行信息,比如内存映像文件的反转、系统守护进程的信息等等
  /var/log/dmesg:这个文件记录的是系统启动时的信息,比如硬件检测、驱动加载等等
  /var/log/cron.log:这个文件记录了定时任务的执行情况,可以查看定时任务是否执行成功等等
  
  利用英伟达系列芯片NvStream设计的数据流驱动及时间同步模式


  硬盘,并不是直接读写物理硬盘设备,而是通过文件系统来管理和访问硬盘上的文件
  拥有不同分区的一个主要目的就是为了在灾难发生时能获得更好的数据安全性--安全和健壮性原因

排查命令

 ###设备名 分区 挂载点 文件系统
  
dmesg 硬件问题
lsblk
df -hT
#分区 fdisk  Parted
mount umount
   结果显示挂载方式为ro,则根因为挂载方式为只读导致
   读写方式重新进行挂载
fsck fsck 命令用于检查文件系统并尝试修复出现的错误。	 

命令说明
   df -T 命令查看 这个是最简单的命令,文件系统类型在Type列输出。只可以查看已经挂载的分区和文件系统类型
   fdisk -l  (查看分区命令  
   。blkid主要用来对系统的块设备(包括交换分区)所使用的文件系统类型、LABEL、UUID等信息进行查询。

用strace去追踪到底在哪里卡住了  strace df -h
strace df -h 就会显示出卡住的地方

Linux文件系统可以分解为3部分:superblock, inode, 还有data block。

df -T 这个命令在Ubuntu下读取ntfs格式会显示为fuseblk