确保 Linux 内核编译完成 , 没有任何报错之后 ; 参考 【Linux 内核】编译 Linux 内核 ⑥ ( 安装 OpenSSL | 安装其它依赖库 | 内核编译完成 ) 博客 ;
最近新采购的一批机器,由于intel cpu体系架构的改变,新机器的系统需要升级,选择了CentOS 6.2系统。
基于X86架构的Linux内核,在移植驱动的过程中,发现GPIO和I2C的device ID添加到pnp驱动框架后无法进入probe函数,后面找了下原因,因为pnp遵循的是ACPI规范,是由于如下Hardware ID字段是需要从BIOS中进行描述的,而目前的驱动匹配不到对应的字段,自然就不可能注册成功了。 PNP是什么东西?不是三极管的那个PNP啦,这个PNP表示的是:Plug-and-Play,译文为即插即用。 PNP的作用是自动配置底层计算机中的板卡和其他设备,然后告诉对应设备都做了什么。PnP的任务是把物理设备和软件设备驱动程序相配合,并操作设备,在每个设备和它的驱动程序之间建立通信信道。然后,PnP分配下列资源给设备和硬件:I/O地址、IRQ、DMA通道和内存段。即插即用设备配置的控制权将从系统BIOS传递到系统软件,所以驱动中一定会有代码进行描述,到时可以跟一下这部分的代码深入了解一下。由于PNP遵循ACPI的规范,那么既然是规范,那肯定要照着做了,规范怎么说,那就怎么做。 以下是关于ACPI Spec中对Hardware ID的描述,描述如下:
① 实例化platform_driver结构体probe成员 ② 实例化platform_driver结构体remove成员 ③ 选择一种方式匹配(设备树,ACPI,名字,ID四选一)
1、在当前目录中,查找后缀有 file 字样的文件中包含 test 字符串的文件,并打印出该字符串的行。此时,可以使用如下命令:
上次跟大家分享了设备模型的一些东西,包括总线、设备、驱动等的一些概念,还有他们之间的联系。今天要分享的是platform总线驱动,platform总线是总线的一种,这是相对于物理总线来说的,这是一种虚拟的总线。
我们可以轻松地通过图形化界面查看当前电量百分比、是否在充电以及当前电量还可以使用多长时间等电池状态,但是却无法查看电池健康度等相关信息。
使用的是雷神911笔记本,安装了Deepin 20操作系统,安装的整个过程非常的顺利,但是每次开机启动系统都会提示几行ACPI ERROR之类的错误,每次都能看到这几行的白色字错误,有点碍眼,所以要把它处理掉。经过查找,在国外的Linux社区当中找到了答案,以下把解决方法分享下,有同样错误的网友可以照着操作。
少说废话,每一步都经过验证: 1. 首先查看一下当前使用的linux版本: gxjun@gxjun:~$ uname -r 4.8.0-59-generic 2. 将360wifi插入PC的USB中,然后输入: gxjun@gxjun:~$ lsusb Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 003: ID 09da:c10a A4Tech Co., Ltd. Bus 0
# This perl script parses a MySQL slow_queries log file
ACPI System Locality Distance Information Table (SLIT): The relative distance between nodes on a system.
内核引导参数大体上可以分为两类:一类与设备无关、另一类与设备有关。与设备有关的引导参数多如牛毛,需要你自己阅读内核中的相应驱动程序源码以获取其能够接受的引导参数。比如,如果你想知道可以向 AHA1542 SCSI 驱动程序传递哪些引导参数,那么就查看 drivers/scsi/aha1542.c 文件,一般在前面 100 行注释里就可以找到所接受的引导参数说明。大多数参数是通过"__setup(... , ...)"函数设置的,少部分是通过"early_param(... , ...)"函数设置的,逗号前的部分就是引导参数的名称,后面的部分就是处理这些参数的函数名。
这个问题困扰我好久,真的很烦人,一般网上的解决方式也不是特别好用。后来说一下我的解决方案
该文讲述了如何安装和使用Red Hat 5.8操作系统,总结了一些安装过程中需要注意的问题和解决方法。
grep指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设grep指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为"-",则grep指令会从标准输入设备读取数据。
1)首先根据"snps,dwc3"进行dts和driver的匹配,执行dwc3_probe()
前言: kvm-clock,tsc,hpet,acpi_pm,pit,rtc。。。这些词看着都晕了@@ 虚拟化场景下,容作者在这里一一道来。 分析: 1,Linux clocksource 以Li
安装 kvm 虚拟化并且安装客户机之后,通过 virsh shutdown 命令无法关闭客户机,只能通过 virsh destroy 进行强制关闭电源。虽然这也是一种方法,但是直接断电显然有点不妥,并且你并不知道何时会出现一些奇奇怪怪的问题。
First it isn't really an issue as the kernel is only letting you know that the Its first try to set TSC failed. It just resorts to another method. The message Is harmless and trivial about what level to print it at. Adding "clocksource=apcipm" near the beginning of "GRUBCMDLINELINUXDEFAULT=" just tells it directly to use an acpi based motherboards power management timer. if "clocksource=acpi_pm" fails for some reason try "clocksource=hpet"...(may work) or check here to see if there are other options:
前言: 前文《[qemu][acpi]从虚拟化看ACPI》中,介绍了ACPI的大概逻辑,以及ACPI sleep的S1,S2,S3(STR),S4(STD),S5状态。 关于节电,intel提供了c-state和p-state的CPU级别的控制,linux也对其进行了支持。 分析: 1,c-state 关于c-state的详细解释,参考intel的文档https://software.intel.com/en-us/articles/power-management-states-p-states-c-states-and-package-c-states
前言: qemu启动之后,打出了log: qemu-system-x86_64: Warning: ACPI tables are larger than 64k. qemu-system-x86_64: Warning: migration may not work. qemu-system-x86_64: Warning: please remove CPUs, NUMA nodes, memory slots or PCI bridges. 分析: 1,acpi build 源代码qemu-2.8
KVM (Kernel-based Virtual Machine) 是基于 虚拟化扩展指令集 (Intel VT or AMD-V) 在 linux x86 平台上的 完全虚拟化 解决方案
来自 openEuler 的消息,在 Linux Kernel 5.10 中,华为提交的补丁(变更集,changeset)数量为 1434 个,占比 8.9%,排名第一;排名第二的 Intel 提交了 1297 个补丁,占比 8%。
(1)安装KVM组件 (2)编写和使用NAT启动脚本 (3)在NAT模式下启动虚拟机
使用iso模式做成启动盘后能直接存储文件,传统bios推荐用这种方式,分区方案选择MBR 使用dd模式做成启动盘后,需要自己划分分区才能存储文件,uefi推荐用这种方式,分区方案选择GPT
目前DragonOS的时间子系统,更新墙上时间其实是直接在时钟中断里面,调用update walltime,并且手动指定delta值来更新的。这导致了没法利用上时间子系统的校时相关的功能。并且,时间源并不一定是有时钟事件的。因此我最近在尝试把dragonos移植到云服务器的过程中,发现kvm-clock是没有时钟中断的,并且配置acpi pm timer的中断的教程/文档,我看了很久看不明白(后来是发现Linux的acpi_sci_ioapic_setup这个函数设置了acpi中断,但是目前dragonos里面实现它,难度还是有的)。
KVM 是指基于 Linux 内核的虚拟机(Kernel-based Virtual Machine)。 2006 年 10 月,由以色列的 Qumranet 组织开发的一种新的“虚拟机”实现方案。 2007 年 2 月发布的 Linux 2.6.20 内核第一次包含了 KVM 。增加 KVM 到 Linux 内核是 Linux 发展的一个重要里程碑,这也是第一个整合到 Linux 主线内核的虚拟化技术。
这VmWare的Linux里查看ioports的结果,不知道哪里有更完整的定义 -> sudo cat /proc/ioports 0000-0cf7 : PCI Bus 0000:00 0000-001f : dma1 0020-0021 : PNP0001:00 0020-0021 : pic1 0040-0043 : timer0 0050-0053 : timer1 0060-0060 : keyboard 0061-0061 : PNP0800:00 0064-0064 : keyboard 00
休眠,简而言之就是设备在不需要工作的时候把一些部件、外设关掉(掉电或让它进入低功耗模式)。 为什么要休眠呢?一言以蔽之:省电。 休眠分主动休眠和被动休眠。主动休眠:比如我电脑不用了,就通过设置让系统进入休眠模式;被动休眠:系统检测到自己闲的慌,为了节约故,自己就休眠去了。
virsh 可以通过 reboot、shutdown 来重启或关闭对应的虚拟机。由于其原理是host通过发送acpi指令来控制虚拟机的电源,如果guest 系统没有安装acpi服务器或该服务器没有启动,那么虚拟机将不会重启或关闭,那么只有使用destroy 来强制关闭。
随着互联网业务的快速发展,基础设施的可用性也越来越受到业界的关注。内存发生故障的故障率高、频次多、影响大,这些对于上层业务而言都是不能接受的。
你想知到你的Linux系统使用那个版本的内核吗?本篇文章为大家分享一下Linux查看内核版本的命令,借助命令行可以轻易的查看内核版本,下面一起来看看具体的方法吧。
在创建一个大小为16180M的lv,名字为root,挂载点为/,文件系统为ext4
Linux服务(Linux services)对于每个应用Linux的用户来说都很重要。关闭不需要的服务,可以让Linux运行的更高效,但并不是所有的Linux服务都可以关闭。今天安装了一次CentOs Linux,发现Linux启动的时候启动了好多服务,大部分都不知道是干什么的。因此着重了解了一下那些Linux服务(Linux services)可以关闭,那些Linux服务(Linux services)不能随意关闭。 在关闭Linux服务之前,需要了解一些概念: 什么是Linux服务/后台进程(Linu
要理解第一个问题,得先从ACPI(高级配置与电源接口)说起,ACPI是一种规范(包含软件与硬件),用来供操作系统应用程序管理所有电源接口。
休眠,简而言之就是设备在不需要工作的时候把一些部件、外设关掉(掉电或让它进入低功耗模式)。
对于VMWare、Virtual PC这些虚拟机软件,可能大家都比较熟悉。VirtualBox是德国一家软件公司InnoTek所开发的虚拟系统软件,它不仅具有丰富的特色,而且性能也很优异。更是开源的,成为了一个发布在GPL许可之下的自由软件。VirtualBox 可以在 Linux 和 Windows 主机中运行,并支持在其中安装 Windows (NT 4.0、2000、XP、Server 2003、Vista)、DOS/Windows 3.x、Linux (2.4 和 2.6)、OpenBSD 等系列的
前两天,VMware发布了一份安全公告,并修复了VMware ESXi、Workstation、Fusion和NSX-T中的六个安全漏洞。其中有两个漏洞属于TOCTOU(Time-of-check Time-of-use)竞争条件漏洞,既然现在漏洞已被修复,那我们就一起来看一看这两个TOCTOU漏洞的详细信息以及其对VMware系统的影响吧!
很多时候,我们需要下载软件的时候,必须要知道我们使用的Linux系统是什么版本,32还是64位等等,可以使用最简单的命令查看:uname -a
为了在CPU空闲时节约能源,可以命令CPU进入低功耗模式。C-state是intel CPU处于空闲时的一种状态,CPU有几种电源模式,它们统称为“c状态”或“c模式”
Linux 下的 /proc 文件系统中提供了许多有用的信息,除了基本的CPU使用率、版本号等,你甚至还可以在这里直接看到内核的输出。下面这张表,简单列举 /proc 中文件的含义:
drwxr-xr-x. 2 root root 4096 Dec 8 00:44 1d
Linux 内核中 , 通过 bitmap 管理 CPU 处理器 , 并且在 Linux 源码中的 linux-5.6.18\include\linux\cpumask.h 头文件源码中 , 定义了 CPU 的四种状态 :
kernel会将开机信息存储在ring buffer中。您若是开机时来不及查看信息,可利用dmesg来查看。开机信息亦保存在/var/log目录中,名称为dmesg的文件里。
如果在公有云上买了一台虚拟机,如何知道虚拟机运行在什么hypervisor上呢?如果买的是一台裸机如何确认公有云不是拿一台虚拟机滥竽充数裸机呢?一般公有云厂商为了安全不暴露底层,留给用户有限的api做一些非常简单的操作,为了一些功能还给镜像里预装了很多组件,完全不对称,用户在公有云厂商面前裸奔,公有云厂商在用户面前带着层层的面具。
不同的外部设备、不同的体系结构、不同的OS其中断实现机制都有差别,本文对应的OS为linux3.4版本,外部设备为PCI设备、系统为X86。
上次我们写过了 Linux 启动详细流程,这次单独解析 start_kernel 函数。
领取专属 10元无门槛券
手把手带您无忧上云