From 2a8e47b04695958db57d45885a6aa17b167e7935 Mon Sep 17 00:00:00 2001 From: Gabriel Fair <2096785+gabefair@users.noreply.github.com> Date: Fri, 15 Aug 2025 08:44:49 -0400 Subject: [PATCH 01/15] Update rosetta.md These instructions on their own are not clear enough to help someone who isn't an expert with LInux. To provide a seamless adoption of linux by hobbyist or newbies some examples are provided and some more detail is given. --- advanced/rosetta.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/advanced/rosetta.md b/advanced/rosetta.md index 35dcbee..fe94dd9 100644 --- a/advanced/rosetta.md +++ b/advanced/rosetta.md @@ -48,3 +48,29 @@ The `magic` parameter describes the first 20 bytes of the ELF header for x86_64 ## Installing Shared Libraries In order to run x86_64 executables, you still need to install shared libraries for x86_64. The instructions vary for different distros but usually involve enabling "multiarch" or "multilib" support. + +For example in Debian based distros the package manager can be updated by duplicating the ARM line(s) in your `/etc/apt/sources.list` and adding `[arch=amd64]` before the url. For example on Ubuntu: + +``` +deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ jammy main restricted +deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ jammy-updates main restricted +deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ jammy universe +deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ jammy-updates universe +``` +And lastly, refreshing the package manager: +``` +sudo dpkg --add-architecture amd64 +sudo apt update +``` + +## Confirming Success +To test if your system now has binaries avaliable via the package manager you can run the following command to check if both `arm64` and `amd64` are avaiable. For example the 7-zip program: +``` +apt list p7zip-full +``` +If you need to force install a program, you should also confirm it is an `ELF 64-bit LSB pie executable, x86-64` file. +``` +sudo apt install p7zip-full:amd64 +file /usr/lib/p7zip/7z +7z b +``` From c495fc6c87e589f3e4fb139e8a37cc4365199224 Mon Sep 17 00:00:00 2001 From: Gabriel Fair <2096785+gabefair@users.noreply.github.com> Date: Fri, 15 Aug 2025 10:55:43 -0400 Subject: [PATCH 02/15] Update rosetta.md --- advanced/rosetta.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/advanced/rosetta.md b/advanced/rosetta.md index fe94dd9..d6b5ef5 100644 --- a/advanced/rosetta.md +++ b/advanced/rosetta.md @@ -49,7 +49,7 @@ The `magic` parameter describes the first 20 bytes of the ELF header for x86_64 ## Installing Shared Libraries In order to run x86_64 executables, you still need to install shared libraries for x86_64. The instructions vary for different distros but usually involve enabling "multiarch" or "multilib" support. -For example in Debian based distros the package manager can be updated by duplicating the ARM line(s) in your `/etc/apt/sources.list` and adding `[arch=amd64]` before the url. For example on Ubuntu: +For example in Debian based distros the package manager can be updated by duplicating the ARM line(s) in your `/etc/apt/sources.list` and adding `[arch=amd64]` before the url. For example on Debian: ``` deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ jammy main restricted @@ -57,6 +57,16 @@ deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ jammy-updates main restricted deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ jammy universe deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ jammy-updates universe ``` +and on Ubuntu: +``` +Types: deb +URIs: http://ports.ubuntu.com/ubuntu-ports/ +Suites: noble noble-updates noble-backports +Components: main restricted universe multiverse +Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg +Architectures: arm64 +``` + And lastly, refreshing the package manager: ``` sudo dpkg --add-architecture amd64 From 228f23e9a2ce250dc0327cacac34d31c74ffe692 Mon Sep 17 00:00:00 2001 From: Gabriel Fair <2096785+gabefair@users.noreply.github.com> Date: Fri, 15 Aug 2025 10:58:11 -0400 Subject: [PATCH 03/15] Update rosetta.md --- advanced/rosetta.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/advanced/rosetta.md b/advanced/rosetta.md index d6b5ef5..c601c7e 100644 --- a/advanced/rosetta.md +++ b/advanced/rosetta.md @@ -60,7 +60,7 @@ deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ jammy-updates universe and on Ubuntu: ``` Types: deb -URIs: http://ports.ubuntu.com/ubuntu-ports/ +URIs: http://archive.ubuntu.com/ubuntu/ Suites: noble noble-updates noble-backports Components: main restricted universe multiverse Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg From e7f0ab5db666f1dafde2d026cbfafbbeb8efcfbd Mon Sep 17 00:00:00 2001 From: Gabriel Fair <2096785+gabefair@users.noreply.github.com> Date: Fri, 15 Aug 2025 11:34:23 -0400 Subject: [PATCH 04/15] Update rosetta.md --- advanced/rosetta.md | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/advanced/rosetta.md b/advanced/rosetta.md index c601c7e..6483d2f 100644 --- a/advanced/rosetta.md +++ b/advanced/rosetta.md @@ -60,11 +60,30 @@ deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ jammy-updates universe and on Ubuntu: ``` Types: deb -URIs: http://archive.ubuntu.com/ubuntu/ +URIs: http://ports.ubuntu.com/ubuntu-ports/ Suites: noble noble-updates noble-backports Components: main restricted universe multiverse Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg -Architectures: arm64 + +Types: deb +URIs: https://security.ports.ubuntu.com/ubuntu-ports/ +Suites: noble-security +Components: main restricted universe multiverse +Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg + +Types: deb +URIs: http://us.archive.ubuntu.com/ubuntu/ +Suites: noble noble-updates noble-backports +Components: main restricted universe multiverse +Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg +Architectures: amd64 + +Types: deb +URIs: http://security.ubuntu.com/ubuntu/ +Suites: noble-security +Components: main restricted universe multiverse +Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg +Architectures: amd64 ``` And lastly, refreshing the package manager: From 0818df8d6880626a1e4e2589cab3d30f8a37ef22 Mon Sep 17 00:00:00 2001 From: Gabriel Fair <2096785+gabefair@users.noreply.github.com> Date: Fri, 15 Aug 2025 11:42:49 -0400 Subject: [PATCH 05/15] Update rosetta.md --- advanced/rosetta.md | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/advanced/rosetta.md b/advanced/rosetta.md index 6483d2f..0ee3899 100644 --- a/advanced/rosetta.md +++ b/advanced/rosetta.md @@ -49,13 +49,10 @@ The `magic` parameter describes the first 20 bytes of the ELF header for x86_64 ## Installing Shared Libraries In order to run x86_64 executables, you still need to install shared libraries for x86_64. The instructions vary for different distros but usually involve enabling "multiarch" or "multilib" support. -For example in Debian based distros the package manager can be updated by duplicating the ARM line(s) in your `/etc/apt/sources.list` and adding `[arch=amd64]` before the url. For example on Debian: +For example for distros using `apt` the package manager can be updated by adding the archiectrure to your source list `/etc/apt/sources.list`. For example on Debian: ``` -deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ jammy main restricted -deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ jammy-updates main restricted -deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ jammy universe -deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ jammy-updates universe +deb [ arch=arm64,amd64 ] http://deb.debian.org/debian/ bookworm main contrib non-free-firmware non-free ``` and on Ubuntu: ``` From fd3f664a68dcbd851df985afcc715b488e2a124d Mon Sep 17 00:00:00 2001 From: Gabriel Fair <2096785+gabefair@users.noreply.github.com> Date: Fri, 15 Aug 2025 12:09:08 -0400 Subject: [PATCH 06/15] Update rosetta.md --- advanced/rosetta.md | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/advanced/rosetta.md b/advanced/rosetta.md index 0ee3899..08ee1a6 100644 --- a/advanced/rosetta.md +++ b/advanced/rosetta.md @@ -83,11 +83,19 @@ Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg Architectures: amd64 ``` -And lastly, refreshing the package manager: -``` -sudo dpkg --add-architecture amd64 -sudo apt update -``` +> **⚠️ WARNING: Multi-Arch Hazard on Ubuntu** +> +> Running `sudo dpkg --add-architecture amd64` on Ubuntu assumes that the update +> binary URLs are identical across architectures. **They are not** — Ubuntu’s +> mirrors use architecture-specific paths. Adding `amd64` without proper +> repository configuration can cause `apt update` to fail or pull packages from +> the wrong source, potentially breaking your system. +> +> If you must enable `amd64` on an ARM system, make sure to: +> 1. Verify your `/etc/apt/sources.list` contains correct `deb [arch=...]` entries. +> 2. Add architecture-specific repository lines for both `arm64` and `amd64`. +> 3. Run `apt update` only after confirming that both architectures point to valid mirrors. + ## Confirming Success To test if your system now has binaries avaliable via the package manager you can run the following command to check if both `arm64` and `amd64` are avaiable. For example the 7-zip program: From ef4c661ef82c9bdb359dfc5497a49d8951e30a32 Mon Sep 17 00:00:00 2001 From: Gabriel Fair <2096785+gabefair@users.noreply.github.com> Date: Fri, 15 Aug 2025 12:34:59 -0400 Subject: [PATCH 07/15] Update rosetta.md --- advanced/rosetta.md | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/advanced/rosetta.md b/advanced/rosetta.md index 08ee1a6..19f0133 100644 --- a/advanced/rosetta.md +++ b/advanced/rosetta.md @@ -61,12 +61,14 @@ URIs: http://ports.ubuntu.com/ubuntu-ports/ Suites: noble noble-updates noble-backports Components: main restricted universe multiverse Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg +Architectures: arm64 Types: deb URIs: https://security.ports.ubuntu.com/ubuntu-ports/ Suites: noble-security Components: main restricted universe multiverse Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg +Architectures: arm64 Types: deb URIs: http://us.archive.ubuntu.com/ubuntu/ @@ -87,14 +89,7 @@ Architectures: amd64 > > Running `sudo dpkg --add-architecture amd64` on Ubuntu assumes that the update > binary URLs are identical across architectures. **They are not** — Ubuntu’s -> mirrors use architecture-specific paths. Adding `amd64` without proper -> repository configuration can cause `apt update` to fail or pull packages from -> the wrong source, potentially breaking your system. -> -> If you must enable `amd64` on an ARM system, make sure to: -> 1. Verify your `/etc/apt/sources.list` contains correct `deb [arch=...]` entries. -> 2. Add architecture-specific repository lines for both `arm64` and `amd64`. -> 3. Run `apt update` only after confirming that both architectures point to valid mirrors. +> mirrors use architecture-specific paths. If this command breaks apt, make sure architecture-specific repository lines exist for both the `arm64` and `amd64` sources. ## Confirming Success From 7147570ea022b856765733a6eb2988b2f07fd038 Mon Sep 17 00:00:00 2001 From: Gabriel Fair <2096785+gabefair@users.noreply.github.com> Date: Fri, 15 Aug 2025 12:55:18 -0400 Subject: [PATCH 08/15] Update rosetta.md --- advanced/rosetta.md | 43 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 40 insertions(+), 3 deletions(-) diff --git a/advanced/rosetta.md b/advanced/rosetta.md index 19f0133..aaab6a4 100644 --- a/advanced/rosetta.md +++ b/advanced/rosetta.md @@ -84,15 +84,48 @@ Components: main restricted universe multiverse Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg Architectures: amd64 ``` +## Configuring the Snap Store +To use the Snap Store you need to register multiple CPU architectures with the kernal, add the `qemu-user` userspace emulator, and confirm `binfmt` integration so the kernal can transparently hand `amd64` binaries to the rosetta emulator. +``` +sudo apt install qemu-user-static binfmt-support +sudo dpkg --add-architecture amd64 +sudo apt update +``` +Now you are ready to install the amd64 install compilers +``` +sudo apt install libc6:amd64 libstdc++6:amd64 +``` +Verify by checking if the output is amd64 +``` +dpkg --print-foreign-architectures +ldd --version +``` +Now install `snapd` and refresh the Snap Store +``` +sudo systemctl restart snapd +sudo snap refresh +``` +Snap is now installed and able to install both binaries targeting either ARM or x64 architectures. Snap will use ARM64 by default, unless AMD64 is specfied as follows: +``` +sudo snap install --architecture=amd64 +``` +You can swap the install architecuture of already installed `Arm64` programs with the refresh command: +``` +sudo snap refresh --architecture=amd64 +``` +To verify the architecture of installed snaps: +``` +snap list --all +``` > **⚠️ WARNING: Multi-Arch Hazard on Ubuntu** > > Running `sudo dpkg --add-architecture amd64` on Ubuntu assumes that the update -> binary URLs are identical across architectures. **They are not** — Ubuntu’s -> mirrors use architecture-specific paths. If this command breaks apt, make sure architecture-specific repository lines exist for both the `arm64` and `amd64` sources. - +> binary URLs are identical across architectures. **They are not** — Ubuntu’s mirrors use architecture-specific paths. +> If this command breaks apt, make sure architecture-specific repository lines exist for both the `arm64` and `amd64` sources. ## Confirming Success + To test if your system now has binaries avaliable via the package manager you can run the following command to check if both `arm64` and `amd64` are avaiable. For example the 7-zip program: ``` apt list p7zip-full @@ -103,3 +136,7 @@ sudo apt install p7zip-full:amd64 file /usr/lib/p7zip/7z 7z b ``` +Also you can check if the `dpkg` command is setup to use amd64: +``` +dpkg --print-foreign-architectures +``` From 6a8b4828226c0b0cdc883f09befcbb2bb6927044 Mon Sep 17 00:00:00 2001 From: Gabriel Fair <2096785+gabefair@users.noreply.github.com> Date: Fri, 15 Aug 2025 12:58:50 -0400 Subject: [PATCH 09/15] Update rosetta.md removing duplicates --- advanced/rosetta.md | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/advanced/rosetta.md b/advanced/rosetta.md index aaab6a4..6b54e6d 100644 --- a/advanced/rosetta.md +++ b/advanced/rosetta.md @@ -95,10 +95,9 @@ Now you are ready to install the amd64 install compilers ``` sudo apt install libc6:amd64 libstdc++6:amd64 ``` -Verify by checking if the output is amd64 +Check if the `dpkg` command is setup to use amd64 ``` dpkg --print-foreign-architectures -ldd --version ``` Now install `snapd` and refresh the Snap Store ``` @@ -136,7 +135,3 @@ sudo apt install p7zip-full:amd64 file /usr/lib/p7zip/7z 7z b ``` -Also you can check if the `dpkg` command is setup to use amd64: -``` -dpkg --print-foreign-architectures -``` From 3b0d75e2027eb6942a923fc55830c229e6212f37 Mon Sep 17 00:00:00 2001 From: Gabriel Fair <2096785+gabefair@users.noreply.github.com> Date: Fri, 15 Aug 2025 13:46:30 -0400 Subject: [PATCH 10/15] Update rosetta.md correct mistake --- advanced/rosetta.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/advanced/rosetta.md b/advanced/rosetta.md index 6b54e6d..3aa8152 100644 --- a/advanced/rosetta.md +++ b/advanced/rosetta.md @@ -106,11 +106,7 @@ sudo snap refresh ``` Snap is now installed and able to install both binaries targeting either ARM or x64 architectures. Snap will use ARM64 by default, unless AMD64 is specfied as follows: ``` -sudo snap install --architecture=amd64 -``` -You can swap the install architecuture of already installed `Arm64` programs with the refresh command: -``` -sudo snap refresh --architecture=amd64 +UBUNTU_STORE_ARCH=amd64 snap download ``` To verify the architecture of installed snaps: ``` From 5c988b5b3501e546bd2c6e8c143054bd3fb63d5a Mon Sep 17 00:00:00 2001 From: Gabriel Fair <2096785+gabefair@users.noreply.github.com> Date: Sat, 30 Aug 2025 16:58:06 -0400 Subject: [PATCH 11/15] Add debian rosetta tips --- guides/debian.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/guides/debian.md b/guides/debian.md index f47c22f..f2e7f34 100644 --- a/guides/debian.md +++ b/guides/debian.md @@ -63,11 +63,18 @@ $ sudo apt install binfmt-support Then, follow [this guide]({% link advanced/rosetta.md %}) to install Rosetta. ## Installing x86_64 Multiarch -For Rosetta to work, you will have to enable x86_64 packages. +For Rosetta to work, you will have to enable x86_64 packages, this can be done in one of two ways: using `dpkg`, or manually. +### Via `dpkg`: ``` $ sudo dpkg --add-architecture amd64 $ sudo apt update ``` +### Manually +For example for distros using `apt` the package manager can be updated by adding the archiectrure to your source list `/etc/apt/sources.list`. For example on Debian: + +``` +deb [ arch=arm64,amd64 ] http://deb.debian.org/debian/ bookworm main contrib non-free-firmware non-free +``` You can now install and run any x86_64 package in the Debian repository with `sudo apt install packagename:amd64`. From bf08fe677f5ef7cf9a1f43faa078445093fcca30 Mon Sep 17 00:00:00 2001 From: Gabriel Fair <2096785+gabefair@users.noreply.github.com> Date: Sat, 30 Aug 2025 17:06:59 -0400 Subject: [PATCH 12/15] Add ubuntu tips to get Rosetta to work --- guides/ubuntu.md | 49 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/guides/ubuntu.md b/guides/ubuntu.md index 477c2fc..aa7d3b6 100644 --- a/guides/ubuntu.md +++ b/guides/ubuntu.md @@ -40,6 +40,55 @@ $ sudo reboot [Follow the instructions in this page.]({% link guest-support/linux.md %}) +## Installing Rosetta +First install `binfmt-support`. + +``` +$ sudo apt install binfmt-support +``` + +Then, follow [this guide]({% link advanced/rosetta.md %}) to install Rosetta. + +## Installing x86_64 Multiarch +For Rosetta to work, you will have to enable x86_64 packages. +For distros using the package manager `apt`, can be updated by adding the archiectrure to your source list `/etc/apt/sources.list.d/` using the `deb822` format. For example on Ubuntu: + +``` +Types: deb +URIs: http://ports.ubuntu.com/ubuntu-ports/ +Suites: noble noble-updates noble-backports +Components: main restricted universe multiverse +Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg +Architectures: arm64 + +Types: deb +URIs: https://security.ports.ubuntu.com/ubuntu-ports/ +Suites: noble-security +Components: main restricted universe multiverse +Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg +Architectures: arm64 + +Types: deb +URIs: http://us.archive.ubuntu.com/ubuntu/ +Suites: noble noble-updates noble-backports +Components: main restricted universe multiverse +Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg +Architectures: amd64 + +Types: deb +URIs: http://security.ubuntu.com/ubuntu/ +Suites: noble-security +Components: main restricted universe multiverse +Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg +Architectures: amd64 +``` + +> **⚠️ WARNING: Multi-Arch Hazard on Ubuntu** +> +> Running `sudo dpkg --add-architecture amd64` on Ubuntu assumes that the update +> binary URLs are identical across architectures. **They are not** — Ubuntu’s mirrors use architecture-specific paths. +> If this command breaks apt, make sure architecture-specific repository lines exist for both the `arm64` and `amd64` sources. + ## Troubleshooting ### Cannot boot into installer From ef68a58390dc4f3d315a0e8c19fe2f79be114622 Mon Sep 17 00:00:00 2001 From: Gabriel Fair <2096785+gabefair@users.noreply.github.com> Date: Sat, 30 Aug 2025 17:14:03 -0400 Subject: [PATCH 13/15] Specify ubuntu 24 in apt tips --- guides/ubuntu.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/guides/ubuntu.md b/guides/ubuntu.md index aa7d3b6..985ab50 100644 --- a/guides/ubuntu.md +++ b/guides/ubuntu.md @@ -1,6 +1,6 @@ --- layout: default -title: Ubuntu 22.04 +title: Ubuntu parent: Guides --- {: .label .label-green } @@ -51,7 +51,7 @@ Then, follow [this guide]({% link advanced/rosetta.md %}) to install Rosetta. ## Installing x86_64 Multiarch For Rosetta to work, you will have to enable x86_64 packages. -For distros using the package manager `apt`, can be updated by adding the archiectrure to your source list `/etc/apt/sources.list.d/` using the `deb822` format. For example on Ubuntu: +For Ubuntu versions from 24.04 onwards using the package manager `apt`, can be updated by adding the archiectrure to your source list `/etc/apt/sources.list.d/` using the `deb822` format. For example on Ubuntu: ``` Types: deb From fa3b6f7b4e78c7458a1f7f2c093c49cf870ac3c2 Mon Sep 17 00:00:00 2001 From: Gabriel Fair <2096785+gabefair@users.noreply.github.com> Date: Sat, 30 Aug 2025 17:15:32 -0400 Subject: [PATCH 14/15] Move ubuntu and debian rosetta tips --- advanced/rosetta.md | 71 ++------------------------------------------- 1 file changed, 2 insertions(+), 69 deletions(-) diff --git a/advanced/rosetta.md b/advanced/rosetta.md index 3aa8152..3e8cd29 100644 --- a/advanced/rosetta.md +++ b/advanced/rosetta.md @@ -49,75 +49,8 @@ The `magic` parameter describes the first 20 bytes of the ELF header for x86_64 ## Installing Shared Libraries In order to run x86_64 executables, you still need to install shared libraries for x86_64. The instructions vary for different distros but usually involve enabling "multiarch" or "multilib" support. -For example for distros using `apt` the package manager can be updated by adding the archiectrure to your source list `/etc/apt/sources.list`. For example on Debian: - -``` -deb [ arch=arm64,amd64 ] http://deb.debian.org/debian/ bookworm main contrib non-free-firmware non-free -``` -and on Ubuntu: -``` -Types: deb -URIs: http://ports.ubuntu.com/ubuntu-ports/ -Suites: noble noble-updates noble-backports -Components: main restricted universe multiverse -Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg -Architectures: arm64 - -Types: deb -URIs: https://security.ports.ubuntu.com/ubuntu-ports/ -Suites: noble-security -Components: main restricted universe multiverse -Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg -Architectures: arm64 - -Types: deb -URIs: http://us.archive.ubuntu.com/ubuntu/ -Suites: noble noble-updates noble-backports -Components: main restricted universe multiverse -Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg -Architectures: amd64 - -Types: deb -URIs: http://security.ubuntu.com/ubuntu/ -Suites: noble-security -Components: main restricted universe multiverse -Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg -Architectures: amd64 -``` -## Configuring the Snap Store -To use the Snap Store you need to register multiple CPU architectures with the kernal, add the `qemu-user` userspace emulator, and confirm `binfmt` integration so the kernal can transparently hand `amd64` binaries to the rosetta emulator. -``` -sudo apt install qemu-user-static binfmt-support -sudo dpkg --add-architecture amd64 -sudo apt update -``` -Now you are ready to install the amd64 install compilers -``` -sudo apt install libc6:amd64 libstdc++6:amd64 -``` -Check if the `dpkg` command is setup to use amd64 -``` -dpkg --print-foreign-architectures -``` -Now install `snapd` and refresh the Snap Store -``` -sudo systemctl restart snapd -sudo snap refresh -``` -Snap is now installed and able to install both binaries targeting either ARM or x64 architectures. Snap will use ARM64 by default, unless AMD64 is specfied as follows: -``` -UBUNTU_STORE_ARCH=amd64 snap download -``` -To verify the architecture of installed snaps: -``` -snap list --all -``` - -> **⚠️ WARNING: Multi-Arch Hazard on Ubuntu** -> -> Running `sudo dpkg --add-architecture amd64` on Ubuntu assumes that the update -> binary URLs are identical across architectures. **They are not** — Ubuntu’s mirrors use architecture-specific paths. -> If this command breaks apt, make sure architecture-specific repository lines exist for both the `arm64` and `amd64` sources. +- [Ubuntu]({% link guides/ubuntu.md %}) +- [Debian]({% link guides/debian.md %}) ## Confirming Success From 4b266a11bedb3d0b65cb698aadfd7934f6375c1e Mon Sep 17 00:00:00 2001 From: Gabriel Fair <2096785+gabefair@users.noreply.github.com> Date: Sat, 30 Aug 2025 17:26:24 -0400 Subject: [PATCH 15/15] Add known limitations of rosetta --- advanced/rosetta.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/advanced/rosetta.md b/advanced/rosetta.md index 3e8cd29..f53dfe4 100644 --- a/advanced/rosetta.md +++ b/advanced/rosetta.md @@ -56,6 +56,7 @@ In order to run x86_64 executables, you still need to install shared libraries f To test if your system now has binaries avaliable via the package manager you can run the following command to check if both `arm64` and `amd64` are avaiable. For example the 7-zip program: ``` +sudo apt update apt list p7zip-full ``` If you need to force install a program, you should also confirm it is an `ELF 64-bit LSB pie executable, x86-64` file. @@ -64,3 +65,13 @@ sudo apt install p7zip-full:amd64 file /usr/lib/p7zip/7z 7z b ``` + +## Troubleshooting + +Sometimes dependencies might fail to install with unconfigured changes. To troubleshoot this issue: +``` +sudo apt -f install -y +``` +However packages might still fail to install due to not being able to use translation or not allowed to compile through Rossetta. + +One known limitation remains with **Snap Packages** due to each package containing all their dependencies and not being able to make use of the translation.