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