I am building a CentOS 5.4 system that boots off a compact flash card using a card reader that emulates an IDE drive. It literally takes about an hour to boot. The ultra-slow part occurs when Grub is loading the kernel. Once that's done, the rest of the boot process only takes about a minute to get to a login prompt. Does anyone have any suggestions?
I suspect that it may have to do with UDMA. Everything IDE-related in my BIOS seems to checkout. The read performance hdparm is telling me 1.77 MB/s. Ouch! (But even at that rate, it still shouldn't take an hour to decompress and load the kernel)
[root@server ~]# hdparm -tT /dev/hdc
/dev/hdc:
Timing cached reads: 2444 MB in 2.00 seconds = 1222.04 MB/sec
Timing buffered disk reads: 6 MB in 3.39 seconds = 1.77 MB/sec
Trying to enable DMA is a no-go though:
[root@server ~]# hdparm -d1 /dev/hdc
/dev/hdc:
setting using_dma to 1 (on)
HDIO_SET_DMA failed: Operation not permitted
using_dma = 0 (off)
Here's some command outputs that might help:
System
[root@server ~]# uname -a
Linux server.localdomain 2.6.18-164.el5xen #1 SMP Thu Sep 3 04:47:32 EDT 2009 i686 i686 i386 GNU/Linux
PCI info:
[root@server ~]# lspci -v
00:00.0 Host bridge: Intel Corporation 82945G/GZ/P/PL Memory Controller Hub (rev 02)
Subsystem: Intel Corporation 82945G/GZ/P/PL Memory Controller Hub
Flags: bus master, fast devsel, latency 0
Capabilities: [e0] Vendor Specific Information
00:02.0 VGA compatible controller: Intel Corporation 82945G/GZ Integrated Graphics Controller (rev 02) (prog-if 00 [VGA controller])
Subsystem: Intel Corporation 82945G/GZ Integrated Graphics Controller
Flags: bus master, fast devsel, latency 0, IRQ 10
Memory at fdf00000 (32-bit, non-prefetchable) [size=512K]
I/O ports at ff00 [size=8]
Memory at d0000000 (32-bit, prefetchable) [size=256M]
Memory at fdf80000 (32-bit, non-prefetchable) [size=256K]
Capabilities: [90] Message Signalled Interrupts: 64bit- Queue=0/0 Enable-
Capabilities: [d0] Power Management version 2
00:1d.0 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #1 (rev 01) (prog-if 00 [UHCI])
Subsystem: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #1
Flags: bus master, medium devsel, latency 0, IRQ 16
I/O ports at fe00 [size=32]
00:1d.1 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #2 (rev 01) (prog-if 00 [UHCI])
Subsystem: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #2
Flags: bus master, medium devsel, latency 0, IRQ 17
I/O ports at fd00 [size=32]
00:1d.2 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #3 (rev 01) (prog-if 00 [UHCI])
Subsystem: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #3
Flags: bus master, medium devsel, latency 0, IRQ 18
I/O ports at fc00 [size=32]
00:1d.3 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #4 (rev 01) (prog-if 00 [UHCI])
Subsystem: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #4
Flags: bus master, medium devsel, latency 0, IRQ 19
I/O ports at fb00 [size=32]
00:1d.7 USB Controller: Intel Corporation 82801G (ICH7 Family) USB2 EHCI Controller (rev 01) (prog-if 20 [EHCI])
Subsystem: Intel Corporation 82801G (ICH7 Family) USB2 EHCI Controller
Flags: bus master, medium devsel, latency 0, IRQ 16
Memory at fdfff000 (32-bit, non-prefetchable) [size=1K]
Capabilities: [50] Power Management version 2
Capabilities: [58] Debug port
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev e1) (prog-if 01 [Subtractive decode])
Flags: bus master, fast devsel, latency 0
Bus: primary=00, secondary=01, subordinate=01, sec-latency=32
I/O behind bridge: 0000d000-0000dfff
Memory behind bridge: fde00000-fdefffff
Prefetchable memory behind bridge: 00000000fdd00000-00000000fdd00000
Capabilities: [50] #0d [0000]
00:1f.0 ISA bridge: Intel Corporation 82801GB/GR (ICH7 Family) LPC Interface Bridge (rev 01)
Subsystem: Intel Corporation 82801GB/GR (ICH7 Family) LPC Interface Bridge
Flags: bus master, medium devsel, latency 0
Capabilities: [e0] Vendor Specific Information
00:1f.2 IDE interface: Intel Corporation 82801GB/GR/GH (ICH7 Family) SATA IDE Controller (rev 01) (prog-if 80 [Master])
Subsystem: Intel Corporation 82801GB/GR/GH (ICH7 Family) SATA IDE Controller
Flags: bus master, 66MHz, medium devsel, latency 0, IRQ 17
I/O ports at <unassigned>
I/O ports at <unassigned>
I/O ports at <unassigned>
I/O ports at <unassigned>
I/O ports at f800 [size=16]
Capabilities: [70] Power Management version 2
00:1f.3 SMBus: Intel Corporation 82801G (ICH7 Family) SMBus Controller (rev 01)
Subsystem: Intel Corporation 82801G (ICH7 Family) SMBus Controller
Flags: medium devsel, IRQ 17
I/O ports at 0500 [size=32]
01:04.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
Subsystem: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+
Flags: bus master, medium devsel, latency 32, IRQ 18
I/O ports at de00 [size=256]
Memory at fdeff000 (32-bit, non-prefetchable) [size=256]
Capabilities: [50] Power Management version 2
01:06.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
Subsystem: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+
Flags: bus master, medium devsel, latency 32, IRQ 17
I/O ports at dc00 [size=256]
Memory at fdefe000 (32-bit, non-prefetchable) [size=256]
Capabilities: [50] Power Management version 2
01:07.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
Subsystem: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+
Flags: bus master, medium devsel, latency 32, IRQ 19
I/O ports at da00 [size=256]
Memory at fdefd000 (32-bit, non-prefetchable) [size=256]
Capabilities: [50] Power Management version 2
hdparm ouput:
[root@server ~]# hdparm /dev/hdc
/dev/hdc:
multcount = 0 (off)
IO_support = 0 (default 16-bit)
unmaskirq = 0 (off)
using_dma = 0 (off)
keepsettings = 0 (off)
readonly = 0 (off)
readahead = 256 (on)
geometry = 8146/16/63, sectors = 8211168, start = 0
[root@server ~]# hdparm -I /dev/hdc
/dev/hdc:
ATA device, with non-removable media
Model Number: InnoDisk Corp. - iCF4000 4GB
Serial Number: 20091023AACA70000753
Firmware Revision: 081107
Standards:
Supported: 5
Likely used: 6
Configuration:
Logical max current
cylinders 8146 8146
heads 16 16
sectors/track 63 63
--
CHS current addressable sectors: 8211168
LBA user addressable sectors: 8211168
device size with M = 1024*1024: 4009 MBytes
device size with M = 1000*1000: 4204 MBytes (4 GB)
Capabilities:
LBA, IORDY(can be disabled)
Standby timer values: spec'd by Vendor
R/W multiple sector transfer: Max = 2 Current = 2
DMA: mdma0 mdma1 mdma2 udma0 udma1 *udma2 udma3 udma4
Cycle time: min=120ns recommended=120ns
PIO: pio0 pio1 pio2 pio3 pio4
Cycle time: no flow control=120ns IORDY flow control=120ns
Commands/features:
Enabled Supported:
* Power Management feature set
* WRITE_BUFFER command
* READ_BUFFER command
* NOP cmd
* CFA feature set
* Mandatory FLUSH_CACHE
HW reset results:
CBLID- above Vih
Device num = 0
CFA power mode 1:
enabled and required by some commands
Maximum current = 100ma
Checksum: correct
Edit: It's taking about 5 minutes to just get past the "GRUB loading stage 2..." message. I've come to the conclusion that the problem is likely either: bootloader, BIOS/firmware, or a hardware issue. I've played with all relevant BIOS settings without any luck and replaced my IDE cable in case I had a bad one. I have a new compact flash card (a different brand) on order, but it'll be a few days before it gets here. I'm also currently running Memtest86 to see if I have an odd issue with my RAM. Once that's done, I'll see if there's a firmware update available for my motherboard.
Problem solved!
Oddly enough, disabling UDMA in the BIOS fixed the problem.
Thanks goes to this Ubuntu thread for having the answer. And thanks to everyone here for their suggestions as well!
You most likely dont have the correct driver built in the kernel. Also, make sure your IDE controller is enabled in the BIOS.
Otherwise, please post the content of /var/log/dmesg
Thanks
Try the GRUB
testload
command on the kernel file - is that also slow?I feel your disk buffer is very slow!! rest of thing look ok to me..
following is from my running server with SATA