Linux 不能识别新硬件的解决思路分享

今天分享一位客户的 Kali Linux 在惠普光影精灵8 笔记本的无线网卡和声卡安装的经历。供相似情况的朋友参考。简单来说,就是现在的新硬件在 Linux 下如果不能识别,使用两种方法解决问题的概率比较大。升级内核及安装固件。视频演示地址: https://www.bilibili.com/video/BV11W4y1x7R1/?share_source=copy_web&vd_source=d1925b070926f23b2b6676137251e9ea

Continue reading "Linux 不能识别新硬件的解决思路分享"

在华擎 Asrock Z87 Pro3 主板上安装 CentOS 7

这几天,我把 centos 7 安装在我的 i7 4770 + asrock z87 pro3 上机器上。 主要解决了:连同 /boot 在内的根分区安装在 software raid0 上的 lvm 分区上,gdm 不能引导进入图形界面,vnc 连接的桌面上的虚拟机系统鼠标光标延迟,epel 库里的 xfce4-settings 崩溃,vnc 连接里面 xfce4 桌面的输入法,关机却自动重启,alrt 报内核崩溃出错 [Hardware Error]: Machine check events logged,在 CentOS 7 中使用新的内核等问题。这里记录一下要点作为备忘,详细步骤就免了。感兴趣的朋友可以留言互相探讨。
Continue reading "在华擎 Asrock Z87 Pro3 主板上安装 CentOS 7"

LFS 学习日记(第八章 使 LFS 可以启动 )

2010年10月23日 星期六
/LFS-BOOK-6.6-HTML/chapter08/chapter08.html
8. Making the LFS System Bootable
/LFS-BOOK-6.6-HTML/chapter08/introduction.html
8.1. Introduction
/LFS-BOOK-6.6-HTML/chapter08/fstab.html
8.2. Creating the /etc/fstab File Continue reading "LFS 学习日记(第八章 使 LFS 可以启动 )"

为486上的Linux编译一个2.4.35.3的内核

在实现为我的486装一个可用的linux with X Windows的目标中,为了让486机器运行得更快一点,加之Redhat linux 9.0原来自带的2.4.20-8的内核竟然不能驱动我的另一块ISA Express 16位网卡。所以决定为它定制一个内核。

因为我原来曾试过在redhat linux9.0上升级到2.6的内核,没有成功,而且看到网上的文章Linux 2.4->2.6内核升级指南(转帖),觉得太麻烦,以够用就行的原则,就没继续尝试。这次使用了定制的内核后,使启动后内存占用少了近2M,系统速度有明显的加快。下面是一些相关的心得。

1、为了让系统支持Framebuffer,把“Code maturity level options”中的“prompt for development and/or incomplete code/drivers”编译进核心(选择Y),否则后面“Framebuffer”支持的选项是灰化的。即在内核编译配置文件.config中这一项是这样的:

#
# Code maturity level options
#
CONFIG_EXPERIMENTAL=y

2、Processor type and features,选的是486,即在内核编译配置文件.config的选项是这样的:

# Processor type and features
#
# CONFIG_M386 is not set
CONFIG_M486=y

3、由于486处理器没有TSC计数器,所以有关TSC的选项一定要选为禁止。具体作法就是:[*] Unsynced TSC support(选为Y)。否则机器会无法启动,报告”这是为Pentium+编译的内核”之类的错误信息: "Kernel panic: Kernel compiled for Pentium+, requires TSC feature!"。即在内核编译配置文件.config中有关项是这样的:

# CONFIG_M586TSC is not set
...
# CONFIG_X86_TSC is not set
...
CONFIG_X86_TSC_DISABLE=y

这个问题还让我耽误了不短的时间,从Erik Mouw: "2.4.26 doesn't boot on a 386 without "Unsynced TSC support""处得到提示,从而解决这个问题。

4、把Character Devices中的Enhanced RealTime Clock选为Y(大概是这样的,好像选成M也行),否则会出现“could not locate char-major-10-135”的问题。

5、把486主板没有的PCI, AGP, SCSI, USB之类的东西统统去掉;

6、选项486的sound blaster兼容ISA声卡,要先把OSS SOUND的选项打开才能看见。即:

#
# Sound
#
CONFIG_SOUND=y
...
CONFIG_SOUND_OSS=m
...
CONFIG_SOUND_SB=m

7、选择10M的ISA网卡,首先在前要开启网络设置的选项,然后要先选择ISA网卡的选项,才能选择下面的具体ISA网卡型号,如下的配置文件内容:

CONFIG_NET=y
...
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
...
CONFIG_NET_ISA=y
...
CONFIG_EEXPRESS=m
...
CONFIG_NE2000=m

8、为了能为另一台机器提供nat共享上网,查了一下资料, 使Networking options中的相应选项“CONFIG_PACKET=y”和“CONFIG_NETFILTER=y”等。
我的具体作法大概是(也许记错了一些项目):
[*] Network packet filtering (replaces ipchains)
[*] Network packet filtering debugging (NEW)
即上面两项选为Y。
然后后面的“IP: Netfilter Configuration ---> ”下面除了最后面老版本内核里使用的两个项目不选,其它选项包括选项里面任一层次的子项全部编译为模块(即选为M)。最后面老版本内核里使用的两个项目如下:
ipchains (2.2-style) support (NEW)
ipfwadm (2.0-style) support (NEW)
,这两项不选。
关于Networking options内核编译中原来默认了的其它那些选项我没动。

9、一个小失误,造成挂载windows分区无法指定字符集(即mount /dev/hdb1 -o iocharset=gb2312,codepage=936之类的选项会出错),我想应该是内核编译时“Native Language Support”(本地语言支持)的选项没选上相应的语言,在.config配置文件的内容大概如下:

#
# Native Language Support
#
CONFIG_NLS_DEFAULT="iso8859-1"
...
# CONFIG_NLS_CODEPAGE_936 is not set

我想,如果配置了内核中的本地语言的“codepage 936”的支持,即上面的“CONFIG_NLS_CODEPAGE_936=Y(或M)”,上面的错误就不会出现了。

还有,也许正是没有在内核编译时配置这个NLS,启动系统后用/sbin/lsmod查看,原来的系统(自带的2.4.20-8内核)中自动加载了nls_iso8859-1和nsl_cp437两个模块,而我编译后的系统(2.4.35.3内核)却没有加载这两个模块。

有关这个codepage相关的知识见:CodePage简介(转)

另外,控制台下的zhcon原来可以正常使用,而在新内核下的系统中,只有root用户可以正常使用,一般的用户可以输入汉字,但不能用CTRL+SPACE切换输入法,也不能用CTRL+ALT+H调出帮助菜单,一般 的用户必须先用root用户登录开启zhcon后再切换到一般用户才能完全正常使用。但还没有证实zhcon出现的异常是否跟NLS的内核编译有关。或许是其它什么相关的内核编译选项弄错了。而且, 这个问题我以前在ubuntu6.0.6+AMDK6-2的机器上碰到过, 到现在也没有找到原因。在ubuntu上并没有重新编译内核。详见: [问题]非root用户不能切换zhcon的输入法,也不能用ctrl+alt+h

总之,由于机器太老,内存太少,这次的内核编译是能去掉就去掉,能编译成模块的就不编译进核心。最后的内核是814338字节。

但是,按照一些网友的意见,内核没必要时最好不好自己编译,就用发行版自带的。我也感觉应该是这样的,因为发行版的内核是专家精心编译的,它的性能和适用性应该是比较好的。对内核的选项,我想不少选项对不少人都是一知半解的(我就是),如果这样的状态编译出来的内核作为正式的作业系统肯定是不保险的。正如一位网友的看法:自己编译内核,玩玩还可以。所以,上面的文字仅供参考! 如果上面的文字有任何错漏之处还望指点一二,谢谢。

Linux内核配置(links for 2007-10-30)