问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Linux内核源码如何编译

发布网友 发布时间:2022-04-19 13:59

我来回答

4个回答

热心网友 时间:2022-04-18 22:37

首先uname -r看一下你当前的linux内核版本

1、linux的源码是在/usr/src这个目录下,此目录有你电脑上各个版本的linux内核源代码,用uname -r命令可以查看你当前使用的是哪套内核,你把你下载的内核源码也保存到这个目录之下。
2、配置内核 make menuconfig,根据你的需要来进行选择,设置完保存之后会在当前目录下生成.config配置文件,以后的编译会根据这个来有选择的编译。
3、编译,依次执行make、make bzImage、make moles、make moles
4、安装,make install
5、.创建系统启动映像,到 /boot 目录下,执行 mkinitramfs -o initrd.img-2.6.36 2.6.36
6、修改启动项,因为你在启动的时候会出现多个内核供你选择,此事要选择你刚编译的那个版本,如果你的电脑没有等待时间,就会进入默认的,默认的那个取决于 /boot/grub/grub.cfg 文件的设置,找到if [ "${linux_gfx_mode}" != "text" ]这行,他的第一个就是你默认启动的那个内核,如果你刚编译的内核是在下面,就把代表这个内核的几行代码移到第一位如:
menuentry 'Ubuntu, with Linux 3.2.0-35-generic' --class ubuntu --class gnu-linux --class gnu --class os {

recordfail
gfxmode $linux_gfx_mode
insmod gzio
insmod part_msdos
insmod ext2
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set=root 9961c170-2566-41ac-8155-18f231c1bea5
linux/boot/vmlinuz-3.2.0-35-generic root=UUID=9961c170-2566-41ac-8155-18f231c1bea5 ro quiet splash $vt_handoff
initrd/boot/initrd.img-3.2.0-35-generic
}
当然你也可以修改 set default="0"来决定用哪个,看看你的内核在第几位,default就填几,不过我用过这种方法,貌似不好用。

重启过后你编译的内核源码就成功地运行了,如果出现问题,比如鼠标不能用,usb不识别等问题就好好查查你的make menuconfig这一步,改好后就万事ok了。

最后再用uname -r看看你的linux内核版本。是不是你刚下的那个呢!有没有成就感?
打字不易,如满意,望采纳。

热心网友 时间:2022-04-18 23:55

1、大概步骤:
1、安装开发包组
2、下载源码文件
3、.config:准备文本配置文件
4、make
menuconfig:配置内核选项
5、make
[-j
#]
6、make
moles_install:安装模块
7、make
install
:安装内核相关文件
安装bzImage为/boot/vmlinuz-VERSION-RELEASE
(去boot目录下查看)
生成initramfs文件
8、编辑grub的配置文件
2、编译配置选项
配置内核选项
支持“更新”模式进行配置:
make
help
(a)
make
config:基于命令行以遍历的方式去配置内核中可配置的每个选项
(b)
make
menuconfig:基于curses的文本窗口界面
(c)
make
gconfig:基于GTK
(GNOME)环境窗口界面
(d)
make
xconfig:基于QT(KDE)环境的窗口界面
支持“全新配置”模式进行配置
(a)
make
defconfig:基于内核为目标平台提供的“默认”配置进行配置
(b)
make
allyesconfig:
所有选项均回答为“yes“
(c)
make
allnoconfig:
所有选项均回答为"no“
3、编译
全编译:make
[-j
#]
编译内核的一部分功能:
a)
只编译某子目录中的相关代码:
#
cd
/usr/src/linux
#
make
dir/
(b)
只编译一个特定的模块:
#
cd
/usr/src/linux
#
make
dir/file.ko
例如:只为e1000编译驱动:
#make
drivers/net/ethernet/intel/e1000/e1000.ko
4、编译内核
如何交叉编译内核:
编译的目标平台与当前平台不相同;
#
make
ARCH=arch_name
要获取特定目标平台的使用帮助
#
make
ARCH=arch_name
help
#
make
ARCH=arm
help
5、清理删除
在已经执行过编译操作的内核源码树做重新编译:
需要事先清理操作:
#
make
clean:清理大多数编译生成的文件,但会保留config文件等
#
make
mrproper:
清理所有编译生成的文件、
config及某些备份文件
#
make
distclean:
mrproper、
patches以及编辑器备份文件
卸载内核
删除/lib/moles/目录下不需要的内核库文件
删除/usr/src/linux/目录下不需要的内核源码
删除/boot目录下启动的内核和内核映像文件
更改grub的配置文件,删除不需要的内核启动列表
需要解决更多linux问题,详情请看
http://www.linuxprobe.com/chapter-00.html
望采纳

热心网友 时间:2022-04-19 01:30

编译linux内核步骤:
1、安装内核
如果内核已经安装(/usr/src/目录有linux子目录),跳过。如果没有安装,在光驱中放入linux安装光盘,找到kernel-source-2.xx.xx.rpm文件(xx代表数字,表示内核的版本号),比如RedHat
linux的RPMS目录是/RedHat/RPMS/目录,然后使用命令rpm
-ivh
kernel-source-2.xx.xx.rpm安装内核。如果没有安装盘,可以去各linux厂家站点或者www.kernel.org下载。
2、清除从前编译内核时残留的.o
文件和不必要的关联
cd
/usr/src/linux
make
mrproper
3、配置内核,修改相关参数,请参考其他资料
在图形界面下,make
xconfig;字符界面下,make
menuconfig。在内核配置菜单中正确设置个内核选项,保存退出
4、正确设置关联文件
make
dep
5、编译内核
对于大内核(比如需要SCSI支持),make
bzImage
对于小内核,make
zImage
6、编译模块
make
moles
7、安装模块
make
moles_install
8、使用新内核
把/usr/src/linux/arch/i386/boot/目录内新生成的内核文件bzImage/zImage拷贝到/boot目录,然后修改/etc/lilo.conf文件,加一个启动选项,使用新内核bzImage/zImage启动。格式如下:
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
linear
default=linux-new
###
告诉lilo缺省使用新内核启动linux
###
append="mem=256M"
image=/boot/vmlinuz-2.2.14-5.0
label=linux
read-only
root=/dev/hda5
image=/boot/bzImage(zImage)
label=linux-new
read-only
root=/dev/hda5
保留旧有的启动选项可以保证新内核不能引导的情况,还可以进入linux进行其他操作。保存退出后,不要忘记了最重要的一步,运行/sbin/lilo,使修改生效。
9、重新生成ram磁盘
如果您的系统中的/etc/lilo.conf没有使用了ram磁盘选项initrd,略过。如果您的系统中的/etc/lilo.conf使用了ram磁盘选项initrd,使用mkinitrd
initrd-内核版本号,内核版本号命令重新生成ram磁盘文件,例如我的Redhat
6.2:
mkinitrd
initrd-2.2.14-5.0
2.2.14-5.0
之后把/etc/lilo.conf中的initrd指向新生成的initrd-2.2.14-5.0文件:
initrd=/boot/initrd-2.2.14-5.0
ram磁盘能使系统性能尽可能的优化,具体参考/usr/src/linux/Documents/initrd.txt文件
10、重新启动,OK!

热心网友 时间:2022-04-19 03:21

你想编译你最起码得懂吧,懂的话编译软件网上多的是,你可以查一下
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
64岁的老头感冒了,还喝一瓶啤酒,又喝3包感冒药,吃了3个阿莫西林消炎药... ...今天中午12点喝了一瓶啤酒,不会有反应死了吧? 喝一瓶啤酒吃药没事吧 养育孩子有哪些正确的方式? 联想电脑一开机就蓝屏怎么解决 光遇冥想任务怎么完成_冥想任务攻略 光遇 光遇云野的锦鲤池冥想怎么做? 光遇 光遇在滑冰场旁冥想的任务怎么做? 光遇在仙乡的金塔下冥想任务怎么做 任务达成方法介绍 光遇 光遇在禁阁的神坛旁冥想怎么做? 如何编译linux的x86内核 如何给linux安装新内核? linux内核编译问题 vmware内编译好内核如何在其他... 如何在Ubuntu/CentOS上安装Linux内核4.0 linux如何编译安装新内核支持NTFS文件系统( Linux内核配置与编译相关流程 如何重新编译linux内核 如何给linux安装新内核 如何编译Linux内核 Linux内核重新编译后,怎样安装? 如何编译安装Linux内核 linux编译内核步骤 手机屏幕进水了怎么办急, 昨天回家发现手机连上了Wifi,但不能上网,然后去... QQ语音聊天一个人闭麦另一个人手机上提示的对方关... QQ通话我已经关了麦克风,但是别人的电脑显示我还... QQ通话的麦克风关闭了,对方能听到声音吗? 维生素E干嘛使的 黄泉下相见和渐见愁煎迫e用法相同吗 永久佳人天然维生素e Linux内核编译 如何在Linux上安装内核头文件 怎么在WIN7下编译Linux内核 手机爱奇艺快捷方式在哪个文件夹 爱奇艺视频下载的视频在文件管理器的哪里 爱奇艺mac版怎么下载视频 用window10的系统下了一个爱奇艺的视频,又下了爱... ipad爱奇艺下的视频为什么都是快进的 爱奇艺如何下载PPS的视频 在爱奇艺上下载了一个视频,怎么上传到百度云 下载爱奇艺极速版收费吗 流感病毒怎么悄然转变了? 流感怎么治? 最近的流感情况 最近流感很厉害该怎么办 流感肆虐怎么办? 最近流感怎么这么严重啊? 最近流感猖獗,已经患了流感,该怎么办? 今年流感优势毒株发生变异了吗? 流感的治疗方法有哪些?怎么治好的快呢?