Creating a bootable USB...
When building my PC I made the decision to not purchase a DVD drive as I figured I never use it. This means when installing an operating system I need to create what is known as a bootable USB - Basically the equivalent of inserting your Windows installation DVD when installing Windows. I have done this numerous times in the past and usually it's a straight forward process. Not this time though. For some reason my USB stick had become write protected meaning that I could not write any new files to it. This also meant I couldn't format it either so it was pretty much useless. Great start.
I brought up DISKPART in the hopes that I could just remove the attribute and then try cleaning it. Nothing is straight forward though and this too just spat back an error at me stating that the disk is write protected. "DiskPart has encountered an error: The media is write protected".
So at this point I can't write to it. I can't format it. I can't clean it using DiskPart. I was about to give up and just get another USB but I figured trusty Ubuntu might be able to help. I have an Ubuntu VM that I use as a development environment with Oracle VirtualBox but I don't consider that an ideal solution, hence me looking for a decent hypervisor.. Anyway back on topic! I booted up my Ubuntu VM and for some reason managed to resolve the issue using fdisk! Here's what I did:
The following command will list all detected hard disks:
# fdisk -l | grep '^Disk'
Disk /dev/sda: 251.0 GB, 251000193024 bytes
Disk /dev/sdb: 251.0 GB, 251000193024 bytes
You want to find the appropriate entry for your disk and then run fdisk against that disk
# fdisk /dev/sdb
After successfully completing the required tasks I created a new ext3 filesystem on the USB
# mkfs.ext3 /dev/sdb1
And it worked! The read only attribute was removed but obviously the USB was not visible in Windows due to the unsupported filesystem. So back into DISKPART I went, ensured the attribute had been removed and then ran the clean command. Brought up the Windows DiskManagement GUI and formatted the USB with NTFS. Success!
All that effort just to make the USB work.. What now?
Remember that I haven't even gotten around to getting the ISO onto the USB yet! In my previous post I mentioned that Proxmox could be used as either a type 1 or type 2 hypervisor so I felt that my life might be easier if I installed it as a type 2 on Debian. So I loaded the Debian ISO onto the USB using a piece of software called unetbootin. This is probably the one and only thing that went smoothly throughout this whole process. Rebooted my computer, chose the USB from the boot menu and followed the installation process successfully to my spare SSD. No issues so far and everything appeared to be working properly until I restarted and realised that Windows wasn't appearing in the GRUB boot menu. Everything on the SSD was still accessible and I could mount the drive in Debian no problem. A quick google lead me to believe this was an easy fix:
# os-prober
# update-grub
Alas Windows failed to appear in the menu after these two commands. Some research into this was pointing me towards a BIOS option called 'Secure Boot' which might not be allowing the Windows UEFI to interact with GRUB. So in my attempt to resolve this I set my BIOS to SecureBoot UEFI only and then disabled an option called 'Compatibility Support Module'. I am not a smart man. After saving these settings and restarted the computer I was now facing a black screen. No BIOS splash screen, no GRUB, nothing. I went from a fully functional windows desktop, to a semi-functional debian desktop, right down to an expensive paperweight all in the course of about one hour. Impressive stuff.
My first step was to consult my motherboard documentation in which I learned I have a button on my motherboard that allows me to boot straight into the BIOS which is quite a handy feature to have. Unfortunately this button was no use to me and I still couldn't see anything other than a black screen. Some further digging made me realise at this point my only option was to short the motherboard CMOS in an attempt to reset it. Thankfully this allowed me back into the BIOS and from there I was able to get back into Debian. Phew!
Windows Startup Repair isn't very useful
To rule out any Debian / GRUB involvement in the Windows issue I disconnected the Debian SSD to try and force a Windows boot. "Reboot and Select proper Boot device or Insert Boot Media in Selected Boot device and press a key" appeared on my screen. To cut a long story short it turns out I somehow managed to destroy my Windows Master Boot Record (MBR) while installing Debian. I still have not figured out how and I'm not sure I ever will. So I install gparted on Debian, reformat the USB and install Windows using unetbootin. With this I attempted to complete a startup repair but this just told me the repair failed. I brought up the command prompt and ran the command 'bootrec /fixmbr' against the Windows SSD and rebooted - This time I'm no longer getting the 'Reboot and Select proper Boot device or Insert Boot Media in Selected Boot device and press a key'. Instead I'm getting a blinking cursor so I don't really know if I've made progress or gone backwards..
At this point I'm really thinking anything that can go wrong will go wrong so I'm just waiting for the whole thing to burst into flames. Fixing the MBR was quite a painful process in which I learned if you are ever running startup repair from the windows installation disk, run it 3 times. Don't ask why, just do it. So back into startup repair I went and ran it 3 times despite it telling me it failed each time. Then:
bootrec /fixmbr
bootrec /fixboot
bootrec /scanos
bootrec /redbuildbcd
At this point the rebuildbcd failed to add the windows entry to the MBR. Went back into DISKPART, set the partition as active again then restarted and got a new error about failing to read the boot configuration table. Went through another 3 startup repairs for good measure and volia, Windows booted. Easy as that. Only took about 6 hours of work..
Now to actually try and install Proxmox..