【笔记】Linux的目录配置(a2)

本文详细介绍了Linux下的FilesystemHierarchyStandard(FHS),一种旨在规范Linux系统目录结构的标准,确保软件开发者、操作系统制作者及用户能够遵循统一的目录架构。文章深入探讨了FHS的四种目录特性:可分享、不可分享、静态和动态,并列举了关键目录及其用途,如/(根目录)、/usr(软件资源)、/var(动态文件)。此外,还概述了CentOS7对目录结构的调整,以及绝对路径和相对路径的概念。
  来自:《鸟哥的Linix私房菜-基础篇》
复制代码

Linux的目录配置依据的是FHS,那什么是FHS呢?因为利用Linux来开发的产品或DISTRIBUTION的社群或公司还有个人实在是太多了,如果每个人都用自己的想法来配置文件放置的目录,那真是太糟糕了,因此Filesystem Hierarchy Standard(FHS) 标准出炉了!

他们的目的是想让使用者可以了解到已安装软件通常放置于哪个目录下,所以他们希望独立的软件开发商、操作系统制作者、想要维护系统的用户都能遵循FHS标准,也就是规范每个目录下应该存放什么样的文件数据,统一目录架构。

FHS根据文件系统使用的频繁与否与是否允许使用者随意变动,将目录定成了四种交互形态:可分享、不可分享、可变动、不可变动。

可分享的(shareable)不可分享的(unshareable)
不变的(static)/usr(软件放置处)/etc(配置文件)
不变的(static)/opt(第三方协力软件)/boot(开机与核心档)
可变的(variable)/var/mail(使用者邮箱)/var/run(程序相关)
可变的(variable)/var/spool/news(新闻组)/var/lock(程序相关)

可分享的:可分享给其他系统挂载使用的目录; 不可分享的:自己机器上面运作的装置文件或与程序相关的文件等。 不变的:数据不会经常变动,跟随着distribution而不变动;如函数库、系统配置文件等。 可变的:经常改变的数据,例如登录文件、新闻组等。

·/(root,根目录):与开机系统有关。 ·/usr(unix software resource):与软件安装/执行有关。 ·/var(variable):与系统运作过程有关。

一./

根目录是整个系统中最重要的一个目录,所有的目录都是用根目录衍生的,根目录不要放在非常大的分区槽内,因为分区槽越大,那放入的数据就越多,这样以来根目录所在的分区槽就可能发生较多的错误了。

建议:根目录不用太大,且应用程序所安装的软件也不要与根目录放在同一个分区槽内,保持根目录的简洁,这样性能不但会更好,也不太容易发生问题。

FHS要求必须要存在的目录:/bin(能被root和一半用户使用,主要有:cat,chmod,chgrp,chown,date,mv,mkdir,cp,bash等等常用命令;现在的很多Linux都将/bin变成了/usr/bin的链接档了,也就是说/bin和/usr/bin是一样的),/boot(主要存放开机会使用到的文件),/dev,/etc(系统的配置文件存放目录,例如用户的账户密码文件等,普通用户可查阅,但只有root用户可修改),/lib(函数库),/media,/mnt,/opt,/run,/sbin,/srv,/tmp,/usr,/var.

FHS建议存在的目录:/home(用户默认的家目录),/lib(用来存在与/lib不同格式的二进制函数库,例如支持64位的/lib64函数库等),/root(系统管理员root的家目录)

二./usr

根据FHS的定义,这里面放的数据属于可分享和不可变的,/usr是可分享给局域网内的其他主机来使用的喔!

不要误认为/usr就是user哦,/usr是Unix Software Resource的缩写哦,也就是Unix操作系统软件资源 的意思。建议所有开发人员,将他们的数据合理的分别放在这个目录的次目录下,而不要自行建立该软件自己独立的目录哦。

所有系统默认的软件都会放在/usr目录下,因此这个目录有点类似windows的C:\Windows(当中的一部分) + C:\Program files\这2个目录的综合体,也就是说软件应该安装在usr目录下。

三. /var

/var的目录会越来越大,因为/var存放的主要是一些动态性文件,比如cache、log file以及某些软件运行所产生的文件,比如mysql数据库的文件等。

CentOS7对目录的变动

CentOS7将一些原本在根目录下的数据全部都搬迁到了/usr下:

  • /bin --> /usr/bin
  • /sbin --> /usr/sbin
  • /lib --> /usr/lib
  • /lib64 --> /usr/lib64
  • /var/lock --> /run/lock
  • /var/run --> /run
目录树

在Linux下所有目录和文件都是由根目录开始的,那是所有目录和文件的源头~,然后再一个个的分支下去,我们叫这种目录配置方式为:目录树。

  1. 目录树的起始点为根节点(/,root);
  2. 每一个目录不止能使用本地端的文件系统,也可以使用网络上的filesystem。
  3. 每一个文件在此目录中的文件名都是独一无二的。(包括完整路径)

根据FHS的定义,最好将/var独立出来,这样对于系统的数据还有一些安全性的保护呢!至少/var发生错误了不会影响到根目录,还可以进入救援模式!

绝对路径和相对路径

根据写法不同,可以将路径分为绝对路径和相对路径:

  • 绝对路径:由根目录开始写起到目录/文件为止,例如:/home/[User_File_Name]/.bashrc;
  • 相对路径:相对于当前路径的写法,例如:./home/[User_File_Name]或者../../;反正开头不是根目录开始的就属于相对路径的写法了。

相对路径是以你当前所在路径而言的;举例来说,你在/home目录,想要进入到/usr/bin目录,相对路径则可以这样写啊:cd ../usr/bin。绝对路径则可以这样写:cd /usr/bin。

这里需要解释一下, 一个.(.)代表的是当前目录,两个.(..)代表的是上一层目录;还有一点需要特别注意:在root目录,也就是根目录(/)下,.和..都代表的是当前目录哦。

这里对Linux的权限和目录配置做一个总结
  1. Linux的每个文件中,可分别给予使用者、群组、其他人三种身份分别授予所需的rwx权限;
  2. 群组是最有用的功能之一,可以给每个账户分配不同的群组,且每个账户可以拥有多个群组,以获得所需的资源。
  3. 利用ls -l来显示文件的权限属性,分别由:文件的额权限、文件类型、拥有者及所属群组、时间、文件/目录名。
  4. 如果文件/目录之前有一个.,则代表这个文件/目录是一个隐藏文件/目录.
  5. 切换到root账户的命令:su -,如果是进入普通用户的命令:su - userName;退出当前账户的命令:exit。
  6. 更改文件的群组命令:chgrp,更改文件的拥有者命令:chown,更改文件的权限命令:chmod。
  7. chmod修改权限的方法有2种,一种是数字发,一种是符号法,数字法中r,w,x分别对应4,2,1;例如:chmod 751 test,就是对test文件/目录修改权限为 rwxr-x--x,7就是rwx权限:4+2+1=7;5就是r-x权限:4+0+1=5;1就是--x权限:0+0+1=1;符号法更改例子:chmod u=rwx;g=rx;o=x test,u代表拥有者,g代表群组,o代表其他人身份。
  8. rwx对于文件的意义:r-可读取文件内容;w-可对文件的内容进行编辑、修改、新增(删除文件需要上一级目录的支持-是否具有w权限);x-该文件具有可执行权限。rwx对于目录的意义:r-可读取目录内的文件名列表;w-修改目录(可以对目录下的文件进行删除,可以新增文件等权限);x-代表可进入。
  9. 开开放目录给别人,至少需要r和x权限,w不能随意给。
  10. 要想读到文件的内容,文件所在的目录至少要有x权限,文件至少需要r权限。
  11. Linux文档名的限制:单一文件/目录的最大容许255个英文字符或128个汉字。
  12. 根据FHS官方文件指出:他们的主要目的就是希望让使用者可以了解到以安装的软件通常在哪个目录下。
  13. FHS订出来的四种目录特色:shareable、unshareable、static、variable四大类。
  14. FHS定义的三层主目录为:/、/var、/usr。
  15. 绝对路径都是以/开头写起,否则就是相对路径了。
<think>嗯,用户现在问的是如何在Linux配置文件中找到可识别的显卡。首先,我需要回想一下用户之前的对话历史。之前用户询问了关于Linux系统重启的各种方法,现在转向硬件检测,特别是显卡识别。这可能意味着用户正在处理与显卡相关的问题,比如驱动安装、多显示器设置,或者性能优化。 用户可能的需求是什么?他们可能刚安装了一个新显卡,或者系统没有正确识别显卡,导致显示问题。也可能是在调试图形性能问题,或者需要确认系统是否正确识别了所有显卡,尤其是在多GPU环境下,比如使用NVIDIA和AMD显卡同时存在的情况。 接下来,我需要考虑Linux下检测显卡的常用方法。常见命令有lspci、lshw、glxinfo,以及查看Xorg日志或使用工具如hwinfo。另外,不同的发行版可能有不同的工具,比如Ubuntu的system-info或者图形界面的设置中的详细信息。 用户提到“配置文件”,可能需要查看哪些配置文件包含显卡信息。常见的配置文件可能在/etc/X11/目录下,特别是xorg.conf文件,或者相关的conf.d目录中的文件。此外,内核启动参数也可能涉及显卡配置,比如在grub配置中。 需要确保回答涵盖命令行工具和配置文件分析两部分。同时,用户可能需要具体的命令示例,比如如何使用lspci过滤出显卡信息,或者如何查看Xorg日志中的设备部分。 另外,用户可能对开源驱动和专有驱动的情况不太清楚,可能需要解释不同驱动对识别的影响。例如,NVIDIA的专有驱动可能需要使用nvidia-smi命令,而集成显卡可能依赖内核的驱动模块。 还要注意权限问题,某些命令可能需要sudo权限,比如lshw或者访问日志文件。在回答中需要提示用户必要时使用sudo。 最后,用户可能需要验证显卡是否被正确驱动,所以除了识别硬件外,还需检查驱动状态,比如使用modinfo或dkms status,或者检查Xorg日志中的加载模块部分。 总结一下,回答的结构应该包括命令行工具、配置文件位置、驱动状态检查,以及可能的故障排查步骤。要确保步骤清晰,命令准确,并提醒用户注意数据安全和权限问题。</think>### Linux系统检测显卡配置完整指南 --- #### **一、硬件层检测(底层设备识别)** 1. **PCI设备扫描** ```bash lspci -vnn | grep -iE 'vga|3d|display' # 显示所有图形设备 ``` 输出示例: ``` 00:02.0 VGA compatible controller: Intel Corporation HD Graphics 620 (rev 02) 01:00.0 3D controller: NVIDIA Corporation GM108M [GeForce 940MX] (rev a2) ``` 2. **详细硬件拓扑** ```bash sudo lshw -c video # 显示显卡详细信息及驱动状态 ``` 典型输出: ``` *-display description: VGA compatible controller product: HD Graphics 620 vendor: Intel Corporation physical id: 2 bus info: pci@0000:00:02.0 version: 02 width: 64 bits clock: 33MHz capabilities: pciexpress msi pm vga_controller bus_master cap_list rom configuration: driver=i915 latency=0 resources: irq:138 memory:db000000-dbffffff memory:90000000-9fffffff ioport:f000(size=64) ``` --- #### **二、驱动层检测(已加载模块)** 1. **内核模块检测** ```bash lsmod | grep -iE 'drm|nvidia|amdgpu|i915' # 检查加载的图形驱动模块 ``` 典型输出: ``` i915 634880 4 drm_kms_helper 245760 1 i915 drm 557056 6 drm_kms_helper,i915 ``` 2. **NVIDIA专用检测** ```bash nvidia-smi -L # 仅适用于NVIDIA显卡+官方驱动 ``` 输出示例: ``` GPU 0: NVIDIA GeForce RTX 3080 (UUID: GPU-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) ``` --- #### **三、图形服务检测(X11/Wayland)** 1. **Xorg服务日志** ```bash grep -iB5 'OutputClass\|Device' /var/log/Xorg.0.log # 查看X服务识别的显卡 ``` 关键日志片段: ``` [ 35.101] (II) LoadModule: "nvidia" [ 35.102] (II) Loading /usr/lib/xorg/modules/drivers/nvidia_drv.so [ 35.103] (II) Module nvidia: vendor="NVIDIA Corporation" ``` 2. **Wayland环境检测** ```bash sudo dmesg | grep -i drm # 显示DRM初始化信息 ``` 输出示例: ``` [ 2.328763] i915 0000:00:02.0: [drm] Finished loading DMC firmware i915/kbl_dmc_ver1_04.bin (v1.4) [ 2.420112] [drm] Initialized nvidia-drm 0.0.0 20160202 for 0000:01:00.0 on minor 0 ``` --- #### **四、配置文件解析** 1. **Xorg配置文件** ```bash ls /etc/X11/xorg.conf.d/ # 查看自定义显卡配置 ``` 重要配置文件: ``` 20-nvidia.conf # NVIDIA专有驱动配置 40-intel.conf # 集成显卡配置 ``` 2. **内核模块黑名单** ```bash grep -rhE 'blacklist (nouveau|amdgpu)' /etc/modprobe.d/ # 检查驱动屏蔽情况 ``` --- #### **五、高级检测工具** 1. **图形API检测** ```bash glxinfo | grep "OpenGL renderer" # 显示实际使用的渲染设备 ``` 输出示例: ``` OpenGL renderer string: Mesa Intel(R) UHD Graphics 630 (CFL GT2) ``` 2. **PCI设备树查看** ```bash lspci -t # 显示设备树状图 ``` 树状关系示例: ``` -+-[0000:00:00.0]-+-02.0-[01]----00.0 # PCI-E根设备 | \-00.0 # 显卡设备 ``` --- #### **六、多显卡配置识别** 1. **Prime配置检测** ```bash prime-select query # Ubuntu专用多显卡切换工具 ``` 输出示例: ``` nvidia ``` 2. **Optimus状态检查** ```bash cat /sys/kernel/debug/vgaswitcheroo/switch # 查看双显卡切换状态 ``` --- #### **故障排查流程** 1. **驱动未加载检测** ```bash dmesg | grep -iE 'error|fail|drm|i915|nvidia' # 检查驱动加载错误 ``` 2. **EDID信息获取** ```bash sudo get-edid | parse-edid # 获取显示器硬件信息 ``` --- #### **显卡信息矩阵表** | 检测维度 | 命令行工具 | 关键输出内容 | |----------------|----------------------|-----------------------------| | 硬件ID | `lspci -nn` | PCI设备ID (例: [10de:1f08]) | | 驱动状态 | `modinfo <驱动名>` | 驱动版本及支持设备列表 | | 温度监控 | `sensors` | GPU核心温度读数 | | 显存使用 | `nvidia-smi` | 显存占用及进程列表 | | OpenGL状态 | `glxinfo -B` | GL版本及渲染器详细信息 | --- #### **注意事项** 1. **安全模式检测**:当图形界面崩溃时,使用`Ctrl+Alt+F2`进入TTY终端执行检测 2. **持久化配置**:修改`/etc/default/grub`中的`GRUB_CMDLINE_LINUX`可添加内核级显卡参数 3. **混合显卡系统**:双显卡笔记本需同时检查`/sys/class/drm/card*/status`状态文件 建议首先使用`lspci`确认硬件识别,再通过`dmesg`检查驱动加载情况,最后用图形API工具验证实际使用设备。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值