LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2234|回复: 5

在apple机上,linux ppc版本中编译内核2.6.x的简要过程

[复制链接]
发表于 2004-7-1 14:30:50 | 显示全部楼层 |阅读模式
在apple机中安装linux ppc版本后,可能有的弟兄首先想到的是升级内核,目的是支持更多的设备,比如1394设备、显示卡、usb 等,但初学linux ppc的弟兄可能用x86机编译内核的办法,实践证明这样是行不通的。所以我把自己的一点学习体会写一写,也好和大家交流。分享是相互的,所以我也得写一写,否则大家怎么能分享给我呢


=========================================================
正文:给初学linux ppc的弟兄
=========================================================

准备工作:升级或者安装modules-init-tools

如果不升级或者安装modules-init-tools,内核的模块不能正常加载,所以必须安装或者升级

#emerge modules-init-tools


一、下载最新版本的内核,最好是要稳定版本的

http://www.kernel.org  

最新稳定版本是2.6.7

http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.7.tar.bz2


二、下载后把内核的包移到/usr/src目录中

#mv linux-2.6.7.tar.bz2 /usr/src

三、解压

#cd /usr/src
#tar jxvf   linux-2.6.7.tar.bz2

四、为编译内核及配置内核做点基础工作[这步不是必须的]
[root@S0 linux-2.6.7]# cp /usr/src/linux-2.6.7/arch/ppc/configs/pmac_defconfig  .
这一步是把/usr/src/linux-2.6.7/arch/ppc/configs/pmac_defconfig  文件拷到/usr/src/linux-2.6.7目录下,我是在linux-2.6.7这个目录执行动作的,所以用的是相对路径。

[注]/usr/src/linux-2.6.7/arch/ppc/configs的配置文件有好多,要选择一个和自己机器适合的。如果您不知道如何选择。可以跳过这条,用make menuconfig来自己来配制。

也可以用
[root@S0 linux-2.6.7]# cp /usr/src/linux-2.6.7/arch/ppc/configs/pmac_defconfig    /usr/src/linux-2.6.7

然后把这个文件复制一份名为.config的文件

[root@S0 linux-2.6.7]# cp pmac_defconfig  .config


五、配制内核

前面的基础工作已经做的差不多了,我们应该配置内核了,如果您跳过了第四步,不用第四步的配制文件,您应该


[root@S0 linux-2.6.7]#make mrproper 如果是进行了第四步,这个命令就不要用了。否则会把.config清除的


[root@S0 linux-2.6.7]# make menuconfig



然后用键盘选这项,把内核的配置文件调入,然后我们在这个配置文件的基础上做一些改动,加上自己需要的东西,其实也就是调用的是.config这个配置文件。

  Load an Alternate Configuration File      


配置好内核后最好另取一个名保存一下,然后再来编译。这样做的目的是我们编译不成功,我们可以在这个已经配置好的内核配置文件的基础上进行修改内核配置文件。这能省很多时间。


也就是make menuconfig后,在内核配制选项卡中看到的

Save Configuration to an Alternate File  



六、编译内核

配制好后,编译内核是最简单的,用以下的几命令

[root@S0 linux-2.6.7]# make
[root@S0 linux-2.6.7]#make modules_install

这样就编译好了,模块也编译好并安装好了。

七、安装内核

在x86机上,我们可能用make install的方法来安装内核 ,但在linux pcc中这种办法是行不通的,所以要手工来操作。

主要是复制两个文件,一个是vmlinux 另一个是System.map,把这两个文件复制到/boot目录中,不过最好是改一下名,以防止新内核启动失败。改名也是有点技巧的,也是不能随便改的。
比如 2.6.7的内核,我们应该如下复制,特别是对于System.map这个文件,一定要安格式来改。

[root@S0 linux-2.6.7]# cp vmlinux  /boot/vmlinux-2.6.7
[root@S0 linux-2.6.7]# cp System.map /boot/System.map-2.6.7

八、更新yaboot的配制文件。

我们把内核安装好了,并不是万事大吉了,还得把新内核的启动项写入yaboot的配置文件中,这样才能在开机时yboot引导找到新的内核。

我以我的机器为例:

1。先查看目前linux所在的根

[root@S0 root]# df -lh
Filesystem            Size  Used Avail Use% Mounted on
/dev/hda5              11G  5.3G  4.9G  52% /
none                  377M     0  377M   0% /dev/shm
/dev/sda5              25G  1.6G   22G   7% /mnt/sda5

通过上面的分析,我们知道这个linux安装在 /dev/hda5的分区中

2、改/etc/yaboot.conf文件

原来的yaboot的配置文件内容如下:



  1. boot=/dev/hda2
  2. device=/pci@f4000000/ata-6@d/disk@0:
  3. init-message="Welcome to Yellow Dog Linux!\nHit <TAB> for boot options.\n\n"
  4. partition=5
  5. timeout=30
  6. install=/usr/lib/yaboot/yaboot
  7. magicboot=/usr/lib/yaboot/ofboot
  8. default=yellowdog2.6

  9. image=/boot/vmlinux-2.4.22-2f
  10.         label=linux
  11.         root=/dev/hda5
  12.         read-only
  13.         initrd=/boot/initrd-2.4.22-2f.img
  14.         append="hdc=ide-scsi"


  15. defaultos=linux
  16. delay=50
  17. enablecdboot

复制代码


加入2.6.7内核的启动项是这样的。

  1. boot=/dev/hda2
  2. device=/pci@f4000000/ata-6@d/disk@0:
  3. init-message="Welcome to Yellow Dog Linux!\nHit <TAB> for boot options.\n\n"
  4. partition=5
  5. timeout=30
  6. install=/usr/lib/yaboot/yaboot
  7. magicboot=/usr/lib/yaboot/ofboot
  8. default=yellowdog2.6

  9. image=/boot/vmlinux-2.4.22-2f
  10.         label=linux 这是个标签,可以用自己喜欢的名字
  11.         root=/dev/hda5
  12.         read-only
  13.         initrd=/boot/initrd-2.4.22-2f.img
  14.         append="hdc=ide-scsi"
  15. image=/boot/vmlinux-2.6.7
  16.         label=yellowdog2.6 这是个标签,可以用自己喜欢的名字
  17.         root=/dev/hda5
  18.         read-only

  19. defaultos=linux
  20. delay=50
  21. enablecdboot
复制代码


加入好了,不要忘记运行一下ybin -v

[root@S0 root]# ybin -v

启动的时候,我们要有选项的想用哪个内核来启动,应该按一下tab键 ,然后把您想启用内核的标签输入进去。

比如我的机器在启动的时候,按一下tab键 ,会出来一个 linux  和yellowdog2.6

我就在boot:后面输入 yellowdog2.6,也就是如下的:

boot:yellowdog2.6  


先写到这,一会补充。
发表于 2004-7-1 15:24:08 | 显示全部楼层
北南大辛苦了

我編內核的目的是為了掛載HFS+
現在不用囉...
再?硪幙赡苤皇菚了好玩+學習了吧

到了LinuxSir後才知道有LFS這麼好玩的東西
等有空跟他拼拼看
到時再?韴蟾嫘牡....cc

hmm... 祝我好運....><
发表于 2004-7-1 20:35:30 | 显示全部楼层
  1. 启动的时候,我们要有选项的想用哪个内核来启动,应该[color=red]按一下tab键 [/color],然后把您想启用内核的标签输入进去。
复制代码

yaboot的menu会在开机后自动显示,不是吗?为什么要按tab?
发表于 2004-7-1 20:35:49 | 显示全部楼层
  1. 启动的时候,我们要有选项的想用哪个内核来启动,应该[color=red]按一下tab键 [/color],然后把您想启用内核的标签输入进去。
复制代码

yaboot的menu会在开机后自动显示,不是吗?为什么要按tab?
 楼主| 发表于 2004-7-2 09:42:02 | 显示全部楼层
最初由 youknowwho 发表
  1. 启动的时候,我们要有选项的想用哪个内核来启动,应该[color=red]按一下tab键 [/color],然后把您想启用内核的标签输入进去。
复制代码

yaboot的menu会在开机后自动显示,不是吗?为什么要按tab?



怪了,。。。
我的机器实在是必须按tab键才出来,就是想让哪个启动,也得必须用手工输入启动项。根本不能象grub一样,用键盘的上下方向键就能选中启动项。。。。
发表于 2004-7-2 23:08:56 | 显示全部楼层
怪了,。。。
我的机器实在是必须按tab键才出来,就是想让哪个启动,也得必须用手工输入启动项。根本不能象grub一样,用键盘的上下方向键就能选中启动项。。。。

必须在kernel编译时加入OpenFirmware支持
Mac应当能够直接引导yaboot
我安装的是Gentoo,不过在编译kernel的选项上有点问题,所以启动后会在某个地方停住,不过yaboot是可以直接引导的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表