如何编译Linux操作系统的源代码? 15

本人身为菜鸟,却对操作系统的源代码很感兴趣,下了源码一大把,却不知道怎么人家是怎么拿这写东东拼成一个完整的操作系统的。总不会是用TurboC或什么VC,DEPCPP吧?这... 本人身为菜鸟,却对操作系统的源代码很感兴趣,下了源码一大把,却不知道怎么人家是怎么拿这写东东拼成一个完整的操作系统的。总不会是用Turbo C或什么VC,DEP CPP吧?这些东东可多是Windows的工具啊!用Windows开发另一个操作系统,这个这个……应该不太可能吧?就算是编译了,可那咋调试呢?两个系统互相切换?
555……
WHO can show some answers?
展开
 我来答
圣马家沟
推荐于2016-08-15 · TA获得超过186个赞
知道小有建树答主
回答量:244
采纳率:61%
帮助的人:82.2万
展开全部
1. 检测/usr/src/linux/include/linux/version.h是否存在,以判断是否以安装内核源码,而如果只将内核源码包解压,并不存在version.h这个文件,所以需要做如下步骤:
在内核源码目录下(/usr/src/linux)
1)make include/linux/version.h 生成version.h文件
2)make include/asm 创建
如果从www.kernel.org下载的源码包,使用下列命令安装:
cd /usr/src 进入/usr/src目录中,将源码包放置在这里。
tar jxvf linux-2.6.18.tar.bz2 解压源码包,会生成linux-2.6.9目录
ln -s /usr/src/linux-2.6.18 /usr/src/linux 编译内核建议做个软链接。
并且要确保/lib/modules/2.6.18/下的build,source目录
正确指向/usr/src/linux-2.6.18的:
[root@localhost modules]#ls -l /lib/modules/2.6.18
lrwxrwxrwx 1 root root 21 2008-07-03 14:28 build -> /usr/src/linux-2.6.18/
lrwxrwxrwx 1 root root 21 2008-07-03 14:28 source -> /usr/src/linux-2.6.18/
做完这些,我去安装NVIDIA驱动,结果编译时出错。
将内核源码编译一次,不安装,就可以正常编译了
2.4.x内核不知是否如此,如果编译NVIDIA过程中出现错误,就先编译一下内核
方法很简单:
从/boot目录下复制config-2.6.10到/usr/src/linux下
命名为.config
对于2.6.x内核使用下列命令编译:
cd /usr/src/linux 进入源码目录
make 编译内核及模块
注意:不要去make install 只要编译就可以了。
2.4.x使用下列命令编译内核,同样,只编译不安装。
cd /usr/src/linux
make dep 建立依赖关系(不知道是否有必要,做下没坏处)
make bzImage 编译内核
make modules 编译模块
通常发行版中/boot中应该有当前内核的配置文件,如上面的config-2.6.9
如果没有的话,可以通过下列命令创建出.config
[root@localhost linux]# cd /usr/src/linux
[root@localhost linux]#make menuconfig 字符界面配置内核
[root@NEWLFS linux]#make xconfig 图形界面配置内核
这两种方法任选其一,喜欢的话,可以自己配置一下。
或者直接使用默认值,保存退出即可。这样编译时间会长一些。
make menuconfig: 假如是在图形界面中的终端运行,要保证
该终端窗口为全屏,才不会出错。
黎堂赫连天韵
2020-03-17 · TA获得超过3849个赞
知道大有可为答主
回答量:3115
采纳率:30%
帮助的人:441万
展开全部
首先uname
-r看一下你当前的linux内核版本
1、linux的源码是在/usr/src这个目录下,此目录有你电脑上各个版本的linux内核源代码,用uname
-r命令可以查看你当前使用的是哪套内核,你把你下载的内核源码也保存到这个目录之下。
2、配置内核
make
menuconfig,根据你的需要来进行选择,设置完保存之后会在当前目录下生成.config配置文件,以后的编译会根据这个来有选择的编译。
3、编译,依次执行make、make
bzImage、make
modules、make
modules
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内核版本。是不是你刚下的那个呢!有没有成就感?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jiangtao9999
2011-07-19 · TA获得超过1.2万个赞
知道大有可为答主
回答量:1.2万
采纳率:44%
帮助的人:8190万
展开全部
请先补习 Linux 基础,Linux 系统是 Linux 内核 + 一大堆各种软件组成的,所以没有基础你根本不知道怎么编译。
追问
帮忙推荐几本书行不?
追答
先去学计算机基础,推荐的是操作系统原理。之后随便看本 XXXX 从入门到精通就行了。
之后再说你想学什么,因为很多方面基本上没有书可以看。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lh624423055
2011-07-19 · TA获得超过9068个赞
知道大有可为答主
回答量:1.2万
采纳率:6%
帮助的人:9368万
展开全部
编译整个linux操作就去学LFS,另外两个系统互相切换 我笑了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
w1ls
2011-07-19 · TA获得超过242个赞
知道小有建树答主
回答量:697
采纳率:0%
帮助的人:394万
展开全部
上面老兄说的妹错 看看LFS的内容
http://www.linuxsir.org/bbs/forumdisplay.php?f=58
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式