LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Slackware - Installation (https://www.linuxquestions.org/questions/slackware-installation-40/)
-   -   Compiling 2.6.17.7 kernel (https://www.linuxquestions.org/questions/slackware-installation-40/compiling-2-6-17-7-kernel-471774/)

gmartin 08-07-2006 09:01 PM

Compiling 2.6.17.7 kernel
 
In my previous thread we decided that I needed to compile a new kernel so I could build in SMP and to add himem support. I'm following the instructions at the alien slackbook
All went well during the compile but when I boot, I get the error mentioned in the "initrd" section of the compile guide. I tried creating the initrd using:
mkinitrd -c -k 2.6.16.18 -m reiserfs
which reports: WARNING: Could not find module for "reiserfs"

I looked for the module in /usr/src/linux-2.6.17.7/fs (this is the path for the /usr/src/linux link.) and found it. Not sure why it wasn't found. Can I copy it to the initrd directory?

Two questions:
- When I built the kernel, I included reiserfs as part of the kernel (not module).

- Could this be an issue with the SATA driver? I did mark the SATA support as a part of the kernel (under Device Drivers/SCSI device support/Serial ATA Support. But the individual drivers under that part of the tree are marked as modules. Any idea what driver i need to support the intel 945 chipset SATA?

Thanks, as always

zetabill 08-07-2006 09:51 PM

Reiserfs is not a module but compiled into the kernel? No need for reiserfs in an initrd...

I'm not a SATA user so I can't comment on what drivers you need. If you mark the drivers for the hard drive that contains the root partition in the kernel as modules, they will be compiled as modules. Those should probably be compiled into the kernel as well... at least for stability's sake. I always thought that support for the hard disk with the root partition should always be compiled into the kernel and any other drives can be modules; it's what I would recommend. Either way, that might be the only reason you'd want to give an initrd a shot.

I would say that you really don't need an initrd if you are going to go back and compile the hard disk drivers into the kernel.

I don't use an initrd on my machine because I don't compile necessary components for system booting as modules. After that, everything that can be modules... are modules. I've never had any problems with this method.

EDIT: cleaned up some grammar and tried to be more specific.

gmartin 08-08-2006 11:50 AM

Thanks, Bill.

I believe you are correct about reiserfs, but I do get this error when I boot:
Quote:

VFS: Cannot open root device "802" or unknown-block (8,2)
Please append a correct "root=" boot option
Kernel Panic-not syncing: VFS: unable to mount root fs on unknown block(8,2)
The error is identical to that reported on this page. that discusses the need for an initrd.

I agree that I'd love to compile in everything I need for the kernel to boot, but how do I identify what else I need?

zetabill 08-08-2006 01:56 PM

The drivers for the hard disk either aren't in the kernel or aren't in the initrd.

I'm sure that there are plenty of other thoughts about this, but if you have a decent system and you're compiling your own kernel, then the initrd isn't entirely necessary. If anything it can be used to avoid exactly the message you got.

Your error is basically saying "I have no clue how to use that piece of hardware that you pointed me to. I can't find it anywhere." Basically, since the sata drivers aren't in the kernel and it's not supplemented by an initrd with the drivers, it can't use the hard disk because the modules aren't loaded until well after the kernel is booted.

So you can get rid of that message by recompiling the kernel with the SATA drivers compiled into the kernel. Or, if you want the initrd (to me it's just an extra step), make one with the SATA modules. I don't know which ones they are... like I said... I don't know too much about sata... :(

The initrd is popular because people like to make "streamlined" kernels. Basically these kernels are as small as they can possibly be... but that means leaving out things like support for hard disks and filesystems. So the initrd is there to throw those drivers into ram quickly while the tiny kernel boots, and then once the modules are loaded the initrd is dropped. It really isn't necessary, and with how fast computers are nowadays the use of initrd for custom kernels is basically more for fun and challenge.

There are certain things I compile into the kernel instead of modules even though they can be modules. Things like ACPI, hard disk, video/framebuffer, basically things that "work better" in the kernel especially things that are needed between lilo and module loading.

Alien Bob 08-22-2006 02:19 PM

Quote:

All went well during the compile but when I boot, I get the error mentioned in the "initrd" section of the compile guide. I tried creating the initrd using:
mkinitrd -c -k 2.6.16.18 -m reiserfs
which reports: WARNING: Could not find module for "reiserfs"

I looked for the module in /usr/src/linux-2.6.17.7/fs (this is the path for the /usr/src/linux link.) and found it. Not sure why it wasn't found.
The kernel that you intend to use must match it's version with the value after the -k parameter to mkinitrd. The "-k 2.6.16.18" basically tells mkinitrd to go look for the requested modules in /lib/modules/2.6.16.18/.

Eric

gmartin 08-23-2006 09:04 PM

Thanks for the info. I suspect the .18 was a typo. I was able to identify the correct sata driver and it loads just fine now as part of the kernel.

Thanks to all

hottdogg 09-09-2006 09:34 PM

qmartin, may I know what intel SATA drivers that you include in the kernel 2.6 config?
or maybe post your .config that related to harddisk maybe... :)
I think I have similiar problem with yours. (my case: slack 10.2 from 2.4.31 to 2.6.17.8)

Sort of like this:
Please append a correct "root=" boot option
Kernel Panic-not syncing: VFS: unable to mount root fs on unknown block

[btw,how on earth you can extract dmesg content if you can't login?]

Just FYI:
1) I've followed advice from Recompile Kernel 2.4 -> 2.6 [kernel panic] --> solved!
my root partition is /dev/hda4, So, I point to it for suspend thing.

2)I configured reiserfs support to include IN kernel. NOT module. So i dont need mkinitrd I suppose.
And I use ext3 fs.

But, both of 'em still don't solve my kernel panic problem.

-EDIT-
This problem is in an NEC pc in my office.Damn branded thing. Now, I have to find out what interface of the hdd this pc used. Whilst with my old generic kernel (bare.i), slackware detected my hdd as hda. So is my hdd SATA or ATA ?

hottdogg 09-10-2006 01:15 AM

Wow! finally I can run kernel 2.6.17.8. Now I just have to config sound.

My problem is solved.It seems that my office pc is using intel sata controller for the sata maxtor hdd.
Here's what I've done:
1)I include (Yes) intel SATA controller in kernel config. Previously it was act as module.
2) the default for suspend thing changed to /dev/sda4.

I don't where's intel sata entry in .config .But, here's snippet of my kernel 2.6 .config:
Code:

# SCSI low-level drivers
#
# CONFIG_ISCSI_TCP is not set
# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
# CONFIG_SCSI_3W_9XXX is not set
# CONFIG_SCSI_ACARD is not set
# CONFIG_SCSI_AACRAID is not set
# CONFIG_SCSI_AIC7XXX is not set
# CONFIG_SCSI_AIC7XXX_OLD is not set
# CONFIG_SCSI_AIC79XX is not set
# CONFIG_SCSI_DPT_I2O is not set
# CONFIG_SCSI_ADVANSYS is not set
# CONFIG_MEGARAID_NEWGEN is not set
# CONFIG_MEGARAID_LEGACY is not set
# CONFIG_MEGARAID_SAS is not set
CONFIG_SCSI_SATA=y
CONFIG_SCSI_SATA_AHCI=y
# CONFIG_SCSI_SATA_SVW is not set
CONFIG_SCSI_ATA_PIIX=y
# CONFIG_SCSI_SATA_MV is not set
# CONFIG_SCSI_SATA_NV is not set
# CONFIG_SCSI_PDC_ADMA is not set
# CONFIG_SCSI_SATA_QSTOR is not set
# CONFIG_SCSI_SATA_PROMISE is not set
# CONFIG_SCSI_SATA_SX4 is not set
# CONFIG_SCSI_SATA_SIL is not set
# CONFIG_SCSI_SATA_SIL24 is not set
# CONFIG_SCSI_SATA_SIS is not set
# CONFIG_SCSI_SATA_ULI is not set
CONFIG_SCSI_SATA_VIA=y
# CONFIG_SCSI_SATA_VITESSE is not set
CONFIG_SCSI_SATA_INTEL_COMBINED=y
# CONFIG_SCSI_BUSLOGIC is not set
# CONFIG_SCSI_DMX3191D is not set
# CONFIG_SCSI_EATA is not set
# CONFIG_SCSI_FUTURE_DOMAIN is not set
# CONFIG_SCSI_GDTH is not set
# CONFIG_SCSI_IPS is not set
# CONFIG_SCSI_INITIO is not set
# CONFIG_SCSI_INIA100 is not set
# CONFIG_SCSI_PPA is not set
# CONFIG_SCSI_IMM is not set
# CONFIG_SCSI_SYM53C8XX_2 is not set
# CONFIG_SCSI_IPR is not set
# CONFIG_SCSI_QLOGIC_1280 is not set
# CONFIG_SCSI_QLA_FC is not set
# CONFIG_SCSI_LPFC is not set
# CONFIG_SCSI_DC395x is not set
# CONFIG_SCSI_DC390T is not set
# CONFIG_SCSI_NSP32 is not set
CONFIG_SCSI_DEBUG=m

Steps After compiling and after copy stuff to /boot:

1)I restart, go to bios and choose [Enhanced] instead of [legacy]/[disabled] for drive configuration thing.(I forgot what's the entry...).

2)boot slack cd
3)boot sata.i
4)look for entry sda in dmesg
4) mount /mnt/point /dev/sda4
5)edit fstab. Changed any harddrive device(hdaX) to sdaX.
6)edit /etc/lilo.conf so root partition point to sda4
7)run /mnt/point/sbin/lilo.conf -r /mnt/point/
8)restart
9)login to kernel 2.6.17.8


All times are GMT -5. The time now is 07:57 PM.