linux kernel code 目录说明

Linux目录结构特点

  • 一切从根开始 ——"/"

/etc/sysconfig/network

/etc/sysconfig/network-scripts/ifcfg-eth0

  • Linux中每个设备(例:磁盘分区 光盘),必须要有一个入口才能使用——Linux

下面的设备必须挂载后才能使用

挂载——相当于给设备开一个入口

设备的入口——相当于挂载点 例:目录/mnt

linux目录结构

df -lh 显示磁盘使用情况

  • Linux下面每个磁盘分区 可以随意的挂载到Linux目录上面

总结

  • 一切从根开始,一切皆文件
  • linux下面的设备不挂载无法使用。—挂载 开入口 -挂载点 目录
  • 相对路径 不是从根开始 例:etc/hosts

绝对路径 从根开始的 例:/etc/init.d/iptables

  • /etc/resolv.conf 配置DNS ——网卡配置文件的DNS优先于/etc/resolv.conf
  • Red Hat Enterprise Linux (RHEL)中配置DNS在哪里配置?

① /etc/sysconfig/network-scripts/ifcfg-eth0

② /etc/resolv.conf


  • 修改主机名

临时修改的方法:

linux目录结构

hostname 查看主机名

永久修改主机名方法:

linux目录结构

sed -i 's///g' 生效加 -i

  • 查看一个软件是否安装了

linux目录结构

 

[root@learn-k ~]# rpm -qa tree 查看是否安装了tree

[root@learn-k ~]# rpm -ql tree 查看tree里面的安装包内容

 linux根下面目录

linux目录结构

 

[root@learn-k ~]# pwd

/root 代表/root用户的家目录为/root

[test@study ~]$ pwd

/home/test 代表普通用户test的家目录为/home/

 linux中不同分区的作用

  • /etc 配置文件

① 网卡的配置文件

linux目录结构

网卡配置文件

[root@learn-k ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0 网卡的名字

HWADDR=00:0c:29:45:13:bb MAC地址,硬件物理地址

TYPE=Ethernet 网络类型 以太网

UUID=938c3023-a46c-4bd4-ae15-4f744b0bfe4b 唯一表示码类似以太网

ONBOOT=yes 在开机或者重启网卡时是否开启网卡

NM_CONTROLLED=yes 是否受network程序管理

BOOTPROTO=none 网卡是如何获取IP地址的

# dhcp ==自动获取ip地址 none、static==固定的IP地址

IPADDR=10.0.0.100 网卡的IP地址

NETMASK=255.255.255.0 子网掩码决定这个局域网最多有多少台机器

GATEWAY=10.0.0.2 网关 理解为整个大楼的大门 (一般可以把路由器比喻一个网管)

DNS1=8.8.8.8

USERCTL=no 普通用户是否能控制网卡

PEERDNS=yes 网卡配置文件里面的DNS优先于/etc/resolv.conf

IPV6INIT=no 是否启用IPV6

 什么是DNS

  • DNS的作用是把域名解析为IP地址 例:www.baidu.com ==119.75.216.20

(域名) (IP地址)

如果没有配置DNS或者配置DNS错误:报错==couldn't reslove host

  • linux无法上网排查过程

第一步:

[root@learn-k ~]# ping baidu.com ——ping一个公网域名

ping: unknown host www.baidu.com

第二步:验证DNS是否有故障

linux目录结构

 

可以ping通,说明DNS的配置有问题


如何修改DNS

1)在网卡配置文件中加上

DNS1=223.5.5.5

DNS2=223.6.6.6

[root@learn-k ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0 ↑ 网卡配置文件 ↑

HWADDR=00:0c:29:a3:3b:f9

TYPE=Ethernet

UUID=18c5c35a-bab8-449c-a624-473aaaeb41df

ONBOOT=yes

NM_CONTROLLED=yes

BOOTPROTO=none

IPADDR=10.0.0.100

NETMASK=255.255.255.0

GATEWAY=10.0.0.2

USERCTL=no

PEERDNS=yes

IPV6INIT=no

DNS1=223.5.5.5

DNS2=223.6.6.6 #——vim模式下添加DNS地址

2) 重启网卡生效

[root@learn-k ~]# /etc/init.d/network restart ——重启网卡

Shutting down interface eth0: [ OK ]

Shutting down loopback interface: [ OK ]

Bringing up loopback interface: [ OK ]

Bringing up interface eth0: Determining if ip address 10.0.0.100 is already in use for device eth0...

[ OK ]

3) 检查看是否可以ping

[root@learn-k ~]# ping www.baidu.com

PING www.a.shifen.com (111.13.100.92) 56(84) bytes of data.

64 bytes from 111.13.100.92: icmp_seq=1 ttl=128 time=5.61 ms

64 bytes from 111.13.100.92: icmp_seq=2 ttl=128 time=5.05 ms

64 bytes from 111.13.100.92: icmp_seq=3 ttl=128 time=4.97 ms

^C ————这一步证明DNS已经配置成功

/etc/hosts

  • /etc/hosts 解析主机名 ip地址与主机名的对应关系

linux目录结构

 

linux目录结构

 

  • 主要是用来进行测试

例如: 10.0.0.100 ke good

  • 方便大家使用

例如: www.121212.asasa.jingdong.com www.jingdong.com

/etc/fstab

filesystem table 在开机的时候会自动给设备开启入口列表 开机的时候自动挂载列表

linux目录结构

 

UUID=4e8eec06-ce9b-41db-8668-85f8184ae6b3 / ext4 defaults 1 1

UUID=2e505a65-47c2-4f1f-ad5d-816705b4580b /boot ext4 defaults 1 2

UUID=4f04f2db-6383-48d7-aeef-c0b9a51194b7 swap swap defaults 0 0

tmpfs /dev/shm tmpfs defaults 0 0

devpts /dev/pts devpts gid=5,mode=620 0 0

sysfs /sys sysfs defaults 0 0

proc /proc proc defaults 0 0

第一列:Device:磁盘设备文件或者该设备的Label或者UUID

1)查看分区的label和uuid

Label就是分区的标签,在最初安装系统时填写的挂载点就是标签的名字。可以通过查看一个分区的superblock中的信息找到UUID和Label name。

例如:我们要查看/dev/sda1这个设备的uuid和label name

linux目录结构

 

第二列:Mount point:设备的挂载点,就是你要挂载到哪个目录下

第三列:filesystem:磁盘文件系统的格式,包括ext2、ext3、reiserfs、nfs、vfat等

第四列:parameters:文件系统的参数

Async/sync

设置是否为同步方式运行,默认为async

auto/noauto

当下载mount -a 的命令时,此文件系统是否被主动挂载。默认为auto

rw/ro

是否以以只读或者读写模式挂载

exec/noexec

限制此文件系统内是否能够进行"执行"的操作

user/nouser

是否允许用户使用mount命令挂载

suid/nosuid

是否允许SUID的存在

Usrquota

启动文件系统支持磁盘配额模式

Grpquota

启动文件系统对群组磁盘配额模式的支持

Defaults

同事具有rw,suid,dev,exec,auto,nouser,async等默认参数的设置

第五列:能否被dump备份命令作用:dump是一个用来作为备份的命令。通常这个参数的值为0或者1

0

代表不要做dump备份

1

代表要每天进行dump的操作

2

代表不定日期的进行dump操作

第六列:是否检验扇区:开机的过程中,系统默认会以fsck检验我们系统是否为完整(clean)。

0

不要检验

1

最早检验(一般根目录会选择)

2

1级别检验完成之后进行检验

/etc/rc.local

/etc/rc.local 开机的时候自动运行 自动执行的命令或脚本

让一个软件开机的时候自动运行的两种方法

1) chkconfig管理系统复杂的软件 例:chkconfig iptables off

2) 把这个软件或命令(绝对路径) 放入/etc/rc.local

 /etc/inittab——修改系统运行级别

1) 0-6运行级别含义 ——常用的运行级别

0 关机

1 单用户模式

2 没有NFS, 多用户模式

3 命令行模式 文本 完全的多用户模式

4 没有使用

5 桌面模式 图形化界面模式

6 重启

2) 如何查看运行级别

[root@learn-k ~]# runlevel

5 3 —— 其中第一个5为之前用过的运行级别,3为当前使用的运行级别

3) 如何修改运行级别

方法一: init 临时修改

[root@learn-k ~]# init 5 ——init 加运行级别临时修改

[root@olearn-k ~]# runlevel

3 5

方法二:永久修改运行级别

vim 编辑 /etc/inittab 。把id:3:initdefault: id后面的运行别急修改,注意:一般尽量不要修改运行级别

/etc/init.d

/etc/init.d 目录里面存放的是 软件/服务管理命令

/etc/init.d/network restart ——重启网卡

/etc/init.d/iptables start ——开启防火墙

/etc/init.d/iptables stop ——关闭防火墙

/etc/init.d/iptable status ——查看防火墙运行状态

 /etc/profile 配置环境变量 别名

/etc/bashrc 一般配置别名的地方

国法——全系统生效: 家规——只有自己家里生效

/etc/profile ~/.bash_profile

/etc/bashrc ~/.bashrc

以.开头的文件或目录都是隐藏的 查看隐藏文件的内容命令——ls -la

/usr/local

Linux里面编译安装软件的默认的目录 windows默认安装软件的位置 c:\program files

Linux下面安装软件的常见方法:

1)yum 替你下载软件、安装 ,解决依赖关系 。

①方便 简单

②没有办法深入修改

yum install -y tree ——默认安装tree软件不提示

2)rpm 自己下载软件包 自己安装 自己解决依赖 。——安装 解决依赖复杂

rpm -ivh treexxxxxxxxxxx.rpm

3)编译 自己下载软件包 自己安装 自己解决依赖

①自定义

②过程复杂

备菜-切菜 炒菜 上菜

./configure make make install

 /var/log/

/var/log/messages ——系统默认的日志

/var/log/secure ——用户的登录信息 谁从哪里登录的是否成功

如何查看日志的内容——日志在运维工作中一般都特别大查看一般用以下几种方法。

①head / tail

②grep

③less /more(向下 到最后一行自动退出)

[root@learn-k ~]# ll /var/log/secure*

-rw------- 1 root root 889 Oct 24 12:18 /var/log/secure

-rw-------. 1 root root 11750 Oct 24 08:44 /var/log/secure-20171024

#自动的把日志 切割

#自动的切割日志 日志轮询

/proc 虚拟目录 里面是内存的一些信息

1)/proc/cpuinfo ——cpu信息

physical id : 0 ——— 第几个cpu

core id : 0 ——— 这个cpu中 第几个核心

cat /proc/cpuinfo ==== lscpu (显示cpu的信息)

2)/proc/meminfo —— 内存的信息

[root@learn-k ~]# free -h —— 显示内存的信息

total used free shared buffers cached

Mem: 980M 710M 270M 228K 100M 423M

-/+ buffers/cache: 186M 794M

Swap: 767M 0B 767M

3)/proc/loadavg load average——负载系统的繁忙程度 平均负载

[root@learn-k ~]# w ———显示负载信息

14:13:43 up 2 days, 22:03, 3 users, load average: 0.00, 0.00, 0.00

USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT

root tty1 - Mon16 2days 0.82s 0.82s -bash

root pts/0 10.0.0.1 11:22 1:40m 1.55s 1.55s -bash

root pts/1 10.0.0.1 13:55 0.00s 0.60s 0.24s w

如何判断系统比较忙——当系统的负载接近系统所有cpu的核心总数

4)/proc/mounts ——系统的挂载信息

AXI UART 16550 驱动程序的源代码位于 Linux kernel 4.14 中的 drivers/tty/serial/8250/8250_axilinx.c 文件中。以下是该文件的部分源代码,供参考: ```c /* * AXI 16550 UART driver */ #include <linux/clk.h> #include <linux/console.h> #include <linux/delay.h> #include <linux/interrupt.h> #include <linux/io.h> #include <linux/module.h> #include <linux/serial_core.h> #include <linux/tty.h> #include <linux/tty_flip.h> #include <linux/tty_port.h> #define UART_LSR_THRE 0x20 /* Transmit-hold-register empty */ #define XUARTPS_CR_STOPBRK 0x00000001 /* Stop transmitter break */ #define XUARTPS_CR_STARTBRK 0x00000002 /* Start transmitter break */ #define XUARTPS_CR_TORST 0x00000008 /* Transmit out-of-band reset */ #define XUARTPS_CR_TX_DIS 0x00000010 /* Transmit disable */ #define XUARTPS_CR_TX_EN 0x00000020 /* Transmit enable */ #define XUARTPS_CR_RX_DIS 0x00000040 /* Receive disable */ #define XUARTPS_CR_RX_EN 0x00000080 /* Receive enable */ /* RS485 support */ #define AXI_RS485_ENABLED (1 << 0) #define AXI_RS485_RTS_ACTIVE_HIGH (1 << 1) #define AXI_RS485_RX_DURING_TX (1 << 2) /* AXI UART 16550 registers */ struct axi_uart16550 { u32 rxfifo; u32 txdata; u32 ctrl; u32 intr_enable; u32 intr_status; u32 baud_rate_gen; u32 rcv_timeout; u32 flow_ctrl; u32 mode; }; ``` 以上是 AXI UART 16550 驱动程序的一部分源代码。完整的源代码可以在 Linux kernel 4.14 的源码中找到。如果您需要参考该驱动程序的实现细节,可以查看该文件的完整源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值