> Now grub comes up and displays a prompt, but not a menu. Keyboard > doesn't work however, so I cannot do anything with grub yet. > You can use the serial > I tried to re-run grub-mkimage with module 'usb_keyboard' and 'ahci' > added, but that didn't help, keyboard still not working: > usb_keyboard was obviously missing so I thought you use serial. Fuloong neither uses nor implements AHCI. > sudo grub-mkimage --config=/boot/grub.elf.conf > --output=/boot/grub4-4k.elf --format=mipsel-fuloong-elf --verbose ata > pata part_msdos ext2 reboot halt lspci ohci ahci usbtest usbms linux fat > xfs part_gpt multiboot2 minicmd configfile gcry_md5 hashsum usb_keyboard > > grub.elf.conf: > > set root=pata0,msdos1 > set prefix=($root)/grub Only module was renamed. Not the names of disks. You can achieve same result much more easily with -p '(ata0,msdos1)/grub' > I also ran 'grub-install' once, which put a full set of grub modules to > /boot/grub. However, it failed to generate a grub image and complained: > > $ sudo /usr/local/sbin/grub-install > /usr/local/bin/grub-mkimage: error: cannot stat > /usr/local/lib/grub/mipsel-loongson/uhci.mod. > Fix attached > according to lsusb, my keyboard is a > > Bus 002 Device 003: ID 0b51:0020 Comfort Keyboard Co. Comfort Keyboard > > , connected to the top-right usb slot. Other than that only a usb-mouse > is also connected. No hubs or other advanced usb-hardware. Can you try w/o mouse? Can you try with hotplugging keyboard rather than having one on boot? > Any ideas what's wrong now? > > cheers, > > David > > > _______________________________________________ > Grub-devel mailing list > [email protected] > https://lists.gnu.org/mailman/listinfo/grub-devel
-- Regards Vladimir 'φ-coder/phcoder' Serbinenko
=== modified file 'grub-core/disk/ata.c'
--- grub-core/disk/ata.c 2011-07-07 19:46:25 +0000
+++ grub-core/disk/ata.c 2011-07-23 16:17:06 +0000
@@ -57,6 +57,7 @@
{
grub_dprintf ("ata", "Addressing: %d\n", dev->addr);
grub_dprintf ("ata", "Sectors: %lld\n", (unsigned long long) dev->size);
+ grub_dprintf ("ata", "Sector size: %u\n", 1U << dev->log_sector_size);
}
}
@@ -170,6 +171,21 @@
else
dev->size = grub_le_to_cpu64(*((grub_uint64_t *) &info16[100]));
+ if (info16[106] & (1 << 12))
+ {
+ grub_uint32_t secsize;
+ secsize = grub_le_to_cpu32 (*((grub_uint32_t *) &info16[117]));
+ if (secsize & (secsize - 1) || !secsize
+ || secsize > 1048576)
+ secsize = 256;
+ for (dev->log_sector_size = 0;
+ (1U << dev->log_sector_size) < secsize;
+ dev->log_sector_size++);
+ dev->log_sector_size++;
+ }
+ else
+ dev->log_sector_size = 9;
+
/* Read CHS information. */
dev->cylinders = info16[1];
dev->heads = info16[3];
@@ -314,7 +330,7 @@
grub_ata_setaddress (ata, &parms, sector, batch, addressing);
parms.taskfile.cmd = (! rw ? cmd : cmd_write);
parms.buffer = buf;
- parms.size = batch * GRUB_DISK_SECTOR_SIZE;
+ parms.size = batch << ata->log_sector_size;
parms.write = rw;
if (ata->dma)
parms.dma = 1;
@@ -322,9 +338,9 @@
err = ata->dev->readwrite (ata, &parms, 0);
if (err)
return err;
- if (parms.size != batch * GRUB_DISK_SECTOR_SIZE)
+ if (parms.size != batch << ata->log_sector_size)
return grub_error (GRUB_ERR_READ_ERROR, "incomplete read");
- buf += GRUB_DISK_SECTOR_SIZE * batch;
+ buf += batch << ata->log_sector_size;
sector += batch;
nsectors += batch;
}
@@ -433,6 +449,7 @@
return grub_error (GRUB_ERR_UNKNOWN_DEVICE, "not an ATA harddisk");
disk->total_sectors = ata->size;
+ disk->log_sector_size = ata->log_sector_size;
disk->id = grub_make_scsi_id (id, bus, 0);
=== modified file 'include/grub/ata.h'
--- include/grub/ata.h 2011-07-07 10:21:53 +0000
+++ include/grub/ata.h 2011-07-23 15:38:46 +0000
@@ -170,6 +170,7 @@
/* Sector count. */
grub_uint64_t size;
+ grub_uint32_t log_sector_size;
/* CHS maximums. */
grub_uint16_t cylinders;
=== modified file 'util/grub-install.in'
--- util/grub-install.in 2011-07-10 14:06:31 +0000
+++ util/grub-install.in 2011-07-24 11:35:39 +0000
@@ -504,7 +504,11 @@
fi
if [ "x$disk_module" = xnative ]; then
- disk_module="pata ahci ohci uhci usbms"
+ disk_module="pata ahci ohci"
+ if [ "x$target_cpu" = "xi386" ] || [ "x$target_cpu" = "xx86_64" ]; then
+ disk_module="$disk_module uhci"
+ fi
+ disk_module="$disk_module usbms"
fi
# The order in this list is critical. Be careful when modifying it.
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Grub-devel mailing list [email protected] https://lists.gnu.org/mailman/listinfo/grub-devel
