From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Kost Subject: Re: Initializing a 64bit system using guix on a 32bit OS Date: Sat, 23 May 2015 12:24:58 +0300 Message-ID: <874mn3bq8l.fsf@gmail.com> References: <87siappuix.fsf@gmail.com> <87bnhclp1j.fsf@gnu.org> <87a8wwo6wl.fsf@netris.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:38837) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Yw5g1-0004KA-Kn for guix-devel@gnu.org; Sat, 23 May 2015 05:25:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Yw5fy-0007Vj-EP for guix-devel@gnu.org; Sat, 23 May 2015 05:25:05 -0400 In-Reply-To: <87a8wwo6wl.fsf@netris.org> (Mark H. Weaver's message of "Fri, 22 May 2015 13:31:54 -0400") List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org To: Mark H Weaver Cc: guix-devel@gnu.org --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Mark H Weaver (2015-05-22 20:31 +0300) wrote: > ludo@gnu.org (Ludovic Court=C3=A8s) writes: > >> Alex Kost skribis: [...] >>> So I'm wondering is there a way to init a 64-bit system from a 32-bit >>> one or perhaps it's just not possible? >> >> It actually is possible, but a little bit trickier. Mark did it a few >> weeks ago, though in a slightly different context. The following should >> work: >> >> 1. Install an i686 GuixSD, simply with =E2=80=98guix system init=E2=80= =99, but use an >> x86_64 kernel. To do that, you need to explicitly ask for an >> x86_64 kernel and Guix (so that the daemon accepts to build x86_64 >> things) in the OS config: >> >> (define linux-libre-x86_64 >> (package (inherit linux-libre) >> (arguments `(#:system "x86_64-linux" >> ,@(package-arguments linux-libre))))) > > I think this is not sufficient, because it would still use the kernel > config for i686. Here's what I used for the kernel: [...] > diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm > index 26e9aa9..c42919d 100644 > --- a/gnu/packages/linux.scm > +++ b/gnu/packages/linux.scm > @@ -64,6 +64,7 @@ > #:use-module (guix build-system cmake) > #:use-module (guix build-system python) > #:use-module (guix build-system trivial) > + #:use-module ((guix build utils) #:select (alist-replace)) > #:use-module (srfi srfi-26) > #:use-module (ice-9 match)) >=20=20 > @@ -308,6 +309,15 @@ It has been modified to remove all non-free binary b= lobs.") > (license gpl2) > (home-page "http://www.gnu.org/software/linux-libre/")))) >=20=20 > +(define linux-libre-64 > + (package (inherit linux-libre) > + (arguments > + `(#:system "x86_64-linux" > + ,@(package-arguments linux-libre))) > + (native-inputs > + (alist-replace "kconfig" (list (kernel-config "x86_64-linux")) > + (package-native-inputs linux-libre))))) > + Thanks Ludovic and Mark! I tried to follow your advices but eventually I got the same error: guix system: error: build failed: a `x86_64-linux' is required to build `= /gnu/store/zh42mbm0wvbsz05zr798nchyd3bc7fh6-guix-0.8.2.c2ee19e.drv', but I = am a `i686-linux' I used the following command: guix system init --no-grub config-64-simple.scm /mnt/guix I'm attaching the OS config I used. Did I miss anything? --=-=-= Content-Type: text/plain; charset=utf-8 Content-Disposition: attachment; filename=config-64-simple.scm Content-Transfer-Encoding: quoted-printable (use-modules (gnu) (guix monads) (guix store) ((guix build utils) #:select (alist-replace)) (guix packages) (gnu packages linux) (gnu packages package-management) (gnu services base)) (define linux-libre-x86_64 (package (inherit linux-libre) (arguments `(#:system "x86_64-linux" #:tests? #f ,@(package-arguments linux-libre))) (native-inputs (alist-replace "kconfig" (list "/mnt/storage/src/guix/gnu/packages/lin= ux-libre-x86_64.conf") (package-native-inputs linux-libre))))) (define guix-x86_64 (package (inherit guix) (arguments `(#:system "x86_64-linux" #:tests? #f ,@(package-arguments guix))))) (define %services ;; Make sure the =E2=80=98guix-daemon=E2=80=99 services uses =E2=80=98gui= x-x86_64=E2=80=99. (map (lambda (mservice) (mlet %store-monad ((service mservice)) (if (memq 'guix-daemon (service-provision service)) (guix-service #:guix guix-x86_64) (return service)))) %base-services)) (operating-system (host-name "host") (timezone "Europe/Moscow") (kernel linux-libre-x86_64) (bootloader (grub-configuration (device "/dev/sda"))) (file-systems (cons* (file-system (device "guix") (title 'label) (mount-point "/") (type "ext4")) %base-file-systems)) (users (list (user-account (name "al") (uid 1000) (home-directory "/home/al") (group "users") (supplementary-groups '("wheel" "audio" "video"))))) (packages (cons* iproute %base-packages)) (services (cons* (console-keymap-service "dvorak") %services))) --=-=-=--