LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: bjsm

自编内核,进不去了,大家指导一下。

[复制链接]
 楼主| 发表于 2009-2-24 01:12:09 | 显示全部楼层
为什么不要用UUID啊,容易引起硬盘混乱的。我以前为这个头痛很久。
回复 支持 反对

使用道具 举报

发表于 2009-2-24 02:20:49 | 显示全部楼层
我刚才重新优化编译了2.6.28.7内核,成功了,速度提升很明显!还是Arch好呀!

编译内核是需要生成initrd文件的,这是启动必需的文件,要根据你设的自定义版本编号来生成。

大家不要误导楼主,只是一个initrd的问题,跟UUID无关,我就用的UUID,照启动不误。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-2-24 12:13:33 | 显示全部楼层
sudo mkinitrd -o initrd-2.6.28-7.777.img /lib/modules/2.6.28.7-ARCH/
Checking Input...
/sbin/mkinitrd <kernel_version> [options]

  Where <kernel_version> is one of:
    auto                        build for the installed Arch kernel
    full                        build with all possible modules
    kernel_version={version}    use kernel version (no autodetect)

  Options:
    --ide                    exclude ide modules
    --scsi                   exclude scsi modules
    --usb                    exclude usb modules
    --cdrom                  exclude cdrom modules
    --fw                     exclude firewire modules
    --raid                   exclude raid modules
    --dm                     exclude device mapper modules
    --remove-module=MODULE   exclude MODULE
    --add-module=MODULE      include MODULE
    --lvm-root=ROOT_DEV      use ROOT_DEV as the LVM root device
    --root-dir=ROOT_DIR      look for modules in ROOT_DIR/lib/modules
                             instead of /lib/modules
    --quiet                  no status output during initrd generation
    --show                   show modules that are included in initrd


怎么会出现这种错误啊?谁讲解一下撒。
回复 支持 反对

使用道具 举报

发表于 2009-2-24 12:57:14 | 显示全部楼层
Post by bjsm;1951816
sudo mkinitrd -o initrd-2.6.28-7.777.img /lib/modules/2.6.28.7-ARCH/
Checking Input...
/sbin/mkinitrd <kernel_version> [options]

  Where <kernel_version> is one of:
    auto                        build for the installed Arch kernel
    full                        build with all possible modules
    kernel_version={version}    use kernel version (no autodetect)

  Options:
    --ide                    exclude ide modules
    --scsi                   exclude scsi modules
    --usb                    exclude usb modules
    --cdrom                  exclude cdrom modules
    --fw                     exclude firewire modules
    --raid                   exclude raid modules
    --dm                     exclude device mapper modules
    --remove-module=MODULE   exclude MODULE
    --add-module=MODULE      include MODULE
    --lvm-root=ROOT_DEV      use ROOT_DEV as the LVM root device
    --root-dir=ROOT_DIR      look for modules in ROOT_DIR/lib/modules
                             instead of /lib/modules
    --quiet                  no status output during initrd generation
    --show                   show modules that are included in initrd


怎么会出现这种错误啊?谁讲解一下撒。


请拿起你的字典,看 wiki。这是你成长的唯一途径。

不要懒。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-2-24 13:48:44 | 显示全部楼层
我不编了,  :(


再一个,我哪里发牢骚了?我就说了,我不编了。这也算发牢骚了?不要以老前辈的口气来教训人。
回复 支持 反对

使用道具 举报

发表于 2009-2-24 14:36:00 | 显示全部楼层
Post by bjsm;1951816
sudo mkinitrd -o initrd-2.6.28-7.777.img /lib/modules/2.6.28.7-ARCH/
Checking Input...
/sbin/mkinitrd <kernel_version> [options]

  Where <kernel_version> is one of:
    auto                        build for the installed Arch kernel
    full                        build with all possible modules
    kernel_version={version}    use kernel version (no autodetect)

  Options:
    --ide                    exclude ide modules
    --scsi                   exclude scsi modules
    --usb                    exclude usb modules
    --cdrom                  exclude cdrom modules
    --fw                     exclude firewire modules
    --raid                   exclude raid modules
    --dm                     exclude device mapper modules
    --remove-module=MODULE   exclude MODULE
    --add-module=MODULE      include MODULE
    --lvm-root=ROOT_DEV      use ROOT_DEV as the LVM root device
    --root-dir=ROOT_DIR      look for modules in ROOT_DIR/lib/modules
                             instead of /lib/modules
    --quiet                  no status output during initrd generation
    --show                   show modules that are included in initrd


怎么会出现这种错误啊?谁讲解一下撒。

别人也不知道你的内核命名,只能给你例子。
  1. mkinitcpio -g /boot/kernel-2.6.28.7_rainy.img -k 2.6.28.7_rainy
复制代码

/boot/grub/menu.lst(原本我是没有使用initrd的,下面只是给你的范例)
  1. title Arch Linux (Rainy)
  2. root (hd0,6)
  3. kernel /boot/vmlinuz-2.6.28.7_rainy root=/dev/sda7 ro
  4. initrd /boot/kernel-2.6.28.7_rainy.img
复制代码
回复 支持 反对

使用道具 举报

发表于 2009-2-24 17:56:22 | 显示全部楼层
"root filesystem can't be detected"
应该是配置内核的问题,你没有把根分区文件系统类型编译到内核里,/分区文件系统类型不要编译成模块
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-2-25 17:37:44 | 显示全部楼层
大体在哪个选项里啊,我把EXT4编译进去了啊。看图吧。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2009-2-25 23:03:37 | 显示全部楼层
27 楼,不是文件系统的问题

话说楼主怎么这么懒…… 我真的很讨厌教懒人东西。
总是喜欢贴上来一堆东西,然后就问别人要结果。给你文档你也不看。不喜欢学习,只知道要结果。

第二天如果再来一个懒人,我们还得重复劳动一次。

我用中文大白话给你讲一遍!

intrd 文件包含了内核里面没有的驱动。只要你没有将设备驱动编译进内核,导致系统无法找到必须的文件,就一定需要 intrd 文件。

楼主的问题出在于,没有将硬盘设备的驱动编译进内核(或许你编译成模块了,那也没用。)所以在内核启动的时候根本找不到硬盘设备,就更别提找到 / 了。

解决方法有两个:
1 你明确知道你的主板以及硬盘需要什么驱动,直接将这些驱动编译进内核。
2 就是用 intrd 文件。

我是懒的讲,但是 26 楼已经说的很清楚了。超级清楚了,不能再清楚了。

爱编就编,不爱编就别折腾了。来这里发牢骚,我们还不伺候你了呢。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-2-26 14:07:51 | 显示全部楼层
Post by latteye;1952671
27 楼,不是文件系统的问题

话说楼主怎么这么懒…… 我真的很讨厌教懒人东西。
总是喜欢贴上来一堆东西,然后就问别人要结果。给你文档你也不看。不喜欢学习,只知道要结果。

第二天如果再来一个懒人,我们还得重复劳动一次。

我用中文大白话给你讲一遍!

intrd 文件包含了内核里面没有的驱动。只要你没有将设备驱动编译进内核,导致系统无法找到必须的文件,就一定需要 intrd 文件。

楼主的问题出在于,没有将硬盘设备的驱动编译进内核(或许你编译成模块了,那也没用。)所以在内核启动的时候根本找不到硬盘设备,就更别提找到 / 了。

解决方法有两个:
1 你明确知道你的主板以及硬盘需要什么驱动,直接将这些驱动编译进内核。
2 就是用 intrd 文件。

我是懒的讲,但是 26 楼已经说的很清楚了。超级清楚了,不能再清楚了。

爱编就编,不爱编就别折腾了。来这里发牢骚,我们还不伺候你了呢。


    首先声明,不是我懒惰,而是英文实在是烂,查字典也看不懂,再一个,感谢你还能用中文给我讲一编,再一个,不要骄傲,就算你是一个多大的牛,也不必如此,我来这里没发牢骚,你也不必伺候我,不要把你自己和别人扯成一片,你是你,你所说的我们,别人未必像你这么骄傲与不屑。
   你不想说大可不作声,生平最恨懂个皮毛并觉得很了不起似的。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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