From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nathan Dehnel Subject: GuixSD install, bootable on multiple architectures Date: Mon, 1 Oct 2018 23:41:04 -0500 Message-ID: Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:58597) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1g7CUq-00068T-2f for help-guix@gnu.org; Tue, 02 Oct 2018 00:41:20 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1g7CUn-0007ZJ-Pj for help-guix@gnu.org; Tue, 02 Oct 2018 00:41:19 -0400 Received: from mail-wr1-x435.google.com ([2a00:1450:4864:20::435]:39591) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1g7CUn-0007Yk-J3 for help-guix@gnu.org; Tue, 02 Oct 2018 00:41:17 -0400 Received: by mail-wr1-x435.google.com with SMTP id s14-v6so524754wrw.6 for ; Mon, 01 Oct 2018 21:41:17 -0700 (PDT) List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-guix-bounces+gcggh-help-guix=m.gmane.org@gnu.org Sender: "Help-Guix" To: help-guix@gnu.org I had an idea for an operating system that is portable across CPU architectures. You would have a set of bootloaders for each architecture (let's say, x86 and PowerPC). The x86 bootloader would be stored in the EFI partition, and the PowerPC bootloader would be stored in the OpenFirmware partition. (These could all be GRUB2, or whatever). The bootloader would be configured to load the appropriate kernel. You would have a set of Linux kernels stored in /boot, one compiled for each architecture. Let's say the x86 bootloader loads the x86 kernel. Then the x86 kernel loads the appropriate x86-compiled init. (This could be done by setting the init= kernel option, for example). The init system loads the guix daemon, which is used from then on to load the correct programs for the running system. One copy of each application would be installed in /gnu/store for each architecture keyworded (to use Gentoo termiology) by the package manager. The appropriate application for the current CPU would be linked to the typical location on the filesystem hierarchy (/bin/cp, /bin/cat, etc.) by the guix daemon. This would for example allow you to install GuixSD for x86, then, by setting an option in your package manager, install a set of PowerPC packages in parallel, and then put your drive in a PowerPC machine and it would boot. Is this theoretically possible to implement?