在Ubuntu上建立Arm Linux 开发环境

参考http://forum.ubuntu.org.cn/weblog.php?w=482写成

从linux-2.6.32开始可以使用make localmodconfig自动精简内核, 菜鸟也能轻松精简内核到十几MB
如果想手动精简看3楼


最新NV驱动才能在2.6.34及其以后的内核上使用
ATI官方(受限)显卡驱动无法在最新内核上运行

一、下载源代码和编译软件准备
下载内核源代码:http://www.kernel.org/
注意,点击2.6.34内核的Full source版,即完整版。
如果你懒得去网站点链接,运行下列命令:
代码:
cd ~/
wget http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.34.tar.bz2


安装有关编译程序。安装make ,gcc, make-kpkg,运行xconfig等等和编译内核相关的工具。安装不了,请检查/etc/apt/sources.list 文件。
有关命令:

代码:
sudo apt-get install build-essential kernel-package libncurses5-dev fakeroot


二、解压源代码并打上补丁
注意,很多教程上说应该解压到 /usr/src, 但是实际上解压到任何目录上都可以。
/usr/src下面需要root权限反而容易出问题.
代码:
tar jfx linux-2.6.34.tar.bz2 -C ~/linus

你要把'~/linus'改成你自己解压linux-2.6.34.tar.bz2的目录,
注意目录容量要到达1.5G

现在,源代码就在 ~/linus/linux-2.6.34/
进入源代码的目录,准备下一步的工作。后面都在这个目录里面进行。
代码:
cd ~/linus/linux-2.6.34/


升级内核可以参考下面的附件(这项暂时没用, 不用看)
附件:
.pdf [26.46 KiB]
被下载 1991 次


三、开始编译前的准备工作。
首先,清理以前编译时留下的临时文件,如果是刚刚解开的包,据我的实践,不需要执行这步。执行与否,自己考虑。
相关命令如下:
代码:
make mrproper

很多教程上说把现在使用的内核的config拷贝过来参考,据我的实践,也不需要,ubuntu还有debian会自动做这步。
不过ubntu的config存在很多问题, 建议改用附件中arch的2.6.23的config
附件:
kernel26-config.tar.xz [25.66 KiB]
被下载 155 次

里面的config是32位的config, 里面的config.x86_64是64位的config
把kernel26-config.tar.xz里的解压出来, 然后把config和config.x86_64复制到源代码目录, 然后如果你是32位系统
命令如下:
代码:
cp config ./.config

如果你是64位系统
代码:
cp config.x86_64 ./.config



四、开始配置内核选项。
从linux-2.6.32开始可以使用make localmodconfig自动精简内核, 菜鸟也能轻松精简内核到十几MB

首先自动精简内核模块(如果想手动精简看3楼)[/size]
注意: 该方法会自动去掉一些从开机到当前没用使用的模块(主要是驱动模块),
所以你可以使用一下你的摄像头, 挂载一下iso文件.....
以保证需要的模块不会被精简掉, 否则使用新内核时会发现不能挂载iso文件, 不能使用某些外设等等.
命令如下:
代码:
make localmodconfig


然后就可以直接跳到后面的第五段进行编译了.

也可以再使用qconfig检查一下
相关命令
代码:
sudo aptitude install libqt3-headers libqt3-mt-dev libqt3-compat-headers  libqt3-mt#安装xconfig依赖包,
make xconfig


上面这个qconfig是qt3的, 如果要用qt4的看后面的附2.

选项意义:圆中点是编译成可以随时加人的模块(以下简称M),方块中一勾是编译进入内核(以下简称Y),空就是不要(简称N)。(如下图)
附件:

Screenshot-4.png [ 191.05 KiB | 被浏览 34200 次 ]



1、在“General setup”里面,有几项普通用户可以放心的去掉,
分别是:POSIX Message Queues 、Cpuset Support、Create deprecated sysfs files、Kernel->user space relay support (formerly relayfs)
2、在“ Timer frequency ”里,默认是250Hz,最好选择1000Hz以提高gui响应
3、其他的具体看3楼

全部设置完成,请保存设置。按照我的习惯,先在上一层目录保存一个备份,文件名类似 ../config
然后保存到当起目录,文件名 .config
退出设置程序。

五、开始编译内核。
ubuntu的工具是make-kpkg,和其他的发行版相比,步骤相对简单。
相关命令:
代码:
sudo make-kpkg clean #这条命令好像不要超级权限,很多资料上说要,不过这不是原则问题。
fakeroot make-kpkg --initrd --append-to-version=gould0.76 kernel_image

上述命令中的gould0.76大家用自己喜欢的字符代替.
输完上述命令回车之前,建议大家把浏览器还有别的运用程序都关掉,机器开始的工作比较艰苦。我的p4 1.7G机器用了30分钟。

六、安装内核
编译完成就是安装工作。编译好的内核在上一层目录。我的是linux-image-2.6.34gould0.76_2.6.34gould0.76-10.00.Custom_i386.deb
代码:
cd..
sudo dpk -i linux-image-2.6.34gould0.76_2.6.34gould0.76-10.00.Custom_i386.deb

文件名很长,如果不用tab自动补足是不可能的,tab键万岁。
安装完成后和老内核比较一下大小
代码:
ls -l /boot/

注意:安装完后先不要动linux-2.6.34的目录,可能还要安装驱动
七、重新启动验证新内核。
sudo reboot

八、如果。。。
grub菜单上选用老内核启动机器,推倒重来

附1, 重启后N卡驱动安装
最新NV驱动才能在2.6.34内核上使用

让系统在内核升级时自动安装nvdia驱动的方法:http://forum.ubuntu.org.cn/viewtopic.php?t=141431&start=0&postdays=0&postorder=asc&highlight=
重启后不能直接进入X11,先编译nvidia驱动官方(先删除旧的驱动)
代码:
sudo sh NV******.run

如果显示找不到内核源码用
代码:
sudo sh NV******.run --kernel-source-path=你编译内核的目录,

sudo sh NV******.run --kernel-source-path=/home/david/linus/linux-2.6.34


具体安装方法见http://wiki.ubuntu.org.cn/Nvidia%E6%89%8B%E5%86%8C(看了wiki还解决不了N卡驱动楼下提问)

附2, 把qconfig改成qt4界面
下载下面的补丁
附件:
2900_xconfig-with-qt4.patch.tar.xz [5.48 KiB]
被下载 22 次

解压到源码目录, 然后使用命令
代码:
patch -p1 <  2900_xconfig-with-qt4.patch

如果之前编译过xconfig, 先用下面的命令清除编译残留.
代码:
sudo make-kpkg clean

然后需要安全qt4编译环境, 不过我现在在arch下, 不清楚编译依赖, 应该就是qt4的dev包, ls有清楚的请补充.
安装好qt4编译环境后, 编译命令如下.
代码:
make xconfig

附件:

Screenshot-Linux Kernel v2.6.34 Configuration-1.png [ 41.66 KiB | 被浏览 3780 次 ]



ATI官方(受限)显卡驱动不支持新内核

inter显卡和用开源驱动(没装受限驱动)打开特效的ati显卡编译内核后不需要安装驱动

drcom-1.4.8才支持linux-2.6.28以上内核
附件:
drcom-1.4.8.tar.gz [42.02 KiB]
被下载 186 次

http://forum.ubuntu.org.cn/viewtopic.php?t=115048&start=15&postdays=0&postorder=asc&highlight=


补充1:如果编译内核后,只是希望修改某些模块(M)选项,可以不用完全重新编译。
只需要执行
make xconfig
然后之添加或减少模块(M)选项
然后(不要执行make mrproper和sudo make-kpkg clean),
直接执行编译命令如
sudo make-kpkg -initrd --initrd --append-to-version=david0.68 kernel_image #整条命令要和上次编译时一样
make就会在原来编译的基础上,编译新选上的模块(如果有的话),而不会全部重新编译。
这样可以节省大量时间和能源,尤其是你电脑不是很快的话。

欢迎大家提意见

作者: syrano   发布时间: 2008-03-20

这帖子怎么没人顶?

作者: qiang_liu8183   发布时间: 2008-03-27

基本目标
linux-image的deb包的小于10MB。
高级目标
linux-image的deb包的小于3MB。
启动时间减少10%~20%。

资料
刘少侠的2.6.28中文手册(比较新且详细完全)
附件:
linux-2628.pdf.tar.xz [1.06 MiB]
被下载 166 次

金步国翻译的资料:内核编译配置选项。(很老, 但比较简化, 可以参考)
网址:http://lamp.linux.gov.cn/Linux/kernel_options.html
(已经添加到附件)
附件:
kernel_options.html.tar.bz2 [32.29 KiB]
被下载 42 次


准备
配置内核我用的是xconfig,如果你也是用的xconfig,先在opion里选上show name(显示模块名)。
安装hardinfo
代码:
sudo aptitude install hardinfo


第一步,简单优化。
1.如果不需要拨号上网(pppoe,电信,铁通等的上网方式),就把EXPERIMENTAL前的勾去>掉。
如果需要pppoe,现去掉EXPERIMENTAL前的勾,然后保存并推出;然后重启xconfig,勾上EXPERIMENTAL,然后勾上pppoe(这样做是为了只选上pppoe,而去掉其他development and/or incomplete code/drivers)
2.打开hardinfo,查看你的cpu的family,然后在processor family里把你的cpu的family选>上。
3.如果没有4G内存,勾上NOHIGHMEM;
如果想加快gui程序响应,勾上HZ_1000
4.如果不是上个世纪的硬件,去掉APM
根据附件中的文件,逐项精简内核。(拿不准的模块,可以先不删)


第二步,硬件驱动模块优化(这一步可以最大限度减少启动时间和内核大小)
1.(风险很小)
输入
sudo lshw
根据显示的硬件所需的模块(“module=”后面的模块名),勾上模块并去掉其他不需要的,>和所需的硬件模块平行的硬件模块。


引用:



。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
。。。。。。。。。。。
*-multimedia
description: Multimedia audio controller
product: VT8233/A/8235/8237 AC97 Audio Controller
vendor: VIA Technologies, Inc.
physical id: 11.5
bus info: pci@0000:00:11.5
version: 30
width: 32 bits
clock: 33MHz
capabilities: pm cap_list
configuration: driver=VIA 82xx Audio latency=0 module=snd_via82xx


比如这部分是声卡,
显示声卡是VT8233/A/8235/8237 AC97 Audio Controller
所用的模块是snd_via82xx(在xconfig里设置显示模块名,就可以在xconfig里面找到这个>模块;当然也可以使用查找)
然后就可以把和这个模块并列的其他硬件驱动模块去掉。
cdrom 硬盘......类似。(不过不要把cdrom,硬盘支持也去掉了)

2.去掉你不需要的硬件类型I2C,Telephony................
(这一步比上一步减少的模块数可能更多)

测试
根据
lsmod
精简无用模块。

其他
如果启动新内核后,有些功能不正常,可以搜google,查找出需要的模块。
如果有些软件不正常,还可以查看软件的帮助文档,README.......,找出需要的模块。


范例
硬件如下,deb包在附件里(编译时间9min)
附件:
linux-image-2.6.26david3.9_2.6.26david3.9-10.00.Custom_i386.deb [1.97 MiB]
被下载 569 次

附件:
config.tar.bz2 [7.71 KiB]
被下载 596 次

代码:
$sudo lshw
david-desktop
    description: Desktop Computer
    product: NF61S-M2A
    vendor: BIOSTAR Group
    version: 1.0
    width: 32 bits
    capabilities: smbios-2.4 dmi-2.4 smp-1.4 smp
    configuration: boot=normal chassis=desktop cpus=1 uuid=00E04D2F-4FD4-FFFF-FFFF-FFFFFFFFFFFF
  *-core
       description: Motherboard
       product: NF61S-M2A
       vendor: BIOSTAR Group
       physical id: 0
       version: 1.0
     *-firmware
          description: BIOS
          vendor: Phoenix Technologies, LTD
          physical id: 0
          version: 6.00 PG (02/08/2007)
          size: 128KiB
          capacity: 448KiB
          capabilities: isa pci pnp apm upgrade shadowing cdboot bootselect socketedrom edd int13floppy360 int13floppy1200 int13floppy720 int13floppy2880 int5printscreen int9keyboard int14serial int17printer int10video acpi usb ls120boot zipboot biosbootspecification
     *-cpu
          description: CPU
          product: AMD Sempron(tm) Processor 3000+
          vendor: Advanced Micro Devices [AMD]
          physical id: 3
          bus info: cpu@0
          version: 15.15.2
          slot: Socket M2
          size: 1608MHz
          capacity: 3GHz
          width: 64 bits
          clock: 201MHz
          capabilities: boot fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt rdtscp x86-64 3dnowext 3dnow up pni cx16 lahf_lm extapic cr8_legacy ts ttp tm stc
        *-cache:0
             description: L1 cache
             physical id: c
             slot: Internal Cache
             size: 128KiB
             capacity: 128KiB
             capabilities: synchronous internal write-back
        *-cache:1
             description: L2 cache
             physical id: d
             slot: External Cache
             size: 256KiB
             capacity: 256KiB
             capabilities: synchronous internal write-back
     *-memory:0
          description: System Memory
          physical id: 1f
          slot: System board or motherboard
          size: 512MiB
        *-bank:0
             description: DIMM [empty]
             product: None
             vendor: None
             physical id: 0
             serial: None
             slot: A0
             width: 64 bits
        *-bank:1
             description: DIMM
             product: None
             vendor: None
             physical id: 1

             serial: None
             slot: A1
             size: 512MiB
             width: 64 bits
        *-bank:2
             description: DIMM [empty]
             product: None
             vendor: None
             physical id: 2
             serial: None
             slot: A2
             width: 64 bits
        *-bank:3
             description: DIMM [empty]
             product: None
             vendor: None
             physical id: 3
             serial: None
             slot: A3
             width: 64 bits
     *-memory:1 UNCLAIMED
          description: RAM memory
          product: MCP61 Memory Controller
          vendor: nVidia Corporation
          physical id: 6
          bus info: pci@0000:00:00.0
          version: a1
          width: 32 bits
          clock: 66MHz (15.2ns)
          capabilities: ht bus_master cap_list
          configuration: latency=0
     *-isa
          description: ISA bridge
          product: MCP61 LPC Bridge
          vendor: nVidia Corporation
          physical id: 1
          bus info: pci@0000:00:01.0
          version: a2
          width: 32 bits
          clock: 66MHz
          capabilities: isa bus_master
          configuration: latency=0
     *-serial
          description: SMBus
          product: MCP61 SMBus
          vendor: nVidia Corporation
          physical id: 1.1
          bus info: pci@0000:00:01.1
          version: a2
          width: 32 bits
          clock: 66MHz
          capabilities: pm cap_list
          configuration: driver=nForce2_smbus latency=0 module=i2c_nforce2
     *-memory:2 UNCLAIMED
          description: RAM memory
          product: MCP61 Memory Controller
          vendor: nVidia Corporation
          physical id: 1.2
          bus info: pci@0000:00:01.2
          version: a2
          width: 32 bits
          clock: 66MHz (15.2ns)
          configuration: latency=0
     *-usb:0
          description: USB Controller
          product: MCP61 USB Controller
          vendor: nVidia Corporation
          physical id: 2
          bus info: pci@0000:00:02.0
          version: a2
          width: 32 bits
          clock: 66MHz
          capabilities: pm ohci bus_master cap_list
          configuration: driver=ohci_hcd latency=0 maxlatency=1 mingnt=3 module=ohci_hcd
     *-usb:1
          description: USB Controller
          product: MCP61 USB Controller
          vendor: nVidia Corporation
          physical id: 2.1
          bus info: pci@0000:00:02.1
          version: a2
          width: 32 bits
          clock: 66MHz
          capabilities: debug pm ehci bus_master cap_list
          configuration: driver=ehci_hcd latency=0 maxlatency=1 mingnt=3 module=ehci_hcd
     *-pci:0
          description: PCI bridge
          product: MCP61 PCI bridge
          vendor: nVidia Corporation
          physical id: 4
          bus info: pci@0000:00:04.0
          version: a1
          width: 32 bits
          clock: 66MHz
          capabilities: pci ht subtractive_decode bus_master cap_list
     *-multimedia
          description: Audio device
          product: MCP61 High Definition Audio
          vendor: nVidia Corporation
          physical id: 5
          bus info: pci@0000:00:05.0
          version: a2
          width: 32 bits
          clock: 66MHz
          capabilities: pm msi ht bus_master cap_list
          configuration: driver=HDA Intel latency=0 maxlatency=5 mingnt=2 module=snd_hda_intel
     *-ide:0
          description: IDE interface
          product: MCP61 IDE
          vendor: nVidia Corporation
          physical id: a
          bus info: pci@0000:00:06.0
          version: a2
          width: 32 bits
          clock: 66MHz
          capabilities: ide pm bus_master cap_list
          configuration: driver=pata_amd latency=0 maxlatency=1 mingnt=3 module=pata_amd
     *-bridge
          description: Ethernet interface
          product: MCP61 Ethernet
          vendor: nVidia Corporation
          physical id: 7
          bus info: pci@0000:00:07.0
          logical name: eth0
          version: a2
          serial: 00:e0:4d:2f:4f:d4
          size: 100000000
          capacity: 100000000
          width: 32 bits
          clock: 66MHz
          capabilities: bridge pm msi ht bus_master cap_list ethernet physical mii 10bt 10bt-fd 100bt 100bt-fd autonegotiation
          configuration: autonegotiation=on broadcast=yes driver=forcedeth driverversion=0.61 duplex=full latency=0 link=yes maxlatency=20 mingnt=1 module=forcedeth multicast=yes port=MII speed=100MB/s
     *-ide:1
          description: IDE interface
          product: MCP61 SATA Controller
          vendor: nVidia Corporation
          physical id: 8
          bus info: pci@0000:00:08.0
          logical name: scsi2
          version: a2
          width: 32 bits
          clock: 66MHz
          capabilities: ide pm msi ht bus_master cap_list emulated
          configuration: driver=sata_nv latency=0 maxlatency=1 mingnt=3 module=sata_nv
        *-disk
             description: ATA Disk
             product: WDC WD800JD-75MS
             vendor: Western Digital
             physical id: 0.0.0
             bus info: scsi@2:0.0.0
             logical name: /dev/sda
             version: 10.0
             serial: WD-WMAM9RM85579
             size: 74GiB (80GB)
             capabilities: partitioned partitioned:dos
             configuration: ansiversion=5 signature=d5b3d5b3
           *-volume:0
                description: Windows NTFS volume
                physical id: 1
                bus info: scsi@2:0.0.0,1
                logical name: /dev/sda1
                version: 3.1
                serial: 946fcaea-dbcb-9e4c-bf89-672ead2acd22
                size: 10001MiB
                capacity: 10001MiB
                capabilities: primary bootable ntfs initialized
                configuration: clustersize=4096 created=2008-04-24 19:50:37 filesystem=ntfs state=clean
           *-volume:1
                description: Extended partition
                physical id: 2
                bus info: scsi@2:0.0.0,2
                logical name: /dev/sda2
                size: 62GiB
                capacity: 62GiB
                capabilities: primary extended partitioned partitioned:extended
              *-logicalvolume:0
                   description: HPFS/NTFS partition
                   physical id: 5
                   logical name: /dev/sda5
                   capacity: 5271MiB
              *-logicalvolume:1
                   description: W95 FAT32 partition
                   physical id: 6
                   logical name: /dev/sda6
                   logical name: /media/disk-1
                   capacity: 14GiB
                   configuration: mount.fstype=vfat mount.options=rw,nosuid,nodev,relatime,uid=1000,fmask=0077,dmask=0077,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8 state=mounted
              *-logicalvolume:2
                   description: W95 FAT32 partition
                   physical id: 7
                   logical name: /dev/sda7
                   logical name: /media/disk
                   capacity: 11GiB
                   configuration: mount.fstype=vfat mount.options=rw,nosuid,nodev,relatime,uid=1000,fmask=0077,dmask=0077,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8 state=mounted
              *-logicalvolume:3
                   description: Linux filesystem partition
                   physical id: 8
                   logical name: /dev/sda8
                   logical name: /boot
                   capacity: 125MiB
                   configuration: mount.fstype=ext3 mount.options=rw,relatime,data=ordered state=mounted
              *-logicalvolume:4
                   description: Linux filesystem partition
                   physical id: 9
                   logical name: /dev/sda9
                   logical name: /
                   logical name: /dev/.static/dev
                   capacity: 8918MiB
                   configuration: mount.fstype=xfs mount.options=rw,relatime,ikeep,noquota state=mounted
              *-logicalvolume:5
                   description: Linux swap / Solaris partition
                   physical id: a
                   logical name: /dev/sda10
                   capacity: 745MiB
                   capabilities: nofs
              *-logicalvolume:6
                   description: Linux filesystem partition
                   physical id: b
                   logical name: /dev/sda11
                   logical name: /home/david/store
                   capacity: 21GiB
                   configuration: mount.fstype=xfs mount.options=rw,relatime,ikeep,noquota state=mounted
           *-volume:2
                description: Linux filesystem partition
                physical id: 3
                bus info: scsi@2:0.0.0,3
                logical name: /dev/sda3
                logical name: /var
                capacity: 1058MiB
                capabilities: primary
                configuration: mount.fstype=xfs mount.options=rw,relatime,ikeep,noquota state=mounted
           *-volume:3 UNCLAIMED
                description: Linux filesystem partition
                physical id: 4
                bus info: scsi@2:0.0.0,4
                capacity: 1608MiB
                capabilities: primary
     *-pci:1
          description: PCI bridge
          product: MCP61 PCI Express bridge
          vendor: nVidia Corporation
          physical id: 9
          bus info: pci@0000:00:09.0
          version: a2
          width: 32 bits
          clock: 33MHz
          capabilities: pci pm msi ht pciexpress normal_decode bus_master cap_list
          configuration: driver=pcieport-driver
     *-pci:2
          description: PCI bridge
          product: MCP61 PCI Express bridge
          vendor: nVidia Corporation
          physical id: b
          bus info: pci@0000:00:0b.0
          version: a2
          width: 32 bits
          clock: 33MHz
          capabilities: pci pm msi ht pciexpress normal_decode bus_master cap_list
          configuration: driver=pcieport-driver
     *-pci:3
          description: PCI bridge
          product: MCP61 PCI Express bridge
          vendor: nVidia Corporation
          physical id: c
          bus info: pci@0000:00:0c.0
          version: a2
          width: 32 bits
          clock: 33MHz
          capabilities: pci pm msi ht pciexpress normal_decode bus_master cap_list
          configuration: driver=pcieport-driver
     *-display
          description: VGA compatible controller
          product: GeForce 6100 nForce 405
          vendor: nVidia Corporation
          physical id: d
          bus info: pci@0000:00:0d.0
          version: a2
          width: 64 bits
          clock: 66MHz
          capabilities: pm msi vga_controller bus_master cap_list
          configuration: driver=nvidia latency=0 module=nvidia
     *-pci:4
          description: Host bridge
          product: K8 [Athlon64/Opteron] HyperTransport Technology Configuration
          vendor: Advanced Micro Devices [AMD]
          physical id: 100
          bus info: pci@0000:00:18.0
          version: 00
          width: 32 bits
          clock: 33MHz
     *-pci:5
          description: Host bridge
          product: K8 [Athlon64/Opteron] Address Map
          vendor: Advanced Micro Devices [AMD]
          physical id: 101
          bus info: pci@0000:00:18.1
          version: 00
          width: 32 bits
          clock: 33MHz
     *-pci:6
          description: Host bridge
          product: K8 [Athlon64/Opteron] DRAM Controller
          vendor: Advanced Micro Devices [AMD]
          physical id: 102
          bus info: pci@0000:00:18.2
          version: 00
          width: 32 bits
          clock: 33MHz
     *-pci:7
          description: Host bridge
          product: K8 [Athlon64/Opteron] Miscellaneous Control
          vendor: Advanced Micro Devices [AMD]
          physical id: 103
          bus info: pci@0000:00:18.3
          version: 00
          width: 32 bits
          clock: 33MHz
          configuration: driver=k8temp module=k8temp

作者: syrano   发布时间: 2008-03-27

很少接触内核,所以只有看了。基本上没有说的份
lz不如在贴一个失败后恢复旧内核的方法,这样就可以放心的去试了

作者: eos   发布时间: 2008-03-28

eos 写道:
很少接触内核,所以只有看了。基本上没有说的份
lz不如在贴一个失败后恢复旧内核的方法,这样就可以放心的去试了

旧内核又没有删除,在grub选择旧内核就可以了

引用:
九、如果。。。
grub菜单上选用老内核启动机器,推倒重来

作者: syrano   发布时间: 2008-03-28

懒得编译,deb特有的依赖关系让人头痛

作者: 黄金时代   发布时间: 2008-03-28

有空试试,我真的还没有接触内核的,概念都不清。

作者: Leonj   发布时间: 2008-03-29

Mark&&顶
这么好的帖子

作者: Yizer   发布时间: 2008-03-30

顶一下。这篇讲得比较好懂,相当不错。我还没试过编译内核,哪天作为经验积累试一下好了(反正只是经验积累嘛)。
mark先。

作者: hyy_m   发布时间: 2008-03-30

学习

作者: skyx   发布时间: 2008-03-30

强顶!!

一直在找编译内核详细的帖子....LZ让我感激涕零~~~~~

谢谢!

作者: 旺财   发布时间: 2008-03-30

引用:
选项意义:圆中点是编译成可以随时加人的模块(简称Y),方块中一勾是编译进入内核(简称M),空就是不要(简称N)。(如下图)


楼主这里看一下有没有笔误?我看过帖子说是这样:“编译进入内核”=Y “编译成模块”=M

作者: 旺财   发布时间: 2008-03-30

旺财 写道:
引用:
选项意义:圆中点是编译成可以随时加人的模块(简称Y),方块中一勾是编译进入内核(简称M),空就是不要(简称N)。(如下图)


楼主这里看一下有没有笔误?我看过帖子说是这样:“编译进入内核”=Y “编译成模块”=M

谢谢ls
你看的帖子中配置内核的工具是用的比较麻烦的文本界面的menuconfig,
里面“编译进入内核”显示的是“Y” ,“编译成模块”显示的是“M”,
我用的是比较方便的图形界面的xconfig
里面“编译进入内核”显示的是圆中点,“编译进入内核”显示的是方块中一勾。

作者: syrano   发布时间: 2008-03-30

问一下楼主:新内核感觉如何?

作者: hyy_m   发布时间: 2008-03-31

处女帖就用来顶你啦。
初用ubuntu,由于工作关系,需要涉及很多模块编译的工作,以前都是用rhel的。

作者: sepnic   发布时间: 2008-03-31

hyy_m 写道:
问一下楼主:新内核感觉如何?

我的P4机启动从22s减少到20s,gui响应快了30%

作者: syrano   发布时间: 2008-03-31

syrano 写道:
qiang_liu8183 写道:
这帖子怎么没人顶?

就是呀,不过看的人还比较多,
再不就是我写的太详细了

支持你 我用我再去网上搜索了 有个很好的教程

作者: ppp1982   发布时间: 2008-04-02

这贴子不错阿,支持一下!

作者: cfd2006   发布时间: 2008-04-03

我用的命令是
代码:
sudo make-kpkg --initrd --append-to-version mylinux1 kernel_image kernel_headers

这样编译以后就有了image 和headers两个包,要编译一些软件,比如drcom,headers包也是不能少的。

作者: reshine   发布时间: 2008-04-04

reshine 写道:
我用的命令是
代码:
sudo make-kpkg --initrd --append-to-version mylinux1 kernel_image kernel_headers

这样编译以后就有了image 和headers两个包,要编译一些软件,比如drcom,headers包也是不能少的。

貌似我每次编译headers包时都出错,
而如果不编译kernel_headers,那么内核的源码目录和headers包的作用时一样的.
所以编译drcom不需要headers包
引用:
david@austria:~/drcom-1.3.7$ make
make -C drcomc
make[1]: Entering directory `/home/david/drcom-1.3.7/drcomc'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/home/david/drcom-1.3.7/drcomc'
make -C drcomd
make[1]: Entering directory `/home/david/drcom-1.3.7/drcomd'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/home/david/drcom-1.3.7/drcomd'
make -C kmod
make[1]: Entering directory `/home/david/drcom-1.3.7/kmod'
make -C /lib/modules/2.6.24.4david5/build M=/home/david/drcom-1.3.7/kmod modules
make[2]: Entering directory `/home/david/linus/linux-2.6.24.4'
#这时候make进入内核源码目录~/david/linus/linux-2.6.24.4
CC [M] /home/david/drcom-1.3.7/kmod/init.o
CC [M] /home/david/drcom-1.3.7/kmod/proc.o
CC [M] /home/david/drcom-1.3.7/kmod/proto.o
/home/david/drcom-1.3.7/kmod/proto.c: In function ‘init_hijack’:
/home/david/drcom-1.3.7/kmod/proto.c:454: warning: assignment from incompatible pointer type
/home/david/drcom-1.3.7/kmod/proto.c:455: warning: assignment from incompatible pointer type
/home/david/drcom-1.3.7/kmod/proto.c: In function ‘cleanup_hijack’:
/home/david/drcom-1.3.7/kmod/proto.c:462: warning: comparison of distinct pointer types lacks a cast
/home/david/drcom-1.3.7/kmod/proto.c:463: warning: assignment from incompatible pointer type
LD [M] /home/david/drcom-1.3.7/kmod/drcom.o
Building modules, stage 2.
MODPOST 1 modules
CC /home/david/drcom-1.3.7/kmod/drcom.mod.o
LD [M] /home/david/drcom-1.3.7/kmod/drcom.ko
make[2]: Leaving directory `/home/david/linus/linux-2.6.24.4'
#这时候make离开内核源码目录~/david/linus/linux-2.6.24.4
make[1]: Leaving directory `/home/david/drcom-1.3.7/kmod'
david@austria:~/drcom-1.3.7$

作者: syrano   发布时间: 2008-04-04

mark 改天试试

作者: yooh   发布时间: 2008-04-04

顶!!

作者: lifuhai   发布时间: 2008-04-05

up

作者: seabee   发布时间: 2008-04-07

没编过,跃跃欲试中!

作者: yun_2008   发布时间: 2008-04-10

顶了!

作者: lonez   发布时间: 2008-04-12

root@Ubuntu-Quad:/usr/src/linux-2.6.24.4# make menuconfig
HOSTCC scripts/basic/fixdep
在包含自 /usr/include/bits/posix1_lim.h:153 的文件中,
从 /usr/include/limits.h:145,
从 /usr/lib/gcc/i486-linux-gnu/4.1.3/include/limits.h:122,
从 /usr/lib/gcc/i486-linux-gnu/4.1.3/include/syslimits.h:7,
从 /usr/lib/gcc/i486-linux-gnu/4.1.3/include/limits.h:11,
从 scripts/basic/fixdep.c:115:
/usr/include/bits/local_lim.h:36:26: 错误: linux/limits.h:No such file or directory
在包含自 /usr/include/sys/socket.h:35 的文件中,
从 /usr/include/netinet/in.h:24,
从 /usr/include/arpa/inet.h:23,
从 scripts/basic/fixdep.c:117:
/usr/include/bits/socket.h:311:24: 错误: asm/socket.h:No such file or directory
scripts/basic/fixdep.c: 在函数 ‘use_config’ 中:
scripts/basic/fixdep.c:206: 错误: ‘PATH_MAX’ 未声明 (在此函数内第一次使用)
scripts/basic/fixdep.c:206: 错误: (即使在一个函数内多次出现,每个未声明的标识符在其
scripts/basic/fixdep.c:206: 错误: 所在的函数内只报告一次。)
scripts/basic/fixdep.c:206: 警告: 未使用的变量 ‘s’
scripts/basic/fixdep.c: 在函数 ‘parse_dep_file’ 中:
scripts/basic/fixdep.c:306: 错误: ‘PATH_MAX’ 未声明 (在此函数内第一次使用)
scripts/basic/fixdep.c:306: 警告: 未使用的变量 ‘s’
make[1]: *** [scripts/basic/fixdep] 错误 1
make: *** [scripts_basic] 错误 2

才开始就这样。。。

作者: hnlsjxpz   发布时间: 2008-04-13

官方的内核用的挺好的,不想自己编译了,以前弄过,麻烦死了。

作者: alpha.gu   发布时间: 2008-04-17

这种方式,貌似无法得到ubuntu特有的模块。

作者: yaska   发布时间: 2008-04-17

我刚看了楼主的帖子,编译成功,以前从来没编译过,速度还是的确要快了一些的。

作者: laszo   发布时间: 2008-04-21

hnlsjxpz 写道:
root@Ubuntu-Quad:/usr/src/linux-2.6.24.4# make menuconfig
HOSTCC scripts/basic/fixdep
在包含自 /usr/include/bits/posix1_lim.h:153 的文件中,
从 /usr/include/limits.h:145,
从 /usr/lib/gcc/i486-linux-gnu/4.1.3/include/limits.h:122,
从 /usr/lib/gcc/i486-linux-gnu/4.1.3/include/syslimits.h:7,
从 /usr/lib/gcc/i486-linux-gnu/4.1.3/include/limits.h:11,
从 scripts/basic/fixdep.c:115:
/usr/include/bits/local_lim.h:36:26: 错误: linux/limits.h:No such file or directory
在包含自 /usr/include/sys/socket.h:35 的文件中,
从 /usr/include/netinet/in.h:24,
从 /usr/include/arpa/inet.h:23,
从 scripts/basic/fixdep.c:117:
/usr/include/bits/socket.h:311:24: 错误: asm/socket.h:No such file or directory
scripts/basic/fixdep.c: 在函数 ‘use_config’ 中:
scripts/basic/fixdep.c:206: 错误: ‘PATH_MAX’ 未声明 (在此函数内第一次使用)
scripts/basic/fixdep.c:206: 错误: (即使在一个函数内多次出现,每个未声明的标识符在其
scripts/basic/fixdep.c:206: 错误: 所在的函数内只报告一次。)
scripts/basic/fixdep.c:206: 警告: 未使用的变量 ‘s’
scripts/basic/fixdep.c: 在函数 ‘parse_dep_file’ 中:
scripts/basic/fixdep.c:306: 错误: ‘PATH_MAX’ 未声明 (在此函数内第一次使用)
scripts/basic/fixdep.c:306: 警告: 未使用的变量 ‘s’
make[1]: *** [scripts/basic/fixdep] 错误 1
make: *** [scripts_basic] 错误 2

才开始就这样。。。

sudo aptitude install libncurses5-dev #使用menuconfig需要安装依赖的libncurses5
如果不是完全文本界面,建议用xconfig

作者: syrano   发布时间: 2008-04-21

收了收了,这么好的文章!~谢谢LZ啊!~

作者: wxlsty323   发布时间: 2008-04-24

我第一次用make-kpkg编译后修改了一点代码,再次编译还是完全重新编译了一遍,又花了一个小时。
用什么参数才能实现增量编译呢?

作者: wuxb   发布时间: 2008-04-24

不好意思啊,昨天机子有点卡,连回复了好几次,呵呵!~

作者: wxlsty323   发布时间: 2008-04-25

wuxb 写道:
我第一次用make-kpkg编译后修改了一点代码,再次编译还是完全重新编译了一遍,又花了一个小时。
用什么参数才能实现增量编译呢?

修改代码后,直接输入命令
sudo make-kpkg -initrd --initrd --append-to-version=name5 kernel_image
就不会重新编译了。
注意:
整条命令要和之前编译的一样。

作者: syrano   发布时间: 2008-04-27

顶一下!不错的说!留着慢慢看

作者: 寂寞杀手   发布时间: 2008-04-29

headers必须要编译,不然没法编译一些程序。

作者: lonelycorn   发布时间: 2008-04-30

lonelycorn 写道:
headers必须要编译,不然没法编译一些程序。

不能编译什么呢?
偶目前还没有发现。

作者: syrano   发布时间: 2008-04-30

但是modules呢?就是modules_image

作者: lonelycorn   发布时间: 2008-04-30

问题一 配置好的config文件放在那个目录中 然后文件名是不是能够随意取那?系统能知道是那个配置文件
问题二 头一次按照这个文章编译成功了 但是似乎我的内核文件变的很大,原来系统那个似乎是7M吧,我那个40多M啊崩溃
问题三 编译好之后原先上网不能了 是不是要驱动 网络配置方面我没有改过config啊,不知道怎么弄

作者: ioiomi   发布时间: 2008-05-01

ioiomi 写道:
问题一 配置好的config文件放在那个目录中 然后文件名是不是能够随意取那?系统能知道是那个配置文件
问题二 头一次按照这个文章编译成功了 但是似乎我的内核文件变的很大,原来系统那个似乎是7M吧,我那个40多M啊崩溃
问题三 编译好之后原先上网不能了 是不是要驱动 网络配置方面我没有改过config啊,不知道怎么弄

请仔细看贴

No.1
配置文件时是解压的目录里得.config
用下面命令可以把当前系统用的内核的config复制到你解压的目录
引用:
cp /boot/config-`uname -r` ./.config


No.2 在系统原装内核的基础上理智修改.config就不会出现问题二了。

No.3 网卡驱动没有选上。(注意看与网络相关的选项)

作者: syrano   发布时间: 2008-05-01

引用:
No.3 网卡驱动没有选上。(注意看与网络相关的选项)


如果用原来的配置文件是否就不用动这一项了?

还有网上的2.6.25核心后面的mm1代表的是什么意思 是不是补丁[/list]

作者: ioiomi   发布时间: 2008-05-01

等我把我的显卡搞定,再说,楼主不错!

作者: xjj   发布时间: 2008-05-02

编译出来的文件还是庞大无比,不知道是不是2.6.25不能用2.6.24.16的配置文件,而且编译出来声音没有,网卡也没有用
再次求教

作者: ioiomi   发布时间: 2008-05-02

ioiomi 写道:
编译出来的文件还是庞大无比,不知道是不是2.6.25不能用2.6.24.16的配置文件,而且编译出来声音没有,网卡也没有用
再次求教

不大呀,我编译出来的都比默认的小。
可以用2.6.24的配置。
你没有把声音选上,(直接复制8.04系统默认内核的配置文件,里面居然没有选上声音,不知道什么回事,我也只好自己选上的。看来不能迷信默认内核的配置了)

最后由 syrano 编辑于 2008-05-02 20:37,总共编辑了 1 次

作者: syrano   发布时间: 2008-05-02

mark

作者: solcomo   发布时间: 2008-05-02