今日遇到一个问题,就是刚刚安装完成的rhel6,进入字符模式字体很大,屏幕上能显示的内容太少了,仔细想想应该是分辨率比较小的原因,所以上网查询了一下,大部分都是在grub的kernel后面加上 vga=xxx 就可以搞定,所以一开始设置 vga=791 正常显示,但是据网上介绍 791 = 1024 x 768 的分辨率,我的显示器是宽屏,很显然这个分辨率也相对较小,然后将vga设置为 794,结果启动的时候出现了一个分辨率设定程序,其中是一对vga和vesa相关的东东,最后经过苦苦查找,发现下面文章,终于明白其中原理:

原文出处

我的电脑是ATI X700Pro的显卡,使用fglrx的驱动的情况下在X下1024x768@85Hz很正常,但是要切换到控制台就有问题了,花的!这就是图形模式到文 本模式的切换是分辨率不一致而出现的切换问题。这是就要给内核指定一个分辨率的参数。网上有很多很容易找到的现成答案,比如1024x768,24位色就 是vga=0x318,如果使用lilo装载据说不能处理16进制,就用vga=792,但是这个值是如何得到的,我在网上查了很久,才找到答案。

事实上,给内核的vga的参数值是有VESA(Vedio Electronic Standard Association)规定的SVGA的视频模式信号决定的。计算公式如下:

Linux_kernel_mode_number = VESA_mode_number + 0x200

VESA_mode_number在VESA的标准文档中有如下规定:

4. Super VGA mode numbers

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Standard VGA mode numbers are 7 bits wide and presently range from 00h to 13h.

OEMs have defined extended video modes in the range 14h to 7Fh. Values in the

range 80h to FFh cannot be used, since VGA BIOS function 00h (Set video mode)

interprets bit 7 as a flag to clear/not clear video memory.

Due to the limitations of 7 bit mode numbers, VESA video mode numbers are 15

bits wide. To initialize a Super VGA mode, its number is passed in the BX

register to VESA BIOS function 02h (Set Super VGA mode).

The format of VESA mode numbers is as follows:

D0-D8 = Mode number

If D8 == 0, this is not a VESA defined mode

If D8 == 1, this is a VESA defined mode

D9-D14 = Reserved by VESA for future expansion (= 0)

D15 = Reserved (= 0)

Thus, VESA mode numbers begin at 100h. This mode numbering scheme implements

standard VGA mode numbers as well as OEM-defined mode numbers as subsets of the

VESA mode number. That means that regular VGA modes may be initialized through

VESA BIOS function 02h (Set Super VGA mode), simply by placing the mode number

in BL and clearing the upper byte (BH). OEM-defined modes may be initialized in

the same way.

To date, VESA has defined a 7-bit video mode number, 6Ah, for the 800x600,

16-color, 4-plane graphics mode. The corresponding 15-bit mode number for this

mode is 102h.

The following VESA mode numbers have been defined:

GRAPHICS TEXT

15-bit 7-bit Resolution Colors 15-bit 7-bit Columns Rows

mode mode mode mode

number number number number

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

100h - 640x400 256 108h - 80 60

101h - 640x480 256

109h - 132 25

102h 6Ah 800x600 16 10Ah - 132 43

103h - 800x600 256 10Bh - 132 50

10Ch - 132 60

104h - 1024x768 16

105h - 1024x768 256

106h - 1280x1024 16

107h - 1280x1024 256

VESA Super VGA Standard VS911022-8

10Dh - 320x200 32K (1:5:5:5)

10Eh - 320x200 64K (5:6:5)

10Fh - 320x200 16.8M (8:8:8)

110h - 640x480 32K (1:5:5:5)

111h - 640x480 64K (5:6:5)

112h - 640x480 16.8M (8:8:8)

113h - 800x600 32K (1:5:5:5)

114h - 800x600 64K (5:6:5)

115h - 800x600 16.8M (8:8:8)

116h - 1024x768 32K (1:5:5:5)

117h - 1024x768 64K (5:6:5)

118h - 1024x768 16.8M (8:8:8)

119h - 1280x1024 32K (1:5:5:5)

11Ah - 1280x1024 64K (5:6:5)

11Bh - 1280x1024 16.8M (8:8:8)

以上来自VESA官方文档

这下就很容易理解了,1024x768,16.8M颜色的代码是118h。故对应就是在内核参数中写入vga=0x318或vga=792。

Linux内核参数值vga的意义,关于传递给Linux内核的vga参数的值的意义相关推荐

  1. 使用SSH完成linux和windows之间的文件互传(linux端)

    使用SSH完成linux和windows之间的文件互传(linux端) 参考链接 通过OpenSSH完成linux和Win10文件互传 最近项目需求,需要linux和windows端进行文件互传,lo ...

  2. python process返回值_如何恢复传递给multiprocessing.Process的函数的返回值?

    如何恢复传递给multiprocessing.Process的函数的返回值? 在下面的示例代码中,我想恢复函数的返回值worker.我该怎么做呢?这个值存储在哪里? 示例代码: import mult ...

  3. linux如何进入解释器路径,如何更改解释器路径并将命令行参数传递给Linux上的可执行共享库?...

    以下是"可执行"共享库的最小示例(假定文件名:)mini.c: // Interpreter path is different on some systems //+defini ...

  4. uboot通过u盘烧写linux内核,向Flash中烧写uboot和linux操作系统

    向Flash中烧写uboot和linux操作系统 2011年03月28日 向Flash中烧写uboot和linux操作系统 ====================================== ...

  5. XShell安装lrzsz实现文件上传到Linux服务器

    XShell安装lrzsz实现文件上传到Linux服务器 将windows本地文件上传到Linux主机上,可以使用XShell工具进行文件传输 1:使用xshell连接上一台Linux主机,输入rz命 ...

  6. linux登录百度网盘下载上传文件

    这里写自定义目录标题 linux登录百度网盘下载上传文件 linux登录百度网盘下载上传文件 参考一下的三个地址: 1.https://blog.csdn.net/huojiahui22/articl ...

  7. struts2获取请求参数的三种方式及传递给JSP参数的方式

    接上一篇文章 package test;import com.opensymphony.xwork2.ActionSupport; import javax.servlet.http.*; impor ...

  8. p值 统计学意义_统计学意义不重要为什么p值不应过高

    p值 统计学意义 Have you ever heard somebody say that a study revealed „significant results"? What doe ...

  9. Linux系统调用详解(实现机制分析)--linux内核剖析(六)

    本文介绍了系统调用的一些实现细节.首先分析了系统调用的意义,它们与库函数和应用程序接口(API)有怎样的关系.然后,我们考察了Linux内核如何实现系统调用,以及执行系统调用的连锁反应:陷入内核,传递 ...

最新文章

  1. Hibernate CRUD操作
  2. oracle 数据回滚,恢复误删的数据,闪回表功能的使用
  3. 你的微信二维码是唯一的吗?【微信二维码的秘密】
  4. nginx大量TIME_WAIT的解决办法 netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'...
  5. 三国志9加强版孙权情之章攻略-赤壁之战
  6. POJ 2230 Watchcow 欧拉回路的DFS解法(模板题)
  7. 看穿面试这件事儿……
  8. ncurses鼠标事件:mousemask(),ALL_MOUSE_EVENTS,KEY_MOUSE,getmouse(),mouse_grafo(),wmouse_trafo()
  9. express-art-template模板引擎(详细)
  10. 上传文件(ajax结合form表单)
  11. 基于React 的前端UI开发框架 及与Electron 的结合 https://cxjs.io/
  12. 【手指识别】基于matlab GUI指尖图像采集与检测【含Matlab源码 585期】
  13. 【Spring-tx】事务逻辑
  14. 了解数据库(包括数据库发展史、分类、著名人物、主流数据库、关系与非关系型数据库)
  15. 网站建设教程:新手如何自己建网站?
  16. Java中获取时间戳
  17. 中兴h118b改打印机服务器,TL-WR710N改打印机服务器 WR710硬改OpenWrt打印服务器
  18. android studio静态界面设计,2.3 使用Android Studio 简单设计UI界面
  19. 【vue】微信sdk中接口和标签本地调试
  20. git add所有文件

热门文章

  1. 《乐高EV3机器人搭建与编程》——1.3 LEGO单位
  2. 乐高ev3机器人打招呼流程代码呈现
  3. 钉钉如何发起直播?钉钉电脑版直播发起方法简述
  4. 请简要叙述在微型计算机使用过程都需要注意哪些事项?并说明了理由.,应用写作模拟试题及答案(参考模板)...
  5. RDM连接Redis配置
  6. 跳槽面试,外包履历能写在简历上吗?
  7. 今天是今年的的第几天
  8. Unity实现对电脑文件夹和文件的重命名方法
  9. bat脚本通用按键交互控制函数-onkeydown函数
  10. python程序调用写好的代码_扣丁学堂浅谈Python编程中NotImplementedError的使用方法...