Dual boot Dell XPS 9500 Windows and Linux (Pop!_OS)

Subscribe to my newsletter and never miss my upcoming articles

Prologue - The hardware

Got a new laptop. Switched back to Windows/Linux from being a macOS fanboy after five years.

Here is the story.

I had gotten my daily driver back in 2016, a MacBook Pro (Retina, 13-inch, Early 2015). It's my primary computer. Have never turned it off except when not on a flight. It's a well-engineered faithful device. It has been my muse, and I use it for everything.

Five years later, the MacBook Pro is outdated with the changing times. The Chrome tab gods hog the paltry 8GB memory and render all other applications useless. The dual-core Intel Core i5 hits ~85-90% usage, and the CPUs run at a zillion degrees on Google Meet calls.

Mind, the device is still good for light browsing, office work, and entertainment. It simply doesn't cut my developer needs any more.

It has aged but served me good.

Enter the new 2020 edition Dell XPS 9500 - 15-inch.

Here is the XPS 15-inch alongside my MacBook Pro 13-inch.

4.jpeg

Boy, this is a gorgeous machine.

I got it configured with 32GB of memory. The 10th Gen 6 Core Intel i7 turbos up to 5.0Ghz. I do not game much on PC, but the 4GB NVIDIA GeForce GTX 1650Ti for graphics is a nice to have for those steam games.

The screen is five hundred nits (its bright, very bright), 4K and ten-point multitouch. The trackpad is exceptionally smooth, and the keyboard is a godsent to the weary fingers.

The Apple MacBook Pro (16-inch, 2019) vs Dell XPS 9500 (15-inch, 2020) debate. Why one over the other?

I had a few compelling reasons:

  • The screen, a huge trackpad, and the buttery smooth keyboard on the XPS 15-inch beats the MacBook Pro 16-inch.

  • At ₹2,25,000 (~US$ 3000) the XPS 15-inch is a steal compared to the MacBook Pro 16-inch, which costs a whopping ₹3,15,000 (~US$ 4300) for a similar if not identical config as the XPS 15-inch.

  • Finally, I can upgrade the memory and the disk, add one more M.2 disk at will. Everyone knows how painful and expensive upgrades are on any Apple device.

At the time of this post, the stores here in India only have a 16GB memory variant of the MacBook Pro 16-inch. While you can get it configured to a higher tier, you must wait for 6-8 weeks. Not worth the hype.

Here are some links (affiliate): XPS 15-inch: amzn.to/2FatDNk, MacBook Pro 16-inch: amzn.to/3bzf1mT, of you are looking to buy one of these.

Why dual boot with Linux?

For all its physical beauty, the XPS 15-inch ships with Windows 10.

I have been a macOS fanboy for 5 years now. I have used it daily and built up muscle memory. Breaking up and moving to Windows is going to take some getting used to.

A Unix-like environment is quite essential for my developer needs.

Sure, I can use WSL to run Ubuntu on Windows, but my distro of choice, Pop!_OS 20.04 is not available with native support for WSL. It's just too much work to setup with WSL.

Dual boot is easier and makes sense for me.

Pop!_OS is just blatantly awesome. It's based on the Ubuntu goodness with red, white, and blue sprinkles.

I prefer the Debian/Ubuntu ecosystem and we use Ubuntu as the host OS on our servers at work. Pop!_OS comes as a natural choice for me.

Preparing for the Installation.

Depending on what you want to do with your setup, your steps will be a tad different from mine. In general, you will need the ISO and a removable drive for the installation media. A pair for each OS you want, in the multi-boot setup. For installing everything from scratch, here are the broad steps:

  1. Update BIOS settings as applicable.
  2. Format and partition the disks while installing Windows / Linux.
  3. Install Windows.
  4. Install a Linux distro.

Preparing the installation media.

I used Balena Etcher to create my installation media. It's quite neat, you just select the pre-downloaded ISO, and the removable drive, and you are done.

Another popular option (Windows only) is Rufus.

Preparing Boot Disk.

  1. Go to Windows Explorer --> Right Click on C: (OS Drive) --> Select Manage BitLocker --> Turn Off BitLocker.

    This is *required* because, later we would need to turn off secure boot for Pop!_OS, and entering a 48-digit key every time you want to boot into Windows is not ideal for me.

I preferred keeping my stock Windows 10 as is. So, all I needed was to get some space freed up for the Pop!_OS installation. You can skip this if you intend to do a clean installation.

  1. Open Windows Search (Win ⊞ + S) and enter "Create and Format Hard Disk Partitions", to open Disk Management.

  2. Select a drive, right Click --> Shrink Volume...

    I chose to shrink the only drive I had in my case, the 1TB OS disk, by 200 GB. The interface is in MB, so I typed 204800 and I was good to go.

    1.png

  3. Restart/Shutdown.

BIOS Settings for Storage Controller and Boot Options.

The XPS line up comes with RAID drivers installed for the SATA Controller, which is recommended by Intel. We need to switch to AHCI drivers for our dual boot setup.

Additionally, Pop!_OS does not have support for secure boot and needs it to be disabled in the BIOS.

As a result these BIOS settings must be changed for the installation:

  • Storage controller should be in AHCI mode.
  • Secure boot must be disabled.

To address pitfalls, I came across this superuser answer which seemed to have worked for others.

  1. Open Windows Search (Win ⊞ + S) and enter "Command Prompt". Select Run as administrator in the results.

  2. Add an entry to start Windows in Safe Mode (on next boot).

     bcdedit /set {current} safeboot minimal
    
  3. Tap the F2 button a few times when the device is booting. The system would enter the BIOS.

  4. Go to Storage --> SATA Operation and select AHCI.

    2.jpeg

    If you get a warning proceed by selecting Yes.

  5. Go to Boot Options --> Secure Boot --> Enable Secure Boot and select OFF.

    3.jpeg

    If you get a warning proceed by selecting Yes.

  6. Click Apply Changes at the bottom of the screen --> Click OK. You can then click Exit.

  7. The system will boot into safe mode (because of Step 2). The drivers for AHCI mode will be automatically setup and we can proceed to reset Windows to start normally next time.

     bcdedit /deletevalue {current} safeboot
    
  8. Once the system boots normally and proceed to installing Pop!_OS.

Installation

Insert the installation media and restart the system.

Tap on the F12 key a few times to enter one-time boot options and select the removable drive on the list.

Now that we are in the wizard, it's straight from here but we may want to watch for the partition setup:

  1. Follow the wizard, to select language, region, and keyboard layout, etc.

  2. On the "Install" screen, select the Custom (Advanced)option, because we want to dual boot.

  3. Click the Modify Partitions button on the bottom left. This will open the GParted (Partition tool) window.

    You should see the "unallocated" volume we freed up earlier.

  4. Create the partitions for boot, root, and swap space (optional).

    a. Right click on the "unallocated" partition in the list --> Click New. Enter 512 (in MB). We will use this for the boot partition.

    b. Click the Resize button.

    c. Next, on the menu bar, click the green check button (✔️) to apply these changes.

    Repeat the above three steps changing the values for the partition size for the root and the swap space (if you want one) as needed.

  5. Close the GParted window.

  6. Configure the Boot partition:

    Select the smaller ~512 MB partition we created and toggle the Use partition button to ON.

    Toggle the Format option to ON and in the Use as option, select Boot.

    Leave everything else to default.

  7. Configure the Root partition:

    Select the largest of the partition we created and toggle the Use partition button to ON.

    Toggle the Format option to ON and in the Use as option, select Root.

    Leave everything else to default.

  8. Click the red Erase and Install. It should take a few minutes to install the OS.

  9. Once the installation is done, you will be prompted to restart and setup the user account.

Next Steps

Update the OS and packages.

You can either use the GUI for updates (watch for the notifications) or use the commands like so:

  1. Open a Terminal window.

  2. Update and upgrade packages.

     sudo apt update
     sudo apt upgrade
    
  3. Cleanup packages.

     sudo apt autoclean 
     sudo apt autoremove
    

Drivers and UI extensions.

Most drivers work out of the box, including the NVIDIA Graphics which are bundled with Pop!_OS. Other than changing the display resolution and the trackpad direction to natural to my personal liking the system was good to go.

With Pop!_OS (and Ubuntu) you get the widely used GNOME desktop environment. There are several choices for extensions that you can add to your liking.

For instance, the Dash to dock extension brings the familiar feel of macOS dock with cool customizations.

Configuring the boot order.

The boot config in BIOS (F2 --> Boot Configuration --> Boot Sequence) determines the disk that is treated as boot device on system startup. This how the system knows where to find your OS.

Because I am going to be using Pop!_OS more than Windows, it made sense for me to keep the Pop!_OS entry as the option on the top.

However, at the minute getting into Windows requires to get the one-time boot options (press F12 as startup) and select the correct drive.

We can make this nicer by configuring the boot manager. A boot manager gives you an OS selection screen on system startup.

Both the Windows and the Pop!_OS have default boot mangers that ship with them. You can add an entry to the "Windows Boot Manager" or "GRUB" boot manager on Pop!_OS depending on which ever disk you prioritize in the Boot Sequence.

I prefer to have a third-party boot manager called rEFInd.

It is a graphical boot manager for EFI and UEFI systems. rEFInd, is quite popular for multi-boot configurations. It has nifty features like pretty themes for the splash screens, automatic timed boot selection, etc.

Install rEFInd using its official package archive:

sudo apt-add-repository ppa:rodsmith/refind
sudo apt  update
sudo apt  install refind

The default options presented during the installation work the best.

Themes, fonts and hiding entries:

The default theme for rEFInd is not quite pretty. But, it supports a wide selection of themes made by the community.

I am using the rEFInd theme Regular which is simple, has a dark mode and best of all, has a neat install script.

Because, I have a 4K display I selected the largest sizes (512px-192px) for the icons. After executing the script, I also updated the font size to the large 46px like so:

  1. Open a Terminal window.

  2. Switch to root/superuser account.

    sudo su
    
  3. Update the font size and family, I am using the nimbus-mono-46.png

     nano /boot/efi/EFI/refind/refind-theme-regular/theme.conf
    

    Go to the bottom and edit the line for the font.

  4. The timeout for automatic boot of the default OS is 20 seconds. A tad long for me, I set it to 5 seconds instead.

    The timeout can be changed in the rEFInd config:

     nano /boot/efi/EFI/refind/refind.conf
    

    It should be there a few lines from the top of the file.

Finally, I needed to hide all the extraneous entries on boot. This is straight and an awesome feature of rEFInd.

  1. Reboot to the rEFInd splash screen on startup.

  2. Navigate using the arrow keys and highlight any entry that needs to be hidden.

  3. Hit Delete. Select Yes on the next screen. Done.

The hidden entries can be brought back using the Manage Hidden Tags Menu on the splash screen. I deleted a few entries like the 512 MB boot entry, and some others. With that I was done with the installation.

Epilogue.

Having setup my machine and writing this post while I was at it was a well spent lazy Sunday afternoon.

I went on to setting up my developer environment from my dotfiles. I did not realize how well Homebrew on Linux (formerly Linuxbrew) has matured. I am still working on a few tweaks for the Linux setup, for instance exploring cool GNOME extensions.

The hardest part in the last few hours is ditching the applications that I have become used on macOS.

Hope you liked this long dev-log and if you did or have any feedback give me a shoutout on twitter. While you are there give me a follow.

Stay safe and stay home. We got this.

No Comments Yet