• Skip to main content

zoiaorg

Tech, Strategy, and other interesting things by Roberto Zoiaby Roberto Zoia

  • Articles
  • Book Reviews
  • Effective Goal Setting
  • What I’m Reading
  • Archive
  • About

winload.exe is missing or corrupted…

2008-07-03 by Roberto Zoia

En realidad, no ha ocurrido nada malo, ni hay nada “corrupto”. Es una mala broma de Windows.

Una mejor forma

Quizá hubiera sido mejor usar CloneZilla o Norton Ghost para duplicar los discos. Estos programas sacan copia exacta del disco. Pero como no tenía el Ghost, y para usar Clonezilla necesitaba unos cincuentaitantos gigas en algún sitio para crear la imagen del disco duro de la laptop… simplemente conecté el disco nuevo via USB a la laptop, y usé GParted[1] para copiar las particiones de Windows y Linux de un disco a otro.

winload.exe is missing or corrupted

El problema es que GParted no copia la tabla de particiones del disco original, sino que crea una nueva tabla y luego copia. Después de buscar un poco en Google, gracias a Hazard’s Stuff descubrí que lo único que quiere decir Windows con ese mensaje es que el número de serie del disco duro ha cambiado, y que por eso se niega a funcionar.
La entrada en Wikipedia sobre el sector de carga (MBR)/en español[2] explica que en el offset $1B8 del primero sector del disco duro hay un número entero de 4 bytes que es la firma del disco, un número de serie. Es un campo opcional, pero cuando se crea la tabla de particiones por primera vez el programa escribe allí un número. (No me he detenido a averiguar cómo lo genera.)
Si Windows descubre que este número ha cambiado, muestra el famoso mensaje, winload.exe is missing or corrupted y se niega a seguir. Menos mal, como este numerito realmente no sirve para nada, basta reemplazarlo por el número del disco viejo para que Windows funcione.
El procedimiento que usé seguro que no es el más amigable. Pero igual lo recojo, porque funciona. Si a alguno se le ocurre algo más amigable (aparte de usar el disco de instalación de Windows para corregir el problema), bienvenidas sean las sugerencias.

Cambiar el número de serie del disco duro

Antes de seguir, advierto que este procedimiento, si sale mal, puede hacer que se pierda toda la información del disco. Tampoco sé si esto viola de algún modo la licencia de Windows.
* Arrancamos la laptop desde un Live CD con Linux. Conectamos el disco antiguo a través del cable USB. En mi caso, /dev/sda es el disco nuevo, y /dev/sdb el disco antiguo.
En un terminal:
* Instalamos hexedit, un programa muy liviano que nos permitirá editar el contenido del archivo en formato hex.

$ sudo apt-get install hexedit

* Copiamos el MBR (el sector 0) del disco nuevo al archivo mbr.bin

$ sudo dd if=/dev/sda of=mbr.bin bs=512 count=1

* Copiamos el MBR del disco viejo al archivo mbr_old.bin

$ sudo dd if=/dev/sdb of=mbr_old.bin bs=512 count=1

* Abrimos el MBR del disco antiguo con hexedit ($ hexedit mbr_old.bin) y tomamos nota en un papel de los 4 bytes en la posición $1B8 del archivo. Estos cuatro bytes son la firma del disco duro antiguo. Por ejemplo, A0 00 A1 00.
* Salimos de hexedit, y ahora abrimos el MBR del disco nuevo, también usando hexedit ($ sudo hexedit mbr.bin). Vamos al offset $1B8. La firma de este disco es E1 F5 63 EC, la reemplazamos por la del disco viejo (A0 00 A1 00) y guardamos el archivo.
* Reescribimos el MBR modificado al disco nuevo:

$ sudo dd if=mbr.bin of=/dev/sda bs=512 count=1

* Listo, reiniciamos la PC. Windows debe cargar sin problemas.

Algunas aclaraciones

  • El procedimiento que seguí es un poco distinto al que he descrito. Lo primero que hice fue reinstalar GRUB, el boot loader de Ubuntu, en el sector 0, de modo que pudiera cargar Linux en la portátil. La modificación del sector de carga no la hice desde el Live CD, sino desde Linux instalado en la portátil.
    Notas:
    [1] GParted es una especie de Partition Magic, pero Open Source. Aunque corre en Linux, puede copiar también particiones de Windows (FAT32 y NTFS), de Mac (HFS) y otros tipos. Gracias al Live CD no hace falta instalar Linux para usarlo.
    [2] El Master Boot Record (MBR) es el primer sector del disco duro. Contiene la tabla de particiones y otra información adicional. Es esencial para el arranque de la PC. Ver Wikipedia sobre el MBR/en español.

Filed Under: Legacy Tagged With: boot sector, drive upgrade, dual boot, mbr, partition, ubuntu, winload.exe

Did you like this article?

Join our FREE Newsletter and receive updates directly to your inbox.

We hate SPAM. We'll keep your email address safe.

  • What I’m Focused on Now
  • Español
  • Privacy Policy

Copyright © 2021 Roberto Zoia
zoia.org runs on WordPress using a customized version of the Parallax Pro Theme for the Genesis Framework.

This website uses cookies to improve your experience.Accept
Privacy & Cookies Policy

Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary
Always Enabled

Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.

Non-necessary

Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.

SAVE & ACCEPT