Dualbooting: Difference between revisions

From Alpine Linux
mNo edit summary
(simplified the steps to align with setup-disk based Installation)
 
(32 intermediate revisions by 9 users not shown)
Line 1: Line 1:
It's assumed you have a box where you already run another operating system, and would like to be able to dual boot either the installed system or Alpine Linux.
{{Warning|This Dualboot manual is intended for experienced users. You will have to manually edit partitions on your harddisk. Take adequate backup of important data before proceeding further.
If you want to avoid partitioing your existing hard disk, it may be better for you to buy an additional disk and use [[Installation#setup-alpine_based_System_Disk_Install|setup-alpine based Install]], or use [[Tutorials_and_Howtos#Virtualization|virtualization]]}}
== Install Alpine Linux ==


It's assumed you have a box where you already run another distro, and would like to be able to boot either the already installed system or Alpine.
To Dual boot Alpine Linux, you must follow the [[Setting_up_disks_manually#setup-disk based Installation|setup-disk based Installation]].
# Follow the [[Installation#General_course_of_action|Installation guide]] to complete the [[#Base_configuration|base configuration]], if not already done.
# To Dualboot, Alpine Linux needs a separate partition. If you don't have a partition refer [[Setting_up_disks_manually#Manual partitioning|Manual partitioning]] to create and format it. If you are using [[btrfs]] filesystem, there is no need to create a partition. Refer [[Install_Alpine_on_a_btrfs_filesystem_with_refind_as_boot_manager|btrfs tutorial]]
# Mount the partition, where you'd like to install Alpine Linux. {{Cmd|# mount /dev/sdXY /mnt}}
# If you're using EFI, pay special attention to ESP partition. ESP partition is also used by other operating systems. Make sure you create a mount point <code>/mnt/boot/efi</code>. {{Cmd|# mkdir -p /mnt/boot/efi}}
# Find the correct partition name for ESP partition and mount it on the above mount point: {{Cmd|# mount /dev/sdXY /mnt/boot/efi}}
# Install Alpine Linux on the chosen partition. {{Cmd|# setup-disk -m sys /mnt}}
# Your dual boot installation can be considered complete. You be should be able to dual boot once you  [[Installation#Reboot|reboot]]. Refer [[#Configure_bootloader|configure bootloader]] section, if you would like to make additional changes.  


= Prepare your hardware =
== Configure bootloader ==
Alpine needs a separate partition where it can be installed to. If you don't already have one free, you need to create a primary partition with enough space for your Alpine installation.


For this, see: [[Setting_up_disks_manually#Manual_partitioning | Manual_partitioning]]
There are different [[Bootloaders|bootloaders]] to get a boot menu that allows selecting the operating system to boot. It is easiest to simply install and use [[Bootloaders#rEFInd|rEFInd]] boot manager for dual boot between Alpine Linux and Windows.


Make notes of what partition you will use for your Alpine installation. In this example we are going to install Alpine on '''/dev/sdXY'''.
Otherwise, one may adjust the bootloader that has already been installed by the other operating system.


= Installing Alpine on HDD =
=== Dual/Multiboot with Linux ===
 
The following example is given to give you some ideas for adjusting [[Bootloaders#GRUB|grub]] to boot Alpine.
Now it's time to install Alpine. Boot your system with a CD containing the latest Alpine Standard from [http://alpinelinux.org/downloads Downloads].
 
== Format and mount HDD partition ==
 
First format your partition. We will need some tools for doing the formatting. After you are done those tools can be removed.
 
{{Cmd|apk add e2fsprogs
mkfs.ext4 /dev/sdXY
apk del e2fsprogs}}
 
{{Warning|Make sure you format the right partition! The {{Path|/dev/sdXY}} is only a example. If you choose the wrong partition your data will be gone. Make a backup first when you are unsure.}}
 
Mount the newly formatted partition. After the mounting the partition will be available at {{Path|/mnt}}.
{{Cmd|mount -t ext4 /dev/sdXY /mnt}}
 
== Basic setup ==
 
This sets up alpine without installing to any disk, yet.
 
To do this, either run {{Cmd|setup-alpine}}, and when to prompted "Which disks do you like to use?" make sure to answer "none", and also answer "none" to the remaining prompts, about storing configs and the apk cache directory.
 
Alternatively, run this command selection:
{{Cmd|setup-timezone
setup-alpine -q
setup-sshd
setup-ntp}}
 
See [[setup-alpine]] for more details.
 
 
<!-- If the "answerfile" functionality of setup-alpine is changed to permit specifying "-m none" for setup-disk, this sequence could be expressed more concisely.-->
 
 
== Install Alpine ==
 
Now it's time to copy the prepared system to the prepared partition(s) that where mounted below /mnt.
 
 
=== In Alpine 2.2.3 or newer ===
 
{{Cmd|setup-disk -m sys /mnt}}
 
{{Tip|If you use extlinux (default) and didn't create a separate boot partition, i.e. ({{Path|/boot}} resides on the root partition {{Path|/}}), you might need to adjust the paths to the boot files in {{Path|/boot/extlinux.conf}}, eg.:
<pre>[...]
LABEL hardened
  MENU DEFAULT
  MENU LABEL Linux hardened
  LINUX /boot/vmlinuz-lts
  INITRD /boot/initramfs-lts
[...]</pre>
 
Check that the <code>LINUX</code> and <code>INITRD</code> paths actually point to the files shipped in your Alpine Linux release.
}}
 
=== With older Alpine versions up to 2.2.3 ===
 
If using an earlier version of Alpine Linux, you'll need to install the files and [[Bootloaders|bootloader]] manually.
 
{{Tip|If using a version of Alpine Linux older than 2.2.0, replace {{Path|/etc/apk/world}} in the last line with {{Path|/var/lib/apk/world}}}}
 
{{Cmd|lbu package - {{!}} tar -C /mnt -xzf -
apk add --root /mnt --initdb --repositories-file /etc/apk/repositories --keys-dir \
  /etc/apk/keys $(cat /etc/apk/world) acct linux-hardened alpine-base}}
 
Your system is now on {{Path|/dev/sdXY}}.
 
== Configuring the bootloader ==
 
 
There are different ways to get a boot menu that allows selecting the operating system to boot.
 
It is easiest probably on (U)EFI based hardware platforms, where one may simply install the <code>rEFInd</code> boot menu, as explained in [[Bootloaders]].
 
 
 
Otherwise, one may adjust the bootloader that has already been installed (by the other operating system).
 
 
 
Because the different bootloaders vary, you need to figure out how to make yours boot your Alpine instsall.
 
Hopefully you can get some ideas from the following example, adjusting Grub2 to boot Alpine:


Reboot your system ''(start Ubuntu)''.
Reboot your system ''(start Ubuntu)''.
Line 99: Line 27:


Take notes of the UUID of the partition you are planning to use:
Take notes of the UUID of the partition you are planning to use:
{{Cmd|sudo blkid /dev/sdXY}}
{{Cmd|# blkid /dev/sdXY}}


Start editing grub2 configuration  
Start editing the grub2 configuration  
{{Cmd|gksudo gedit /etc/grub.d/40_custom}}
{{Cmd|# gedit /etc/grub.d/40_custom}}


I edited the file so it looks something like this:
I edited the file to look something like this:
<pre>#!/bin/sh
{{Cat|/etc/grub.d/40_custom|<nowiki>#!/bin/sh
echo "Adding Alpine" >&2
echo "Adding Alpine" >&2
cat << EOF
cat << EOF
menuentry "Alpine Linux" {
menuentry "Alpine Linux" {
  set root=(hd0,3)
  set root=(hd0,3)
  linux /boot/vmlinuz-hardened root=UUID=8de6973a-4a8c-40ed-b710-c4e2b42d6b7a modules=sd-mod,usb-storage,ext4 quiet
  linux /boot/vmlinuz-lts root=UUID=8de6973a-4a8c-40ed-b710-c4e2b42d6b7a modules=sd-mod,usb-storage,ext4 quiet
  initrd /boot/initramfs-hardened
  initrd /boot/initramfs-lts
}
}
EOF</pre>
EOF</nowiki>}}
{{Note|The UUID-value mentioned above '8de6973a-4a8c-40ed-b710-c4e2b42d6b7a' should be replaced with the UUID you got when running your 'blkid' command.}}
{{Note|The root, linux, initrd, and UUID values mentioned above should be replaced with those of your system, e.g. the UUID you got when running the 'blkid' command.}}
We need to tell grub2 that the config has changed
Finally the configuration changes need to be applied to the grub2 bootloader:
{{Cmd|update-grub2}}
{{Cmd|update-grub}}


Now it's time to test. Reboot your box.
Now it's time to test. Reboot your box.
{{Note|You might need to press SHIFT when booting up your box in order to see the grub-menu.}}
{{Note|You might need to press SHIFT when booting your box in order to see the grub-menu.}}
 
=== Dualboot with Windows ===
For Windows partitions to be detected with grub, you need `os-prober` and `grub-mount` installed at the time grub-mkconfig runs.
 
{{Note| The following needs to be tested}}
To upgrade the grub installation, the efi directory must be mounted in /boot/efi/. 
To know in which partition the efi is, we must examine the partition table, so if your main disk is /dev/sda then.
 
{{Cmd|# fdisk -l /dev/sda}}
<pre>
Device            Start        End  Sectors  Size Type
/dev/sda1          2048    309247    307200  150M EFI System
</pre>
{{Cmd|# mkdir /boot/efi}}
{{Cmd|# mount /dev/sda1 /boot/efi/}}
{{Cmd|# apk add efibootmgr}} (If your system supports UEFI. Most PC's from 2010, support UEFI)
Install grub
<pre>
# grub-install –root-directory=/mnt
</pre>
After grub re-installation, unmount efi partition:
{{Cmd|# umount /boot/efi/}}
 
== References ==
* [https://brittanymitchell.co/index.php/2024/03/06/dual-boot-windows-11-and-alpine-linux-part-2/ Dual Boot Windows 11 and Alpine Linux]
* [https://unix.stackexchange.com/questions/405472/cannot-find-efi-directory-issue-with-grub-install/679800#679800 Mount EFI]
* [[Install_Alpine_on_a_btrfs_filesystem_with_refind_as_boot_manager|Dual boot on a btrfs filesystem]]


[[Category:Installation]]
[[Category:Installation]]

Latest revision as of 11:24, 5 November 2024

It's assumed you have a box where you already run another operating system, and would like to be able to dual boot either the installed system or Alpine Linux.

Warning: This Dualboot manual is intended for experienced users. You will have to manually edit partitions on your harddisk. Take adequate backup of important data before proceeding further. If you want to avoid partitioing your existing hard disk, it may be better for you to buy an additional disk and use setup-alpine based Install, or use virtualization


Install Alpine Linux

To Dual boot Alpine Linux, you must follow the setup-disk based Installation.

  1. Follow the Installation guide to complete the base configuration, if not already done.
  2. To Dualboot, Alpine Linux needs a separate partition. If you don't have a partition refer Manual partitioning to create and format it. If you are using btrfs filesystem, there is no need to create a partition. Refer btrfs tutorial
  3. Mount the partition, where you'd like to install Alpine Linux.

    # mount /dev/sdXY /mnt

  4. If you're using EFI, pay special attention to ESP partition. ESP partition is also used by other operating systems. Make sure you create a mount point /mnt/boot/efi.

    # mkdir -p /mnt/boot/efi

  5. Find the correct partition name for ESP partition and mount it on the above mount point:

    # mount /dev/sdXY /mnt/boot/efi

  6. Install Alpine Linux on the chosen partition.

    # setup-disk -m sys /mnt

  7. Your dual boot installation can be considered complete. You be should be able to dual boot once you reboot. Refer configure bootloader section, if you would like to make additional changes.

Configure bootloader

There are different bootloaders to get a boot menu that allows selecting the operating system to boot. It is easiest to simply install and use rEFInd boot manager for dual boot between Alpine Linux and Windows.

Otherwise, one may adjust the bootloader that has already been installed by the other operating system.

Dual/Multiboot with Linux

The following example is given to give you some ideas for adjusting grub to boot Alpine.

Reboot your system (start Ubuntu).

Start a 'terminal' (ALT-F2 + "terminal" + [Run])

Take notes of the UUID of the partition you are planning to use:

# blkid /dev/sdXY

Start editing the grub2 configuration

# gedit /etc/grub.d/40_custom

I edited the file to look something like this:

Contents of /etc/grub.d/40_custom

#!/bin/sh echo "Adding Alpine" >&2 cat << EOF menuentry "Alpine Linux" { set root=(hd0,3) linux /boot/vmlinuz-lts root=UUID=8de6973a-4a8c-40ed-b710-c4e2b42d6b7a modules=sd-mod,usb-storage,ext4 quiet initrd /boot/initramfs-lts } EOF
Note: The root, linux, initrd, and UUID values mentioned above should be replaced with those of your system, e.g. the UUID you got when running the 'blkid' command.

Finally the configuration changes need to be applied to the grub2 bootloader:

update-grub

Now it's time to test. Reboot your box.

Note: You might need to press SHIFT when booting your box in order to see the grub-menu.

Dualboot with Windows

For Windows partitions to be detected with grub, you need `os-prober` and `grub-mount` installed at the time grub-mkconfig runs.

Note: The following needs to be tested

To upgrade the grub installation, the efi directory must be mounted in /boot/efi/. To know in which partition the efi is, we must examine the partition table, so if your main disk is /dev/sda then.

# fdisk -l /dev/sda

Device             Start        End   Sectors   Size Type
/dev/sda1           2048     309247    307200   150M EFI System

# mkdir /boot/efi

# mount /dev/sda1 /boot/efi/

# apk add efibootmgr

(If your system supports UEFI. Most PC's from 2010, support UEFI)

Install grub

# grub-install –root-directory=/mnt

After grub re-installation, unmount efi partition:

# umount /boot/efi/

References