Enable support for veyron chrombooks

  • Done
  • quality assurance status badge
Details
4 participants
  • Danny Milosavljevic
  • Efraim Flashner
  • Ludovic Courtès
  • Vagrant Cascadian
Owner
unassigned
Submitted by
Vagrant Cascadian
Severity
normal
V
V
Vagrant Cascadian wrote on 24 Mar 2019 19:02
(address . guix-patches@gnu.org)
87wokogngm.fsf@ponder
X-Debbugs-Cc: Timothy Sample <samplet@ngyro.com>

Attached is a patch series that adds a linux-libre kernel variant for
"veyron" type chromebooks, tested on an Asus-C201
(a.k.a. veyron-speedy), and corresponding support for installing the
kernel so that the "depthcharge" bootloader can boot it, and an example
system config used on the veyron-speedy. It may also work on other
veyron models; they are untested.

I've taken the WIP patch that Timothy Sample proposed and split it into
two patches (one for the bootloader support, and one for the example
system config slightly adjusted for the new kernel package name), and
dropped the prawnos kernel, though the linux-libre-arm-veyrong kernel
config is largely based on the prawnos kernel config. The thread on
guix-devel describes more of the background:


Big thanks to Timothy for the WIP patches that made it possible to get
this far!


Caveats:

* The kernel patch introduces kernel-config-veyron, which should
eventually get refactored into kernel-config directly.

* It would be much preferable to figure out how to just use linux-libre
without a separate kernel variant, but I've been unable to figure out
the right combination of options at this point.

* Xorg works, although so slowly as to be almost unusable. The
framebuffer console works quite well, so not sure why X is *so* much
slower. Might be configuration options to improve that.

* dm_crypt "works" briefly, but hangs the device-mapper device after
brief use.

* Sometimes stalls out indefinitely in the initrd after "loading
modules..." ... keyboard stays responsive in the sense that you can
hit enter and it scrolls the screen one line.


That said, it's a decent fairly affordable and portable Guix System,
free software all the way down to the firmware (if you install libreboot
yourself).


live well,
vagrant
From ae4e8d69cdbc4f7d2b006a83ce3498801cdfe17b Mon Sep 17 00:00:00 2001
From: Timothy Sample <samplet@ngyro.com>
Date: Mon, 4 Mar 2019 09:52:49 -0500
Subject: [PATCH 3/3] gnu: Add example system configuration for asus-c201.

* gnu/system/examples/asus-c201.tmpl: New file.
---
gnu/system/examples/asus-c201.tmpl | 60 ++++++++++++++++++++++++++++++
1 file changed, 60 insertions(+)
create mode 100644 gnu/system/examples/asus-c201.tmpl

Toggle diff (68 lines)
diff --git a/gnu/system/examples/asus-c201.tmpl b/gnu/system/examples/asus-c201.tmpl
new file mode 100644
index 0000000000..098958f4a2
--- /dev/null
+++ b/gnu/system/examples/asus-c201.tmpl
@@ -0,0 +1,60 @@
+;; This is an operating system configuration template
+;; for a "bare bones" setup for an ASUS C201PA.
+
+(use-modules (gnu) (gnu bootloader depthcharge))
+(use-service-modules networking ssh)
+(use-package-modules linux screen)
+
+(operating-system
+ (host-name "komputilo")
+ (timezone "Europe/Berlin")
+ (locale "en_US.utf8")
+
+ ;; Assuming /dev/mmcblk0p1 is the kernel partition, and
+ ;; "my-root" is the label of the target root file system.
+ (bootloader (bootloader-configuration
+ (bootloader depthcharge-bootloader)
+ (target "/dev/mmcblk0p1")))
+
+ ;; The ASUS C201PA requires a very particular kernel to boot,
+ ;; as well as the following arguments.
+ (kernel linux-libre-arm-veyron)
+ (kernel-arguments '("console=tty1"))
+
+ ;; We do not need any special modules for initrd, and the
+ ;; PrawnOS kernel does not include many of the normal ones.
+ (initrd-modules '())
+
+ (file-systems (cons (file-system
+ (device (file-system-label "my-root"))
+ (mount-point "/")
+ (type "ext4"))
+ %base-file-systems))
+
+ ;; This is where user accounts are specified. The "root"
+ ;; account is implicit, and is initially created with the
+ ;; empty password.
+ (users (cons (user-account
+ (name "alice")
+ (comment "Bob's sister")
+ (group "users")
+
+ ;; Adding the account to the "wheel" group
+ ;; makes it a sudoer. Adding it to "audio"
+ ;; and "video" allows the user to play sound
+ ;; and access the webcam.
+ (supplementary-groups '("wheel"
+ "audio" "video"))
+ (home-directory "/home/alice"))
+ %base-user-accounts))
+
+ ;; Globally-installed packages.
+ (packages (cons screen %base-packages))
+
+ ;; Add services to the baseline: a DHCP client and
+ ;; an SSH server.
+ (services (append (list (service dhcp-client-service-type)
+ (service openssh-service-type
+ (openssh-configuration
+ (port-number 2222))))
+ %base-services)))
--
2.21.0
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQRlgHNhO/zFx+LkXUXcUY/If5cWqgUCXJfGPgAKCRDcUY/If5cW
qkUiAP9+vLikJwDsgoNobd530RibPqQZYa2gyejpQlnRkKxitAEAtn2/eZL9zrYo
Wx+6Aw8t/Ut2HsfTC6H4uKbjkP6oeQU=
=BDKZ
-----END PGP SIGNATURE-----

V
V
Vagrant Cascadian wrote on 24 Mar 2019 19:19
Re: Guix on the ASUS C201PA
(name . Timothy Sample)(address . samplet@ngyro.com)
87sgvcgmp6.fsf@ponder
Toggle quote (3 lines)
> I have a few more changes to the veyron-specific config that were needed
> for desktop use

I've submitted the kernel, bootloader and example configuration patches
as:



live well,
vagrant
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQRlgHNhO/zFx+LkXUXcUY/If5cWqgUCXJfKFQAKCRDcUY/If5cW
quhvAP9TG1hZhijNO/od4pP9nbCFfpcrBKlfOs3UxwuUF3b9QwD/SQqWMTJ8B8XP
rRjmim+Y8JUAWAJQqXSftlRCqvFd4ww=
=AroX
-----END PGP SIGNATURE-----

V
V
Vagrant Cascadian wrote on 24 Mar 2019 19:24
Re: Enable support for veyron chrombooks
(address . 34978@debbugs.gnu.org)
87mulkgmga.fsf@ponder
On 2019-03-24, Vagrant Cascadian wrote:
Toggle quote (7 lines)
> Attached is a patch series that adds a linux-libre kernel variant for
> "veyron" type chromebooks, tested on an Asus-C201
> (a.k.a. veyron-speedy), and corresponding support for installing the
> kernel so that the "depthcharge" bootloader can boot it, and an example
> system config used on the veyron-speedy. It may also work on other
> veyron models; they are untested.

A bonus caveat:

* currently u-boot-tools and tdb fail tests on armhf; but those should
probably be their own bugs...


live well,
vagrant
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQRlgHNhO/zFx+LkXUXcUY/If5cWqgUCXJfLVQAKCRDcUY/If5cW
qpfLAQD9tshoCDYAfXX+Y+reJRtFhIM0RdKy/ra9NuHPiUnm8QEA+XF7GN3a8oaZ
Sfkk8lkWj/mFdlJ1an9NP8P9CokhGAY=
=buJF
-----END PGP SIGNATURE-----

V
V
Vagrant Cascadian wrote on 26 Mar 2019 23:50
(address . 34978@debbugs.gnu.org)
87y351qmhb.fsf@aikidev.net
On 2019-03-24, Vagrant Cascadian <vagrant@debian.org> wrote:
Toggle quote (13 lines)
> On 2019-03-24, Vagrant Cascadian wrote:
>> Attached is a patch series that adds a linux-libre kernel variant for
>> "veyron" type chromebooks, tested on an Asus-C201
>> (a.k.a. veyron-speedy), and corresponding support for installing the
>> kernel so that the "depthcharge" bootloader can boot it, and an example
>> system config used on the veyron-speedy. It may also work on other
>> veyron models; they are untested.
>
> A bonus caveat:
>
> * currently u-boot-tools and tdb fail tests on armhf; but those should
> probably be their own bugs...

"guix system reconfigure" works just fine when done from a checkout
(e.g. ./pre-inst-env guix system reconfigure ...), but unfortunately, if
I guix pull the very same commit:

$ guix system reconfigure /home/vagrant/src/config/asus-c201-spdygx.scm
guix system: error: failed to load '/home/vagrant/src/config/asus-c201-spdygx.scm':
ice-9/boot-9.scm:2803:6: In procedure resolve-interface:
no code for module (gnu bootloader depthcharge)

How could that happen?


live well,
vagrant
E
E
Efraim Flashner wrote on 27 Mar 2019 10:24
Re: [bug#34978] Enable support for veyron chrombooks
(name . Vagrant Cascadian)(address . vagrant@debian.org)(address . 34978@debbugs.gnu.org)
20190327092456.GC28591@macbook41
On Tue, Mar 26, 2019 at 03:50:24PM -0700, Vagrant Cascadian wrote:
Toggle quote (26 lines)
> On 2019-03-24, Vagrant Cascadian <vagrant@debian.org> wrote:
> > On 2019-03-24, Vagrant Cascadian wrote:
> >> Attached is a patch series that adds a linux-libre kernel variant for
> >> "veyron" type chromebooks, tested on an Asus-C201
> >> (a.k.a. veyron-speedy), and corresponding support for installing the
> >> kernel so that the "depthcharge" bootloader can boot it, and an example
> >> system config used on the veyron-speedy. It may also work on other
> >> veyron models; they are untested.
> >
> > A bonus caveat:
> >
> > * currently u-boot-tools and tdb fail tests on armhf; but those should
> > probably be their own bugs...
>
> "guix system reconfigure" works just fine when done from a checkout
> (e.g. ./pre-inst-env guix system reconfigure ...), but unfortunately, if
> I guix pull the very same commit:
>
> $ guix system reconfigure /home/vagrant/src/config/asus-c201-spdygx.scm
> guix system: error: failed to load '/home/vagrant/src/config/asus-c201-spdygx.scm':
> ice-9/boot-9.scm:2803:6: In procedure resolve-interface:
> no code for module (gnu bootloader depthcharge)
>
> How could that happen?
>

You might need to add the new (non guix-package-*) files to Makefile.am
too.

--
Efraim Flashner <efraim@flashner.co.il> ????? ?????
GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted
-----BEGIN PGP SIGNATURE-----

iQIzBAABCgAdFiEEoov0DD5VE3JmLRT3Qarn3Mo9g1EFAlybQWQACgkQQarn3Mo9
g1GX/BAAtFNBBYKBdTMsG2ZpWQM1pP6yWOYgAAQLaVReQUCpYsx0tv7HRvWFLYyV
jVzTO+CLuRl06VNWt2JtIbJ/6p5RZe/RvY9JLfSBb7Lq6isF6gA2Lp7GDSTFl321
d/pJFSyCaGY1MGsR5H+qpdmCJaBuF49X5itXaGg9f8XeBac1Ca7qzzJpeIiTh21y
4nG5z06b2tyzFyaF70Gn5//VClYokIxkJv8bYLDw0a5mig+lUmFLRCg9eY6XDctq
NMhL8mIXxZgFSAGng8WSx2X/QO2lHPRJms2SA19vL378v6fCNvEZd+CPuIe/oiIV
jUNh2n+sbsWQpRTOS93sYWrnuOqS3nBa+d121bMOxRFqZoHe0T69PC8HJaAg0VyL
5vighdnQJj8u2tZVyqXjdkZ6mvGOscJFewKDo+7Fi107Kh2iz6jS/xTfTZ2isQO2
lIJ5BAmmiyI5SHfzUA0nqW2yTbWfcTekuhVn1wRj6rV+FK51fbXa9bKzFPwYSmVG
zE6Zt0h0Wa0PEG25g7XoZjbJQQFf+tnzZ3u5x36PEjnfQxzl0VS9g3trIfRfcEQ8
WuXttXHc9JQ2KXBTpyMtHP5ptBIga+YngYHxy/Nd/UX6fDoB3DCHnf3eZEBWuiJl
HAYHtdsLr1SqL6vLd/dv21D7dMdXyEg5oHZm2m6csEhsxxTPQzk=
=zfam
-----END PGP SIGNATURE-----


V
V
Vagrant Cascadian wrote on 27 Mar 2019 16:14
(name . Efraim Flashner)(address . efraim@flashner.co.il)(address . 34978@debbugs.gnu.org)
877eckuz72.fsf@ponder
On 2019-03-27, Efraim Flashner wrote:
Toggle quote (9 lines)
> On Tue, Mar 26, 2019 at 03:50:24PM -0700, Vagrant Cascadian wrote:
>> On 2019-03-24, Vagrant Cascadian <vagrant@debian.org> wrote:
>> > On 2019-03-24, Vagrant Cascadian wrote:
>> >> Attached is a patch series that adds a linux-libre kernel variant for
>> >> "veyron" type chromebooks, tested on an Asus-C201
>> >> (a.k.a. veyron-speedy), and corresponding support for installing the
>> >> kernel so that the "depthcharge" bootloader can boot it, and an example
>> >> system config used on the veyron-speedy. It may also work on other
>> >> veyron models; they are untested.
...
Toggle quote (14 lines)
>> "guix system reconfigure" works just fine when done from a checkout
>> (e.g. ./pre-inst-env guix system reconfigure ...), but unfortunately, if
>> I guix pull the very same commit:
>>
>> $ guix system reconfigure /home/vagrant/src/config/asus-c201-spdygx.scm
>> guix system: error: failed to load '/home/vagrant/src/config/asus-c201-spdygx.scm':
>> ice-9/boot-9.scm:2803:6: In procedure resolve-interface:
>> no code for module (gnu bootloader depthcharge)
>>
>> How could that happen?
>
> You might need to add the new (non guix-package-*) files to Makefile.am
> too.

None of the other gnu/bootloader/* are added in Makefile.am. It was
added to gnu/local.mk, just like the other bootloaders; This is why I'm
so perplexed... the depthcharge patch mimics the entries for the other
bootloaders, works with ./pre-inst-env, but not when using guix pull to
pull the commit.


live well,
vagrant
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQRlgHNhO/zFx+LkXUXcUY/If5cWqgUCXJuTUgAKCRDcUY/If5cW
qlNqAQDhir/97qewv90+j2SR7Fh2khlxVF7ZPIx6PorzhjC+xAD+I1dnIn9lyQXY
1UuWIZMe+8yAiHqPsR6JWA+ajygcBwE=
=R9iQ
-----END PGP SIGNATURE-----

L
L
Ludovic Courtès wrote on 3 Apr 2019 18:26
(name . Vagrant Cascadian)(address . vagrant@debian.org)
87d0m3rr6v.fsf@gnu.org
Hello!

Vagrant Cascadian <vagrant@debian.org> skribis:

Toggle quote (12 lines)
> I've taken the WIP patch that Timothy Sample proposed and split it into
> two patches (one for the bootloader support, and one for the example
> system config slightly adjusted for the new kernel package name), and
> dropped the prawnos kernel, though the linux-libre-arm-veyrong kernel
> config is largely based on the prawnos kernel config. The thread on
> guix-devel describes more of the background:
>
> https://lists.gnu.org/archive/html/guix-devel/2019-03/msg00053.html
>
> Big thanks to Timothy for the WIP patches that made it possible to get
> this far!

Neat! I’ve applied all three patches.

I’ve also followed up by a commit that fixes the problem you mentioned,
namely that (gnu bootloader depthcharge) wouldn’t be included in what
‘guix pull’ provides.

Could you add a sentence or two in doc/guix.texi, under “Bootloader
Configuration”, to mention Depthcharge next to U-Boot?

BTW, if U-Boot and Depthcharge are able to install custom keymaps, it’d
be nice to implement that support like commit
8d058e7b1b1a409d3d9cc29c5650a98db4e78783 does for GRUB.

Thanks Vagrant & Timothy!

Ludo’.
L
L
Ludovic Courtès wrote on 3 Apr 2019 18:26
control message for bug #34978
(address . control@debbugs.gnu.org)
87bm1nrr6m.fsf@gnu.org
tags 34978 fixed
close 34978
D
D
Danny Milosavljevic wrote on 3 Apr 2019 18:59
Re: [bug#34978] Enable support for veyron chrombooks
(name . Ludovic Courtès)(address . ludo@gnu.org)
20190403185957.54228ce5@scratchpost.org
Toggle quote (4 lines)
> BTW, if U-Boot and Depthcharge are able to install custom keymaps, it’d
> be nice to implement that support like commit
> 8d058e7b1b1a409d3d9cc29c5650a98db4e78783 does for GRUB.

Heh, I wish U-Boot did that, but it really doesn't:

/* Translate the scancode in ASCII */
static int usb_kbd_translate(struct usb_kbd_pdata *data, unsigned char scancode,
unsigned char modifier, int pressed)
{
uint8_t keycode = 0;

/* Key released */
if (pressed == 0) {
data->repeat_delay = 0;
return 0;
}

if (pressed == 2) {
data->repeat_delay++;
if (data->repeat_delay < REPEAT_DELAY)
return 0;

data->repeat_delay = REPEAT_DELAY;
}

/* Alphanumeric values */
if ((scancode > 3) && (scancode <= 0x1d)) {
keycode = scancode - 4 + 'a';

if (data->flags & USB_KBD_CAPSLOCK)
keycode &= ~CAPITAL_MASK;

if (modifier & (LEFT_SHIFT | RIGHT_SHIFT)) {
/* Handle CAPSLock + Shift pressed simultaneously */
if (keycode & CAPITAL_MASK)
keycode &= ~CAPITAL_MASK;
else
keycode |= CAPITAL_MASK;
}
}

if ((scancode > 0x1d) && (scancode < 0x39)) {
/* Shift pressed */
if (modifier & (LEFT_SHIFT | RIGHT_SHIFT))
keycode = usb_kbd_numkey_shifted[scancode - 0x1e];
else
keycode = usb_kbd_numkey[scancode - 0x1e];
}

/* Arrow keys */
if ((scancode >= 0x4f) && (scancode <= 0x52))
keycode = usb_kbd_arrow[scancode - 0x4f];

/* Numeric keypad */
if ((scancode >= 0x54) && (scancode <= 0x67))
keycode = usb_kbd_num_keypad[scancode - 0x54];

if (data->flags & USB_KBD_CTRL)
keycode = scancode - 0x3;

if (pressed == 1) {
if (scancode == NUM_LOCK) {
data->flags ^= USB_KBD_NUMLOCK;
return 1;
}

if (scancode == CAPS_LOCK) {
data->flags ^= USB_KBD_CAPSLOCK;
return 1;
}
if (scancode == SCROLL_LOCK) {
data->flags ^= USB_KBD_SCROLLLOCK;
return 1;
}
}

/* Report keycode if any */
if (keycode) {
debug("%c", keycode);
usb_kbd_put_queue(data, keycode);
}

return 0;
}
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEds7GsXJ0tGXALbPZ5xo1VCwwuqUFAlyk5o0ACgkQ5xo1VCww
uqXhRgf/RPI3KFzzOlSehXsljMVULpIDlXm/IKtuvr8o6Rx9ig3dg+1h08FSwNGV
FAM4TeYgKLOHd7ikI/Q1zBBcuGiNm9/LlrVzkBGiGB7nMIYHz5iNP2rU/kDQh/BH
trBaR/+UKqd4QUwqK6KzLRpgIvhFH6fXEUqTkAKFnLySlH9wrCp7QYBt7ZBc1AqK
siwDaWr4cCrcmHehgQnsw+oy1e/81FIOlE0eW4+L5UuE3ylSk1hMoDRxef/nKYuo
Cn+CwALerMtUs10me6/54Lktc96zr9Tkig++bre8DXy+wMP0MWehhUz14ZDzIRa/
Vwm+g4iPXa2qAqXxbqtjrzNDKJ77zg==
=epoS
-----END PGP SIGNATURE-----


?