linux-4-19.0代码为例
内核代码总共930M代码,drivers目录占据了545M,arch占据了131M,等等。
在往下一级目录,看下是哪些二级目录占用空间大一些。
清楚了这些内容之后,为之后做内核裁剪和加快内核编译速度提供了理论基础。
同时,也应该大致清楚内核中都有哪些东西,比如nvme,nvdimm,pcie,infiniband等。
root@iZt4n98ewjqvn9dxd7lg5gZ:~/linux-4.19# du --max-depth=1 . | sort -rn | head -15
929660 .
545976 ./drivers
131072 ./arch
44244 ./Documentation
41816 ./include
39628 ./fs
36360 ./sound
30344 ./net
27388 ./tools
9144 ./kernel
4576 ./lib
3804 ./mm
3464 ./scripts
3428 ./crypto
2860 ./security
arch :
3M以上的有10个,其中认识的有,arm,powerpc,mips,x86,m68k,ia64等。
root@iZt4n98ewjqvn9dxd7lg5gZ:~/linux-4.19# du --max-depth=1 arch/ | sort -rn | head -13
131072 arch/
36452 arch/arm
17912 arch/powerpc
15832 arch/mips
14516 arch/x86
7156 arch/arm64
6276 arch/m68k
5136 arch/sparc
5112 arch/sh
3860 arch/ia64
3664 arch/s390
2404 arch/alpha
2400 arch/parisc
drivers :
gpu占据了150M空间,但是一般人也不需要关注gpu相关内容。
net,media,scsi,usb,ib,video,input等。
root@iZt4n98ewjqvn9dxd7lg5gZ:~/linux-4.19# du --max-depth=1 drivers/ | sort -rn | head -47
545976 drivers/
150472 drivers/gpu
101228 drivers/net
39264 drivers/media
28908 drivers/scsi
27820 drivers/staging
15536 drivers/usb
12988 drivers/infiniband
10624 drivers/pinctrl
10560 drivers/video
10172 drivers/clk
5980 drivers/input
5932 drivers/iio
5904 drivers/crypto
5896 drivers/tty
5692 drivers/isdn
4936 drivers/mtd
4812 drivers/acpi
4316 drivers/hwmon
4264 drivers/misc
3808 drivers/s390
3684 drivers/md
3564 drivers/mfd
3448 drivers/dma
3376 drivers/block
3160 drivers/pci
3084 drivers/mmc
2948 drivers/char
2724 drivers/hid
2620 drivers/i2c
2600 drivers/ata
2284 drivers/regulator
2232 drivers/platform
2192 drivers/rtc
2096 drivers/spi
2068 drivers/power
drivers/net
网络中主要的还是有线网卡和无线网卡驱动占用空间较大。
root@iZt4n98ewjqvn9dxd7lg5gZ:~/linux-4.19# du --max-depth=1 drivers/net | sort -rn | head -10
101228 drivers/net
53356 drivers/net/ethernet
36668 drivers/net/wireless
1676 drivers/net/can
1308 drivers/net/usb
1068 drivers/net/dsa
980 drivers/net/wan
924 drivers/net/phy
884 drivers/net/fddi
408 drivers/net/wimax
再看下网卡的厂商有哪些
root@iZt4n98ewjqvn9dxd7lg5gZ:~/linux-4.19# du --max-depth=1 drivers/net/ethernet/ | sort -rn | head -10
53356 drivers/net/ethernet/
7868 drivers/net/ethernet/intel
5492 drivers/net/ethernet/broadcom
4740 drivers/net/ethernet/mellanox
4320 drivers/net/ethernet/qlogic
3120 drivers/net/ethernet/chelsio
2632 drivers/net/ethernet/sfc
1260 drivers/net/ethernet/amd
1248 drivers/net/ethernet/hisilicon
1236 drivers/net/ethernet/cavium
无线网卡厂商
root@iZt4n98ewjqvn9dxd7lg5gZ:~/linux-4.19# du --max-depth=1 drivers/net/wireless/ | sort -rn | head -10
36668 drivers/net/wireless/
8508 drivers/net/wireless/ath
6400 drivers/net/wireless/realtek
6004 drivers/net/wireless/broadcom
5728 drivers/net/wireless/intel
2136 drivers/net/wireless/marvell
1492 drivers/net/wireless/intersil
1460 drivers/net/wireless/ti
1424 drivers/net/wireless/ralink
1036 drivers/net/wireless/mediatek
drivers/scsi
涉及到具体的厂商的scsi硬盘驱动了,qla2xxx之前认识,是fc的hba卡。
root@iZt4n98ewjqvn9dxd7lg5gZ:~/linux-4.19# du --max-depth=1 drivers/scsi | sort -rn | head -10
28908 drivers/scsi
3204 drivers/scsi/lpfc
2296 drivers/scsi/qla2xxx
1636 drivers/scsi/aic7xxx
1600 drivers/scsi/bfa
1280 drivers/scsi/mpt3sas
848 drivers/scsi/qla4xxx
784 drivers/scsi/isci
712 drivers/scsi/megaraid
576 drivers/scsi/csiostor
net:
netfilter网络过滤包居然占据了大头,之后是ipv4,ipv6
mac80211是跟无线终端设备相关的一个子系统,比如手机可以发射热点,可以连接wifi,但是也会涉及到ipv4和ipv6的知识?
root@iZt4n98ewjqvn9dxd7lg5gZ:~/linux-4.19# du --max-depth=1 net | sort -rn | head -13
30344 net
3256 net/netfilter
2736 net/ipv4
1972 net/mac80211
1924 net/ipv6
1652 net/core
1460 net/bluetooth
1388 net/sched
1284 net/sunrpc
1252 net/sctp
1184 net/wireless
1180 net/batman-adv
672 net/bridge
fs:
果然xfs当了大头,nfs,ext4,nfsceph等等
root@iZt4n98ewjqvn9dxd7lg5gZ:~/linux-4.19# du --max-depth=1 fs/ | sort -rn | head -20
39628 fs/
4192 fs/xfs
3584 fs/btrfs
3548 fs/nls
2788 fs/ocfs2
2096 fs/cifs
2080 fs/nfs
1544 fs/ext4
1100 fs/ubifs
1060 fs/ntfs
1020 fs/nfsd
984 fs/reiserfs
920 fs/jfs
900 fs/f2fs
868 fs/gfs2
704 fs/ceph
688 fs/nilfs2
636 fs/jffs2
536 fs/dlm
512 fs/afs