good job. definitely good for recovery. Thanks.
Took the drive out of the white box, pushed it in a usb case, attached it to my pc, gave it a working partition table, and that was all to say Open Sesame to the internal hard disk of the Asus WL-700Ge: see attachment
This picture shows what you are about to see if you do the same.
This makes all sorts of new and unthought things possible: recover from that little stupid mistake that rendered your box to a brick – backup all the data – replace the disk with a larger one without losing a single bit – grab your data much quicker – etc.
Now, if you are curious for the gory details, read on. I will explain in extenso what I did and it will give you the little recipe to get you going.
The recipe
- Take the disk out of the Asus. It can be opened very easily. You'll see a screw in the middle of a silver case, unscrew it, and take the lid off. You'll break the warranty, but only for the disk, not for the other hardware. You'll have to get it loose with care and power.
Next, put it in something that you can use at your pc. I took a usb diskcase for that matter.- Start up your Linux pc. Oh, what, you have something different? Well, grab hold on a Knoppix DVD www.knoppix.org, that will give you a comfortable GUI to play with, or, if you're more brave, get yourself a Linux rescue disk www.sysresccd.org. It won't be so nice to look at, but it comes with all kind of goodies you will love to have, once acquainted to it. As the Asus itself uses Linux, and the disk is formatted with ReiserFS, you must use something capable for it. Why not take the plunge and install some sort of Linux next to what you're used to until now? Well, I leave you to decide what to do.
- The Asus disk will have a name as /dev/sda or /dev/sdb, dev/sdc etc, depending on how many other USB drives or sticks it sees. Let me assume it is /dev/sda. Now, run
You will have to do this as root.Code:fdisk /dev/sda- You can tell it is the Asus disk when fdisk says that the drive has no valid partition table. Ok, now just leave fdisk, with
First we will and must make a backup of the first 512 bytes of the disk that contains this invalid partition table, or else your with brick won't start up.Code:q- Backing up the MBR or first 512 bytes is as easy as this:
What you specify after of= makes all the difference: that is the file you will need to restore later on. So make sure you have it, and don't loose it.Code:dd if=/dev/sda of=asus-mbr-original bs=512 count=1- Now that we have a backup of the MBR, we can savely give the disk a new partition table. Run
again. GiveCode:fdisk /dev/sdato change the from cylinder input to sector input. The Reiser partition starts at a sectorboundary, that's because. Now make a new partition:Code:ufdisk will ask for the first sector. Here comes the magic secret: 1262160. Next, for the last sector, just hit enter. It will define a Linux partition starting from sector 1262160 and occupying the rest of the disk. Check this withCode:n p 1and then, then...Code:pto write it. Don't sweat, you have a backup, don't you? This write operation will only touch the first 512 bytes of the disk.Code:w- If you did it right, you can say open sesame with
in which /mnt/asus is just a directory you made before, didn't you?Code:mount /dev/sda1 /mnt/asus
Now, all what you normally find in /shares/MYVOLUME1 you'll find in /mnt/asus. DONE.- If you did it wrong, mounting /dev/sda1 will fail, that's all. I'm pretty sure that 1262160 is the starting sector. It is so for my 250GB disk, and I guess it will be the same for a 160GB disk or whatever size disk your Asus came with.
- All done? You'll have to restore the MBR, with
Don't forget that, or else the Asus won't start at all. And don't mix if and of!!Code:dd of=/dev/sda if=asus-mbr-original
Some remarks
- I made a complete backup of the disk with dd if=/dev/sda of=/dev/sdb in which sdb was my backup disk. It took a mere 13 hours, and dd is not of the talkative kind. Better use ddrescue, that comes with the rescue disk.
- If you want to transfer your disk to a larger one, use dd or ddrescue to copy all sectors until nr 1262160, that is about 600 MiB. Next, use partimage to backup the reiserfs partition from your original disk, define a new partition on your new disk occupying sector 1262160 to the end, and restore this with partimage, and resize it. The rescue cd has all the programs.
- The disk starts with a Broadcom sign and with a compressed partition of about 600 MiB, containing probably the firmware. This means that a mirror disk of MYVOLUME1 is not enough to replace a faulty internal disk. It has to have the complete content.
I like to thank Jan van Wijk http://www.dfsee.com for his assistance in finding the startposition of MYVOLUME1
Last edited by mumsoft; 22-08-2007 at 13:26. Reason: Clarifications and thank to Jan van Wijk.
good job. definitely good for recovery. Thanks.
I've tried to use this solution for repairing internal disk of my Asus WL-700gE after unsuccessful installation of Kamikaze. After completing all steps and installing original asus software my disk has look like this:
This partition table is correct?Code:# fdisk /dev/ide/host2/bus0/target0/lun0/disc The number of cylinders for this disk is set to 30401. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK) Command (m for help): u Changing display/entry units to sectors Command (m for help): p Disk /dev/ide/host2/bus0/target0/lun0/disc: 250.0 GB, 250059350016 bytes 255 heads, 63 sectors/track, 30401 cylinders, total 488397168 sectors Units = sectors of 1 * 512 = 512 bytes Device Boot Start End Blocks Id System /dev/ide/host2/bus0/target0/lun0/part1 1262160 488397167 243567504 83 Linux /dev/ide/host2/bus0/target0/lun0/part2 63 1253069 626503+ 83 Linux Partition table entries are not in disk order Command (m for help): q #
Root of my system is /dev/ide/host2/bus0/target0/lun0/part1:
and it cannot be erased.Code:# mount /dev/ide/host2/bus0/target0/lun0/part1 on / type cramfs (rw)
Partition /dev/ide/host2/bus0/target0/lun0/part2 cannot be mount:
Maybe I've missed something?Code:# mount /dev/ide/host2/bus0/target0/lun0/part2 /mnt mount: Mounting /dev/ide/host2/bus0/target0/lun0/part2 on /mnt failed: Invalid argument #
Not exactly. That is, my internal disk has an invalid partition table, that simply shows nothing with the p command. And, believe it or not, that is correct.
Well, yes, and me too. I have never installed kamikaze and then tried to get back to the old firmware. So, anything that follows is highly untested and suspicious for errors.Root of my system is /dev/ide/host2/bus0/target0/lun0/part1:
and it cannot be erased.Code:# mount /dev/ide/host2/bus0/target0/lun0/part1 on / type cramfs (rw)
Partition /dev/ide/host2/bus0/target0/lun0/part2 cannot be mount:
Maybe I've missed something?Code:# mount /dev/ide/host2/bus0/target0/lun0/part2 /mnt mount: Mounting /dev/ide/host2/bus0/target0/lun0/part2 on /mnt failed: Invalid argument #
But you might try it.
I won't go in very much detail, for details see my original instructions. I like you to try a new (that is, mine) bootsector for you.
a) First, take the disk out the Asus, and attach it to your Linux-running pc.
b) make a BACKUP of the original bootsector, in case we do something stupid.
c) put the attached bootsector over the original
d) Put the disk in the Asus and see if it will boot now.
No garantees!
If it still fails to work, you can restore the backup bootsector if you wish.
Regards,
Marc
This sounds promising...
I have the "same" problem but than for an external USB (750GB!) disk.
Didn't configure it for mirroring, I would assume I don't have the ~600MB "OS" Partition on it!? Therefore the partition with my data probably won't start at 1262160.
Is there someone who succeeded mounting his WL700gE formated USB disk on some other Linux system? Maybe by using the trick (or a derived version of it) described above?
I want to move my USB Disk to a Linux server (<5w) which has a bit more power and throughput as the WL700gE. But I don't feel like copying the data from the huge disk to an other and back again...
I don't think someone will have a solution. Of course you could wait for it, but in the meantime you could easily copy all the files to another disk and back again, and do that twice and again and forever.
But you never know... and of course there must be some other magic number than 1262160 which is probably much smaller. But I never succeeded to get my files without first 'destroying' the disk. I assume you have read this:
http://wl500g.info/showpost.php?p=48361&postcount=5
Regards
Marc
Since you don want to loose your files (who does?) take care!
MAYBE this could work:
- backup the original MBR of this disk. I said BACKUP.
- give it a NEW partition table and define a reiserfs primary partition occupying the whole disk.
- try to mount that.
Success?
NO success? RESTORE the original MBR
This is not reinventing the wheel, but inventing it.
If you make one mistake, you will loose your files.
With the new partition table the Asus will NOT recognize it anymore.
Capice?
It is highly experimental, but, with the original MBR at hand, theoretically not much can go wrong.
Regards en de groeten uit Holland,
Marc
Search and thy will find!
I looked at the first sector of the disk and found "Broadcom NAS Version 1.1 MBR Tag".. With the help of Google I found: http://blog.stevecoinc.com/2007_12_01_archive.html
In short, for those who want to recover some information of the disk:
I managed to mount the file system read only or even write only with a few easy steps and no risk of ruining the information! (Do the steps below as root!)
1) Find the location of the Superblock so the filesystem can be mounted.
For me the disk was available under /dev/sda
I installed hexedit (ubuntu: apt-get install hexedit)
Run hexedit on the device: hexedit /dev/sda
Than use TAB to get into the ASCII Part of the Data (otherwise it will search HEX Values) and type "/" (without quotes) to search. Search for "ReIsEr" (again without qoutes).
Note (piece of paper) the HEX value at the start of the line and change the last 2 digits to 00. (For me it was at 0011430, so I noted 0x11400 down)
Change the HEX value to decimal (70656) and subtract 65536 (superblock is 64K before the found value) which leaves 5120 for me.
2) Use a loop device so it looks like it starts at the found location:
losetup -o 5120 /dev/loop0 /dev/sda
(Use "losetup -f" to find the first unused loop device!)
3) Mount the file system read only (or even writing is possible!)
mount -r -t reiserfs /dev/loop1 /mnt/mymountpoint
And behold... your files!!!
(If this was to hard or the one from SteveCo didn't help, try: https://www.blogger.com/comment.g?bl...85480231306306 maybe that will explain it better?)
Now I will see if I can change the information on the disk as described with fdisk...
Last edited by robink; 23-04-2008 at 22:22.
Robin,
I guess this is something worth an own HOW-TO. Not something hidden in this thread here...
Very good job!
Regards,
Marc
Hallo,
have anybody replaced the Harddisk to a larger??? 500GB or better 750GB for example???
Thank you
Yes sure, works just fine. Just replace the internal P-ATA Hardrive with something bigger. You'll have to reinstall the firmware to make it work as this will format the drive during the installation process. You should be able to find a guide somethere here.
Better find a drive that doesn't get too hot, there is no need to pick a quick one (5400rpm would just be fine) as the Asus can't handly the IO anyway! On top of that it's probably less noisy.
My 500GB drive broke down, I suspect that overclocking and additionally having a 7200 rpm that gets hot made it cook.