标签:target virt upd kernel 时间 sage intel dma 声音
1,包组:Development Tools,Server Platform Development
2,包:ncurses和ncurses-dev
3,如果是图形界面,则需要额外的GTK或者QT的包组。
1,获取cpu的信息
cat /proc/cpuinfo
方法2:
# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 1
Core(s) per socket: 4
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 142
Model name: Intel(R) Core(TM) i5-8350U CPU @ 1.70GHz
Stepping: 10
CPU MHz: 1896.003
BogoMIPS: 3792.00
Hypervisor vendor: KVM
Virtualization type: full
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 6144K
NUMA node0 CPU(s): 0-3
方法3:详细显示cpu信息。
# yum install x86info
# x86info -a
2,获取pci总线上的设备信息
显卡,网卡,鼠标,键盘都是连的pci总线。
详细-v:显示显示。
# lspci
00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
00:01.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01)
00:02.0 VGA compatible controller: VMware SVGA II Adapter
00:03.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet Controller (rev 02)
00:04.0 System peripheral: InnoTek Systemberatung GmbH VirtualBox Guest Service
00:05.0 Multimedia audio controller: Intel Corporation 82801AA AC'97 Audio Controller (rev 01)
00:06.0 USB controller: Apple Inc. KeyLargo/Intrepid USB
00:07.0 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 08)
00:08.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet Controller (rev 02)
00:0d.0 SATA controller: Intel Corporation 82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [AHCI mode] (rev 02)
# lspci -v
3,获取usb设备信息
# lsusb
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
4,获取磁盘设备信息
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 60G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 59G 0 part
├─centos-root 253:0 0 37G 0 lvm /
├─centos-swap 253:1 0 3.9G 0 lvm [SWAP]
└─centos-home 253:2 0 18.1G 0 lvm /home
sdb 8:16 0 1G 0 disk
sdc 8:32 0 1G 0 disk
sdd 8:48 0 1G 0 disk
└─sdd1 8:49 0 900M 0 part
sr0 11:0 1 1024M 0 rom
5,获取全部硬件设备信息,类似windows的资源管理器
# hal-device
1,获取内核源代码
本机内核是linux-3.10.0
# wget http://cdn.kernel.org/pub/linux/kernel/v3.x/linux-3.10.67.tar.xz
内源码放在/usr/src下
# tar xf linux-3.10.67.tar.xz -C /usr/src
# ls /usr/src
debug kernels linux-3.10.67
当缺少设备驱动时,我们要编译内核源码,以获得驱动。
为什么编译内核就能获得驱动呢?
内核的源代码,基本包括所有硬件的驱动,但是我们安装的系统也是编译出来的,编译的时候没有包含你要用的驱动的源代码。所以只要在编译的时候,把你要的驱动的源代码包含进来,编译出来的系统就支持你要的设备了。当然前提是,kernel源代码里有你要的驱动的代码,如果没有,那么再怎么编译内核也得不出你要得驱动。
这时编译会去找/usr/src/linux目录,但是没有此目录,只有/usr/src/linux-3.10.67目录,不要直接修改linux-3.10.67目录的名字,建立符号链接。
理由是:当又有新版本进来时,直接把符号链接改到新版本上就号,这样一来,新版本不好用了,修改符号链接,还能执行旧的
# ln -sv linux-3.10.67 linux
‘linux’ -> ‘linux-3.10.67’
# ls linux
arch CREDITS drivers include Kbuild lib mm REPORTING-BUGS
security usr block crypto firmware init Kconfig MAINTAINERS net
sound virt Documentation fs ipc kernel Makefile
目录arch里,基本包括了所有架构的cpu:
# ls linux-3.10.67/arch/
alpha arm64 c6x h8300 Kconfig metag mn10300 powerpc sh um xtensa
arc avr32 cris hexagon m32r microblaze openrisc s390 sparc unicore32
arm blackfin frv ia64 m68k mips parisc score tile x86
目录block里,块设备驱动:
# ls linux-3.10.67/block/
blk-cgroup.c blk.h blk-map.c blk-tag.c cfq-iosched.c ioctl.c
目录crypto里,加密算法:
# ls linux-3.10.67/crypto
842.c asymmetric_keys cipher.c eseqiv.c md4.c scatterwalk.c twofish_common.c
目录Documentation里,kernel的文档
# ls linux-3.10.67/Documentation/
目录drivers里,基本上包括了所有设备的驱动:
# ls linux-3.10.67/drivers/
accessibility cdrom dma hwmon isdn message parisc pwm
firmware目录,主板固件驱动:
# ls linux/firmware/
3com bnx2x emi26 korg ositech tehuti
fs目录,文件系统:
# ls linux/fs
9p block_dev.c drop_caches.c fs_struct.c Kconfig.binfmt ocfs2
init目录,/sbin/init程序:
# ls linux/init
calibrate.c do_mounts.h do_mounts_md.c initramfs.c Kconfig Makefile version.c
do_mounts.c do_mounts_initrd.c do_mounts_rd.c init_task.c main.c noinitramfs.c
ipc目录,进程间通信:
# ls linux/ipc
compat.c ipcns_notifier.c Makefile mqueue.c msgutil.c sem.c syscall.c util.h
compat_mq.c ipc_sysctl.c mq_sysctl.c msg.c namespace.c shm.c util.c
kernel目录,内核自己
lib目录,库
mm目录目录:内存管理
net目录目录:网络管理
samples目录:实例
scripts目录:编译时,安装时使用的脚本
security目录:安全相关
sound目录:声音相关
tools目录:工具
virt目录:虚拟化
# ls linux/virt/
kvm
2,获取make帮助:
cd进入/usr/src/linux目录,执行make help
获取帮助
....
Configuration targets:
config - Update current config utilising a line-oriented program
nconfig - Update current config utilising a ncurses menu based program
menuconfig - Update current config utilising a menu based program
....
3,配置kernel安装选项,类似源码安装里的configure
# make menuconfig
如果没有安装ncurses-devel会出错误:unable to find the ncurses library,所以需要安装:yum install ncurses-devel
执行成功后,显示menu界面:
配置内核安装选项过于复杂,找个模板使用,centos的/boot目录下有个文件:config-3.10.0-957.el7.x86_64。
此文件是,centos做的配置文件,可以参考使用。
make menuconfig执行后,会在/usr/src/linux/目录下生成.config文件,所以我们不做make menuconfig了,直接把config-3.10.0-957.el7.x86_64复制从.config文件。
# cp /boot/config-3.10.0-957.el7.x86_64 /usr/src/linux/.config
# cat /usr/src/linux/.config
CONFIG_64BIT=y
CONFIG_X86_64=y
CONFIG_X86=y
CONFIG_INSTRUCTION_DECODER=y
CONFIG_OUTPUT_FORMAT="elf64-x86-64"
...
支持在已有的.config文件基础上进行修改
支持从0开始配置
centos做的配置文件,有很多是用不到的,再使用make menuconfig,关闭不要的功能。
# make menuconfig
[ ]:不编译,不使用
[M]:编译成模块,不编译进内核
[*]:直接编译进kernel
(1)修改cpu:
默认的cpu驱动是General-x86-64。是通用的驱动,但不能完全发挥酷睿cpu的作用,所以修改成core(酷睿)
修改后:
(2)添加release号
(3)关闭蓝牙功能:
(4)添加ntfs文件系统的驱动(默认配置里是没有添加ntfs的):
4,编译内核:make [-j #]
。多核心可以使用-j,指定编译线程的数量,编译非常消耗cpu。
由于编译很花时间,如果是远程连接的话,ssh万一断开了,编译一般就前功尽弃了。所以要利用一个叫screen的工具。
screen的好处是,当ssh断开后,编译还会继续。
yum install screen
screen
screen -ls
screen -r screen号
exit
使用screen编译:
# screen
进入了screen,在screen里执行编译
# make -j 4
编译时,可以退出screen。在终端使用‘htop‘看看,发现cpu基本都是100%运行了。
只编译某子目录种的相关代码:
# cd /usr/src/linux
# make path/to/dir/
只编译一个特定的模块
# cd /usr/src/linux
# make path/to/dir/file.ko
file其实是xxxx.c,要把.c去掉,换成.ko
# make ARCH=arch_name
获取特定目标平台的使用帮助:
# make ARCH=arch_name help
arch_name可以是arm等。
需要先执行清理:
然后从新编译。
5,安装模块(modules):make modules_instal
模块安装完成后,在目录/lib/modules里多出3.10.67-1.el7。【-1.el7】是在配置编译选项是加的。
# ll /lib/modules
total 4
drwxr-xr-x. 8 root root 4096 Feb 23 09:18 3.10.0-957.el7.x86_64
drwxr-xr-x. 3 root root 91 Feb 23 22:14 3.10.67-1.el7
6,安装内核:make install
。会自动生成grub
安装成功后,在boot目录生成了:
kernel:vmlinuz-3.10.67-1.el7
ramdisk:initramfs-3.10.67-1.el7.img
各种映射:System.map-3.10.67-1.el7
# ls -lrt /boot
-rw-r--r--. 1 root root 4776128 Feb 23 22:18 vmlinuz-3.10.67-1.el7
-rw-r--r--. 1 root root 2828222 Feb 23 22:18 System.map-3.10.67-1.el7
lrwxrwxrwx. 1 root root 27 Feb 23 22:18 vmlinuz -> /boot/vmlinuz-3.10.67-1.el7
lrwxrwxrwx. 1 root root 30 Feb 23 22:18 System.map -> /boot/System.map-3.10.67-1.el7
-rw-------. 1 root root 48045100 Feb 23 22:19 initramfs-3.10.67-1.el7.img
并且在/etc/grub2.cfg文件里多出了:
### BEGIN /etc/grub.d/10_linux ###
menuentry 'CentOS Linux (3.10.67-1.el7) 7 (Core)' --class cento
7,重启系统选择新的内核。
标签:target virt upd kernel 时间 sage intel dma 声音
原文地址:https://www.cnblogs.com/xiaoshiwang/p/12354940.html