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

-技术背景

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

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

Linux Media Subsystem

V4L had been introduced late into the 2.1.X development cycle of the Linux kernel. V4L1 support was dropped in kernel 2.6.38
V4L2 is the second version of V4L.  Video for Linux API version 2 (V4L2 API) realtime video capture on Linux systems
  (/dev/videoX, /dev/vbiX and /dev/radioX)

 V4L2框架,主要包括v4l2-core、meida framework、videobuf2等模块,这
  应用的角度来看如何使用v4l2-控制流+数据流

UVC全称为USB Video Class,即:USB视频类,是一种为USB视频捕获设备定义的协议标准

 安装v4l2工具:   sudo apt install v4l-utils
 查找摄像头端口: sudo v4l2-ctl --list-devices
   dmesg | grep video

  摄像头对应的文件在/sys/class/video4linux/下,而每个摄像头均有name文件记录摄像头的名字
  
  fuser -k /dev/video*
  
UVC能够进行视频显示的话应该满足三个条件:
 1 UVC的camera硬件支持
 2 UVC驱动支持,包括USB设备驱动以及v4l2的支持
 3 上层的应用程序支持  

时间同步

 ls lshw lscpu lsblk lspci lsusb lsof lsb_release  lshal lsattr   lsmod
  ps pstree 
  lsblk -d -o name,rota     lsblk -d -o name,rota
    NAME :这是块设备名 查看,0表示固态硬盘,1表示机械硬盘
	ROTA是1的表明能够旋转,反之则不能旋转。参数-d表明显示设备称号,参数-o表明仅显示特定的列
  file -s /dev/sda3 
     查看指定挂载盘的文件系统类型

 Linux insmod(英文全拼:install module)命令用于载入模块。
    用insmod命令加载模块时,需要使用绝对路径方能加载,且加载时无法自动解决依赖关系
    系统启动后用insmod命令添加模块(.ko),在不需要的时候用rmmod命令卸载模块
    在Linux中,modprobe和insmod都可以用来加载module		
PTP 支持分为内核空间和用户空间。该协议的实际实现称为linuxptp linuxptp包包括ptp4l和phc2sys用于时钟同步的程序。	
 ptp4l是一个Linux上PTP协议(IEEE 1588)的实现,支持普通时钟,边界时钟和透明时钟	
 

 ethtool 是一个 Linux 下的网络驱动程序的诊断和调整工具,可获取网络设备的相关信息	

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
posted @ 2023-07-10 17:25  辰令  阅读(139)  评论(0编辑  收藏  举报