Installing Linux alongside Windows 8 -- have I messed up my partitions?

130

One thing I know is that installing Linux and Windows, whatever the versions, on the same drive is very possible. You shouldn't need to buy a new hard drive at all.

I wouldn't say I -know- but -think- these things:

-Drive partitioning is best done before installing any OS, by planning for the space beforehand. I feel it might cause some or all of your issues. If there was only one partition (besides Recovery) when Windows was installed, maybe it just can't know Linux exists, or something. To be honest, I didn't even know you could actually cut some space from a partition and give it to a new one without wiping everything.

-I don't know what results it gives to install a 32-bit and a 64-bit OS alongside. Sounds risky/buggy. Getting the 64-bit installer might just do magic.

If you don't want to format over again, you can try again with a 64-bit installation of Linux. If you have a restoration point prior to the installation attempt, go back there. If not, just delete whatever there is of Linux that you can find with Windows, and attempt to create a new partition again to install Linux.

If it doesn't work (and sadly I don't feel it will), if I were you, I would save my personal files somewhere (external hard drive for example) in plans of formatting. I really don't think you've corrupted the data that was already there. It should be very salvageable.

Then I'd reinstall Windows 8 on a set partition, creating the Linux partition in the same process. You could do that through the Recovery partition and/or DVD that came with your computer, maybe. Or the "Delete everything and reinstall Windows" option from the PC settings (open the Charms bar, Settings, PC settings (the very bottom thing), General) [approximate names; my computer is in French].

If none of those options allow you to format and manage partitions, then sadly, you'll have to find yourself the OEM install for your version of Windows, so it fits your product key that's probably coded inside your BIOS, from what I understand. This page might help you: http://www.mydigitallife.info/windows-8-official-iso-images-and-product-keys-released-on-msdn-and-technet/

Alternatively, you can always buy Windows 8 over again. An OEM disc for Windows 8 Pro costs about 150 $, and can be bought notably from websites where you buy computer hardware, such as Newegg. But well, might as well try to find the right OEM disc download for your key. It's free and doesn't involve any piracy.

Anyway, once you've managed to install Windows 8 and set your partitions up, install Linux (64 bits!), and just have it format its own partition and install it there. Then everything should work perfect. On top, installing Windows clean over again and redoing your partitions yourself allows you to start fresh and free yourself of any useless software that might have come with the computer.

This link has issues similar to your own: http://hardforum.com/showthread.php?t=1730843

Share:
130
Matt Sieker
Author by

Matt Sieker

Updated on September 18, 2022

Comments

  • Matt Sieker
    Matt Sieker over 1 year

    I'm trying to embed some functionality into a reusable UserControl in my MVVM style app. The MVVM framework is mostly hand rolled at this point, as the WPF app started life being written as basically a WinForms app.

    The UserControl I'm making is just a ComboBox in the UI, with some data loading done by the ViewModel. All ViewModels in the application are loaded by a ViewModel locator, so I don't need to inject ViewModels into ViewModels, this works everywhere else in the application, so I don't think it's an issue here:

    <UserControl DataContext="{Binding Common_PopulationSelector,Source={StaticResource ViewModelLocator}}">
        <ComboBox ItemsSource="{Binding Population}" SelectedItem="{Binding SelectedPopulation}" DisplayMemberPath="PopulationName" IsEditable="False"></ComboBox>
    </UserControl>
    

    The relevent bits of the ViewModel:

    public class PopulationSelectorViewModel : BaseViewModel
    {
        public override async void OnCreate()
        {
            //Called by the ViewModelLocator when this isntance is created
            //Data loading done here, puts a list of Populations into the Populations collection
            //SelectedPopulation gets set to a default value here
        }
    
        public ObservableCollection<Population> Populations { get; }
    
        private Population _selectedPopulation;
        public Population SelectedPopulation
        {
            get => _selectedPopulation;
            set
            {
                OnPropertyChanged(ref _selectedPopulation, value);
                InvokePropertyChanged(nameof(PopulationId));
            }
        }
    
         public int PopulationId
         {
            get => _selectedPopulation?.PopulationID ?? 0;
            set
            {
                SelectedPopulation= Populations.FirstOrDefault(r => r.PopulationID == value) ?? _selectedPopulation;
                InvokePropertyChanged(nameof(PopulationId));
            }
        }
    }
    

    OnPropertyChanged and InvokePropertyChanged work elsewhere in the application, and just handle dealing with the plumbing around INotifyPropertyChanged

    These bits work fine, the data gets loaded, SelectedPopulation changes, along with the PopulationId property.

    Where the issue comes in is exposing PopulationId as a XAML property that consumers of the UserControl can bind to. This control gets consumed like this:

    <views:PopulationSelector PopulationId="{Binding Path=DataContext.PopulationId, RelativeSource={RelativeSource AncestorType={x:Type local:SearchParameters}}, Mode=TwoWay}" />
    

    SearchParameters is the UserControl containing the selector. To expose PopulationId, I have this in the XAML codebehind:

    public partial class PopulationSelector : UserControl
    {
        public PopulationSelector()
        {
            InitializeComponent();
            this.SetBinding(PopulationIdProperty, new Binding("PopulationId") { Mode = BindingMode.TwoWay });
        }
    
        public static readonly DependencyProperty PopulationIdProperty = DependencyProperty.Register(
            "PopulationId", typeof(int), typeof(PopulationSelector), new PropertyMetadata(-1));
    
        public int PopulationId
        {
            get
            {
    
                return (int)GetValue(PopulationIdProperty);
            }
            set
            {
                var oldValue = (int)GetValue(PopulationIdProperty);
                if (oldValue != value) SetValue(PopulationIdProperty, value);
            }
        }
    }
    

    This is apparently where the break occurs. I'm setting the default value of the DependencyProperty here to -1, and that does get changed to 0, so binding from the UserControl consuming this appears to work. But the PopulationId WPF property never appears to update from the ViewModel.

    So, in short (This is so long since I was trying to rubber duck while writing this up): I'm trying to bind to a WPF property on a user control that's bound to the ViewModel for that control. Binding to the user control itself appears to work, binding from the view model to the user control does not. How can I get WPF to do what I want?

    Edit:

    I've made a few changes to my code snippets that bring it up to date with my recent attempts at making this work

    • Updated setter in codebehind for the usercontrol, to match the reference I was using, which is this: Twoway-bind view's DependencyProperty to viewmodel's property?
    • Updated the binding between XAML property and ViewModel. When posting this, I simplified the code a bit (before I was binding to a property off SelectedPopulation), and the posted code wouldn't work. I've added a setter to PopulationId on the view model so two way binding will properly work

    Playing with breakpoints a little this morning, here's what I've established:

    • The setter for SelectedPopulation in the ViewModel is being called, so binding between the ComboBox and ViewModel is fine.
    • The getter for PopulationId in the ViewModel is never called
    • The getter or setter for PopulationId in the UserControl codebehind is never getting called
    • The setter for PopulationId in the view consuming this user control is never being called

    I also just tried this answer: https://stackoverflow.com/a/21851139/117651 where the binding between the ViewModel and XAML property is done in XAML. The getter in the ViewModel is called, and the PopulationId XAML property shows the expected value in the property explorer while running in the debugger. However, the binding between the consumer and the XAML property doesn't work, and the value in the ViewModel remains 0.

    I also have PresentationTraceSources hooked up to nlog, and there's no complaints in the logs with regards to binding expressions.

  • Keith Thompson
    Keith Thompson over 11 years
    Thanks! Formatting without installing an OS wasn't an option; it had Windows 8 installed out of the box. I have no significant data on the system that I don't mind losing. The 32-bit installation was just a mistake on my part; I've already downloaded the 64-bit LM installer. I think I'll probably try the "Delete everything and reinstall Windows" thing (I hadn't yet figured out how to get to it). Can I assume that will fix up any partition problems?
  • Keith Thompson
    Keith Thompson over 11 years
    Ok, I'm reinstalling Windows now. When that's done, I'll try booting from the live CD^H^H USB thumb drive; if the Linux partition no longer shows up, I should be in good shape.
  • Ariane
    Ariane over 11 years
    Well, I've never tried that option from disc/basic options, but it should fix it. Just make sure you make your Linux partition during the installation of Windows. Don't wait until Windows is installed to create it.
  • Keith Thompson
    Keith Thompson over 11 years
    Unless I missed something (which is quite possible), the Windows reinstallation didn't give me an opportunity to create partitions. BTW, the reinstallation didn't revert the partitions; now Windows sees my C: drive as less than 200 GB.
  • Ariane
    Ariane over 11 years
    Okay, then... The sad scenario has occurred. It means you're going to need to download and burn the OEM disc of Windows that's appropriate for your installation. 'Tis the sadness of them not giving proper installation media with computers. :/
  • Keith Thompson
    Keith Thompson over 11 years
    This suggests I may be able to expand the NTFS partition. I'll have to do some more research.
  • Ariane
    Ariane over 11 years
    To be honest, I fear this would still cause issues. You can always try, though. But personally, when something is messed up, I prefer to start over instead of fiddling around to fix it.
  • Keith Thompson
    Keith Thompson over 11 years
    See the update to my question. I'm not sure I should accept your answer, since it wasn't actually the solution I used. I'd give you a second upvote instead if I could. 8-)}
  • Ariane
    Ariane over 11 years
    Glad you were able to dix it, though a bit sad you had to use another drive for it. :/
  • Keith Thompson
    Keith Thompson over 11 years
    @Ariane: I probably didn't have to, but I feel better having the two OSs on separate drives anyway.
  • OCDtech
    OCDtech over 11 years
    You can also install Mint like a regular Windows compatible application using Mint4Win. Mint4Win is included in the Mint LiveCD. The OP didn't state why he wanted both OSs, but the performance hit is nominal and it makes it easy to try out Mint for awhile.
  • Keith Thompson
    Keith Thompson over 11 years
    @OCDtech: The machine is primarily a Linux box; I'm only keeping Windows because I might occasionally use it. (If I had a Windows installation disk, I'd consider wiping out Windows and then installing it in a VM under Linux.)