Dualbooting: Difference between revisions

From Alpine Linux
(Category:Installation)
(removed more repetitive content)
 
(60 intermediate revisions by 18 users not shown)
Line 1: Line 1:
= General =
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 in [[System Disk Mode]].


Assume you have a box where you run Ubuntu ''(or your favourite distro)''.<BR>
{{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]].
Now you would like to be able to boot either Ubuntu or Alpine.


= Prepare your hardware =
== Install Alpine Linux ==
You will need a partition for your Alpine installation.<BR>
If you don't already have one free, you need to create a primary partition with enough space for your Alpine installation.<BR>
''(The tools you use for managing your partitions might differ, so you need to figure out your self how to use them)''


Make notes of what partition you will use for your Alpine installation.<BR>
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, refer [[Install_Alpine_on_a_btrfs_filesystem_with_refind_as_boot_manager|btrfs tutorial]] for more information.
''('''Note:''' In this example we are going to install Alpine on '''/dev/sda3''')''


= Installing Alpine on HDD =
# Mount the '''/ (root)''' partition i.e partition(here sdXY), where you'd like to install Alpine Linux on a mount point i.e say /mnt. {{Cmd|# mount /dev/sdXY /mnt}}
#:{{Note|To allow multiple linux installations to co-exist, it is better to keep the /boot folder (where kernel files reside) inside the '''"/" root ''' partition. Following the below instructions will result in: {{cat|/etc/fstab|<nowiki>...
UUID=ABCD-1234 /boot/efi vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=utf8,shortname=mixed,errors=remount-ro 0 2
...</nowiki>}}}}
# If you're using EFI, pay special attention to ESP partition as it might be used by other operating system(s) too. Create a mount point <code>/mnt/boot/efi</code> for the same. {{Cmd|# mkdir -p /mnt/boot/efi}}
# Identify the correct partition name for ESP partition and mount it on the mount point created in the previous step. {{Cmd|# mount /dev/sdXY /mnt/boot/efi}}


Now the fun begins... it's time to install Alpine.<BR>
Follow the remaining steps given in [[System Disk Mode#setup-disk based Installation|setup-disk based Installation]] page to complete the Installation. Refer [[#Configure_bootloader|configure bootloader]] section, if you would like to change your default bootloader(Optional).
Boot on CD using latest Alpine Standard iso from [http://alpinelinux.org/downloads Downloads].


== Format and mount HDD partition ==
== Configure bootloader ==


First we want to format your partition. We will need some tools for doing the formatting ''(we remove them when formatting is done)''.
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.  
{{Cmd|apk add e2fsprogs
mkfs.ext3 /dev/sda3
apk del e2fsprogs}}
{{Warning|Make sure you format the right partition! The {{Path|/dev/sda3}} is only a example.}}


Mount the newly formatted partition:
Otherwise, one may adjust the bootloader that has already been installed by the other operating system. 
{{Cmd|mount -t ext3 /dev/sda3 /mnt}}


== Basic setup ==
=== Dual or Multiboot with Linux ===


Next, do some basic setup for your Alpine system.
The following example is given to give you some ideas for adjusting [[Bootloaders#GRUB|grub]] to boot Alpine.


In Alpine 2.2.3 or newer, type:
Reboot your system ''(start Ubuntu)''.
{{Cmd|setup-timezone
setup-alpine -q
setup-sshd
setup-ntp}}


See [[setup-alpine]] for more details.
Start a 'terminal' ''(ALT-F2 + "terminal" + [Run])''


<!-- If the "answerfile" functionality of setup-alpine is changed to permit specifying "-m none" for setup-disk, this sequence could be expressed more concisely.-->
Take notes of the UUID of the partition you are planning to use:
{{Cmd|# blkid /dev/sdXY}}


In Alpine 2.2.2 or earlier, just type:
Start editing the grub2 configuration file {{Path|/etc/grub.d/40_custom}} using your favourite editor to make the the file to look something like this:
{{Cmd|setup-alpine}}
{{Cat|/etc/grub.d/40_custom|<nowiki>#!/bin/sh
 
echo "Adding Alpine" >&2
== Install Alpine ==
cat << EOF
 
menuentry "Alpine Linux" {
Now it's time to put our files on the partition.
set root=(hd0,3)
 
linux /boot/vmlinuz-lts root=UUID=8de6973a-4a8c-40ed-b710-c4e2b42d6b7a modules=sd-mod,usb-storage,ext4 quiet
If using Alpine Linux 2.2.3 or higher, just type:
initrd /boot/initramfs-lts
{{Cmd|setup-disk -m sys /mnt}}
}
 
EOF</nowiki>}}
See [[setup-disk]] for more details.
{{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:
If using an earlier version of Alpine Linux, you'll need to install the files and bootloader manually, as described below.
{{Cmd|# update-grub}}
 
=== Installing files 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 /tmp/tmp.apkovl.tar.gz
cd /mnt
tar -xzf /tmp/tmp.apkovl.tar.gz
apk add --root /mnt --initdb --repositories-file /etc/apk/repositores --keys-dir \
  /etc/apk/keys $(cat /etc/apk/world) acct linux-grsec alpine-base}}


Your system is now on {{Path|/dev/sda3}}. Next thing is to be able to boot on it.
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.}}


=== Installing bootloader manually ===
=== Dualboot with Windows ===


On your system you already have a bootloader of some kind.<BR />
For Windows partitions to be detected with grub, you need `os-prober` and `grub-mount` installed at the time grub-mkconfig runs.
The bootloaders vary, so you need to figure out how to make it boot your Alpine distro.<BR />
Hopefully you get some ideas by looking at the following example below.


In my case I have Grub2 so I will describe what I did to boot Alpine.
{{Todo| The following needs to be tested}}


Reboot your system ''(start Ubuntu)''.
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.


Start a 'terminal' ''(ALT-F2 + "terminal" + [Run])''
{{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/}}


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


Start editing grub2 configuration
Check [[System Disk Mode#Troubleshooting|Troubleshooting]] page, if you encounter errors like [[System Disk Mode#Mounting_on_/dev/sdXY_sysroot_failed|Mounting on /dev/sdXY sysroot failed]].  
{{Cmd|gksudo gedit /etc/grub.d/40_custom}}


I edited the file so it looks something like this:
== References ==
<PRE>#!/bin/sh
exec tail -n +3 $0
echo "Adding Alpine" >&2
cat << EOF
menuentry "Alpine Linux" {
set root=(hd0,3)
linux /boot/vmlinuz-grsec root=UUID=8de6973a-4a8c-40ed-b710-c4e2b42d6b7a modules=sd-mod,usb-storage,ext3 quiet
initrd /boot/initramfs-grsec
}
EOF</PRE>
''('''Note:''' The UUID-value mentioned above '8de6973a-4a8c-40ed-b710-c4e2b42d6b7a' should be replaced with the UUID you got when running your 'blkid' command.)
We need to tell grub2 that the config has changed
{{Cmd|update-grub2}}


Now it's time to test.<BR>
* [https://brittanymitchell.co/index.php/2024/03/06/dual-boot-windows-11-and-alpine-linux-part-2/ Dual Boot Windows 11 and Alpine Linux]
Reboot your box.<BR>
* [https://unix.stackexchange.com/questions/405472/cannot-find-efi-directory-issue-with-grub-install/679800#679800 Mount EFI]
''('''Note:''' You might need to press SHIFT when booting up your box in order to see the grub-menu.)''
* [[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 05:12, 28 November 2025

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 in System Disk Mode.

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 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, refer btrfs tutorial for more information.

  1. Mount the / (root) partition i.e partition(here sdXY), where you'd like to install Alpine Linux on a mount point i.e say /mnt.

    # mount /dev/sdXY /mnt

    Note: To allow multiple linux installations to co-exist, it is better to keep the /boot folder (where kernel files reside) inside the "/" root partition. Following the below instructions will result in:

    Contents of /etc/fstab

    ... UUID=ABCD-1234 /boot/efi vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=utf8,shortname=mixed,errors=remount-ro 0 2 ...
  2. If you're using EFI, pay special attention to ESP partition as it might be used by other operating system(s) too. Create a mount point /mnt/boot/efi for the same.

    # mkdir -p /mnt/boot/efi

  3. Identify the correct partition name for ESP partition and mount it on the mount point created in the previous step.

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

Follow the remaining steps given in setup-disk based Installation page to complete the Installation. Refer configure bootloader section, if you would like to change your default bootloader(Optional).

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 or 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 file /etc/grub.d/40_custom using your favourite editor to make the 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.

Todo: 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/

Troubleshooting

Check Troubleshooting page, if you encounter errors like Mounting on /dev/sdXY sysroot failed.

References