* Imagenes de instalación de las versiones estables para Mageia y OpenMandriva.

OpenMandriva: Mageia (Mageia 9) 20/Agosto/2023 - Anuncio, Descargas.

Blogdrake recomienda descargar las imágenes de instalación (iso) vía torrent para evitar corrupción de datos, aprovechar mejor su ancho de banda y mejorar la difusión de las distribuciones.

Mandriva 2007.1 Spring - Instalación en disco SATA con chipset VIA VT8237A

Hola a todos,

Tanto en Mandriva 2007 como en la nueva Mandriva Spring me he topado con el mismo problema, durante la instalación mis disco maxtor SATA no era detectado, en la versión 2007 lo conseguí solucionar siguiendo las instrucciones de viaarena.com, en la 2007.1 no me ha sido tan fácil, en primer lugar porque no hay parche para esta versión. Pacho me envio el link de bugzilla que trataba este tema, de allí obtuve el código para parchear el módulo sata_via, y al final conseguí que mi disco SATA fuese reconocido durante la instalación.

En viaarena.com, con el último driver (versión 0.81 para la 2007) indican parchear tanto ahci.c como sata_via.c, a mí esta opción no me ha funcionado. Ojo!, detalle: el kernel source para poder generar correctamente el driver .ko ha de ser el de la arquitectura de tu máquina, en mi caso x86_64 .

*Pasos que he seguido:

1) Para parchear:

Instalamos el paquete kernel-source-2.6.17-13mdv (añadir repositorios mediante el drackcontrol, mirror que funciona: "Portugal"), copiamos el fichero sata_via.patch (código más abajo) a /usr/src/linux-2.6.17-13mdv/drivers/scsi/ , aplicamos el parche "patch,ha de salir un mensaje de que el parcheo ha sido correcto, a continuación nos vamos a /usr/src/linux-2.6.17-13mdv, editamos el fichero Makefile y según nuestra versión de linux (i586,i686 o x86_64) deberemos de cambiar:

para i586 cambiar “EXTRAVERSION = -13mdv” por “EXTRAVERSION = -13mdvlegacy

para i686 y x86_64 cambiar “EXTRAVERSION = -13mdvcustom” por “EXTRAVERSION = -13mdv"

Nota: asegurarse que el tipo de procesador en el kernel es i586,i686 o x86_64 (make menuconfig)

A continuación copiamos el fichero config-2.6.17-13mdv de boot a /usr/src/linux-2.6.17-13mdv llamándolo ".config", "cp /boot/config-2.6.17-13mdv /usr/src/linux-2.6.17-13mdv/.config".

Ya casi estamos de esta primera parte, ejecutamos "make" en /usr/src/linux-2.6.17-13mdv/ y cortamos la compilación a los 30 segundos apróximadamente (ctrl + c), no hace falta compilar todo el kernel, sólo queremos compilar un módulo dentro del subdirectorio scsi, así que acto seguido tecleamos: "make M=driver/scsi modules" , con esto y si no ha habido ningún error tendremos creado nuestro flamante driver sata_via.ko con soporte sata para las placas con chipset VIA VT8237A.

2) Segunda parte:

Copiamos el módulo a un disquet (está en /usr/src/linux-2.6.17-13mdv/drivers/scsi/sata_via.ko), después lanzamos la instalación de Mandriva 2007.1, cuando aparece la pantalla de idioma tecleamos Ctrl+F2, y ejecutamos en este orden:

1-modprobe fat
2-modporbe vfat
3-modprobe floppy
4-modprobe libata
5-modprobe sd_mod
6-cd /mnt
7-mkdir driver
8-mount /dev/fd0 driver
9-cd driver
10-insmod-25 sata_via.ko

Con esto habremos cargado el módulo, volvemos a la instalación gráfica con Ctrl+F7, y seguimos la instalación hasta el resumen de hardware, allí volvemos a la segunda consola Ctrl+F2, vamos a generar la imagen initrd que contendrá el módulo sata_via.ko añadido.

3) Tercera parte:

1-chroot /mnt
2-cd /lib/modules/2.6.17-13mdv/kernel/drivers/scsi
3-mv sata_via.ko.gz sata_via.ko.gz.original
4-montamos el disquet con el driver mediante mount /dev/fd0 /mnt/disk (disk ya está creado y vacio)
5-cd /mnt/disk
6-cp sata_via.ko /lib/modules/2.6.17-13mdv/kernel/drivers/scsi
7-generamos el initrd: mkinitrd initrd-ml2007.1-path.img 2.6.17-13mdv

Ahora hay dos opciones:

1-Volvemos a la pantalla resumen de hardware Ctrl+F7, nos vamos a la sección de boot, allí nos apareceran las opciones de grub o lilo (el que hayamos elegido durante la instalación) y los SO's ha arrancar, modificamos el de Mandriva en la subsección "initrd", y cambiamos el initrd por defecto por el creado por nosotros: initrd-ml2007.1-path.img .

2-Crear la entrada de forma manual en /etc/lilo.conf o en /boot/grub/menu.lst, llamando a: initrd-ml2007.1-path.img .

Ya está, espero que a alguién le sirva y sobretodo haberme expresado bien ;-), gracias a Pacho por la información que me proporcionó.

Saludos.

Adjunto código patch (guardar mediante un editor de texto, no recomiendo kate, nombre fichero resultante: sata_via.patch).

Código:

--- sata_via.c.orig 2006-12-19 19:27:06.000000000 -0500
+++ sata_via.c 2006-12-19 06:49:14.000000000 -0500
@@ -63,7 +63,7 @@
PORT0 = (1 << 1),
PORT1 = (1 << 0),
ALL_PORTS = PORT0 | PORT1,
- N_PORTS = 2,
+ N_PORTS = 3,

NATIVE_MODE_ALL = (1 << 7) | (1 << 6) | (1 << 5) | (1 << 4),

@@ -78,7 +78,7 @@
static const struct pci_device_id svia_pci_tbl[] = {
{ 0x1106, 0x3149, PCI_ANY_ID, PCI_ANY_ID, 0, 0, vt6420 },
{ 0x1106, 0x3249, PCI_ANY_ID, PCI_ANY_ID, 0, 0, vt6421 },
-
+ { 0x1106, 0x0591, PCI_ANY_ID, PCI_ANY_ID, 0, 0, vt6420 },
{ } /* terminate list */
};

@@ -106,8 +106,14 @@
.bios_param = ata_std_bios_param,
};

+static void via_pata_phy_reset(struct ata_port *ap);
+static void via_pata_set_piomode (struct ata_port *ap, struct ata_device *adev);
+static void via_pata_set_dmamode (struct ata_port *ap, struct ata_device *adev);
+
static const struct ata_port_operations svia_sata_ops = {
.port_disable = ata_port_disable,
+ .set_piomode = via_pata_set_piomode,
+ .set_dmamode = via_pata_set_dmamode,

.tf_load = ata_tf_load,
.tf_read = ata_tf_read,
@@ -115,7 +121,7 @@
.exec_command = ata_exec_command,
.dev_select = ata_std_dev_select,

- .phy_reset = sata_phy_reset,
+ .phy_reset = via_pata_phy_reset,

.bmdma_setup = ata_bmdma_setup,
.bmdma_start = ata_bmdma_start,
@@ -130,8 +136,8 @@
.irq_handler = ata_interrupt,
.irq_clear = ata_bmdma_irq_clear,

- .scr_read = svia_scr_read,
- .scr_write = svia_scr_write,
+/* .scr_read = svia_scr_read,
+ .scr_write = svia_scr_write,*/

.port_start = ata_port_start,
.port_stop = ata_port_stop,
@@ -191,15 +197,15 @@
{
unsigned long reg_addr = pci_resource_start(pdev, port);
unsigned long bmdma_addr = pci_resource_start(pdev, 4) + (port * 8);
- unsigned long scr_addr;
+/* unsigned long scr_addr;*/

probe_ent->port[port].cmd_addr = reg_addr;
probe_ent->port[port].altstatus_addr =
probe_ent->port[port].ctl_addr = (reg_addr + 8) | ATA_PCI_CTL_OFS;
probe_ent->port[port].bmdma_addr = bmdma_addr;

- scr_addr = vt6421_scr_addr(pci_resource_start(pdev, 5), port);
- probe_ent->port[port].scr_addr = scr_addr;
+/* scr_addr = vt6421_scr_addr(pci_resource_start(pdev, 5), port);
+ probe_ent->port[port].scr_addr = scr_addr;*/

ata_std_ports(&probe_ent->port[port]);
}
@@ -235,7 +241,7 @@
INIT_LIST_HEAD(&probe_ent->node);

probe_ent->sht = &svia_sht;
- probe_ent->host_flags = ATA_FLAG_SATA | ATA_FLAG_SATA_RESET |
+ probe_ent->host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST |
ATA_FLAG_NO_LEGACY;
probe_ent->port_ops = &svia_sata_ops;
probe_ent->n_ports = N_PORTS;
@@ -251,6 +257,165 @@
return probe_ent;
}

+/* add functions for pata */
+
+
+/**
+ * via_pata_cbl_detect - Probe host controller cable detect info
+ * @ap: Port for which cable detect info is desired
+ *
+ * Read 80c cable indicator from ATA PCI device's PCI config
+ * register. This register is normally set by firmware (BIOS).
+*
+ * LOCKING:
+ * None (inherited from caller).
+ */
+static void via_pata_cbl_detect(struct ata_port *ap)
+{
+ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
+ int cfg_addr;
+ u8 tmp;
+
+ if (ap->port_no == 2) { /* PATA channel in VT6421 */
+ ap->cbl = ATA_CBL_PATA80;
+ cfg_addr = 0xB3;
+ pci_read_config_byte(pdev, cfg_addr, &tmp);
+ if (tmp & 0x10) { /* 40pin cable */
+ ap->cbl = ATA_CBL_PATA40;
+ } else { /* 80pin cable */
+ ap->cbl = ATA_CBL_PATA80;
+ }
+ } else { /* channel 0 and 1 are SATA channels */
+ ap->cbl = ATA_CBL_SATA;
+ }
+
+ return;
+}
+
+/**
+ * via_pata_phy_reset - Probe specified port on PATA host controller
+ * @ap: Port to probe
+ *
+ * Probe PATA phy.
+ *
+ * LOCKING:
+ * None (inherited from caller).
+ */
+
+static void via_pata_phy_reset(struct ata_port *ap)
+{
+ via_pata_cbl_detect(ap);
+
+ ata_port_probe(ap);
+
+ ata_bus_reset(ap);
+}
+
+
+/**
+ * via_pata_set_piomode - Initialize host controller PATA PIO timings
+ * @ap: Port whose timings we are configuring
+ * @adev: um
+ * @pio: PIO mode, 0 - 4
+ *
+ * Set PIO mode for device, in host controller PCI config space.
+ *
+ * LOCKING:
+ * None (inherited from caller).
+ */
+
+static void via_pata_set_piomode (struct ata_port *ap, struct ata_device *adev)
+{
+ struct pci_dev *dev = to_pci_dev(ap->host_set->dev);
+
+ u8 cfg_byte;
+ int cfg_addr;
+
+ if (ap->port_no != 2) { /* SATA channel in VT6421 */
+ /* no need to set */
+ return;
+ }
+
+
+ cfg_addr = 0xAB;
+ switch (adev->pio_mode & 0x07) {
+ case 0:
+ cfg_byte = 0xa8;
+ break;
+ case 1:
+ cfg_byte = 0x65;
+ break;
+ case 2:
+ cfg_byte = 0x65;
+ break;
+ case 3:
+ cfg_byte = 0x31;
+ break;
+ case 4:
+ cfg_byte = 0x20;
+ break;
+ default:
+ cfg_byte = 0x20;
+ }
+
+ pci_write_config_byte (dev, cfg_addr, cfg_byte);
+}
+
+/**
+ * via_pata_set_dmamode - Initialize host controller PATA PIO timings
+ * @ap: Port whose timings we are configuring
+ * @adev: um
+ * @udma: udma mode, 0 - 6
+ *
+ * Set UDMA mode for device, in host controller PCI config space.
+ *
+ * LOCKING:
+ * None (inherited from caller).
+ */
+
+static void via_pata_set_dmamode (struct ata_port *ap, struct ata_device *adev)
+{
+ struct pci_dev *dev = to_pci_dev(ap->host_set->dev);
+
+ u8 cfg_byte;
+ int cfg_addr;
+
+ if (ap->port_no != 2) { /* SATA channel in VT6421 */
+ /* no need to set */
+ return;
+ }
+
+ cfg_addr = 0xB3;
+ switch (adev->dma_mode & 0x07) {
+ case 0:
+ cfg_byte = 0xee;
+ break;
+ case 1:
+ cfg_byte = 0xe8;
+ break;
+ case 2:
+ cfg_byte = 0xe6;
+ break;
+ case 3:
+ cfg_byte = 0xe4;
+ break;
+ case 4:
+ cfg_byte = 0xe2;
+ break;
+ case 5:
+ cfg_byte = 0xe1;
+ break;
+ case 6:
+ cfg_byte = 0xe0;
+ break;
+ default:
+ cfg_byte = 0xe0;
+ }
+
+ pci_write_config_byte (dev, cfg_addr, cfg_byte);
+}
+
+
static void svia_configure(struct pci_dev *pdev)
{
u8 tmp8;

Opciones de visualización de comentarios

Seleccione la forma que desee de mostrar los comentarios y haga clic en «Guardar opciones» para activar los cambios.


Gravatar de drakedalfa

# 32651 Post movido

He movido tu post a tu Blog, si lo dejas en la cola de moderacion pasara muchisimo tiempo antes de que salga a la luz o podria ser borrado porque no alcanzo los suficientes votos. Es mejor colgar tus experiencias en tu Blog.

--
¿Quien es Jesucristo?

Opciones de visualización de comentarios

Seleccione la forma que desee de mostrar los comentarios y haga clic en «Guardar opciones» para activar los cambios.