all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Mark H Weaver <mhw@netris.org>
To: matias_jose_seco@autoproduzioni.net
Cc: guix-devel@gnu.org
Subject: Re: Of sounds and locales
Date: Mon, 27 Jul 2015 17:30:21 -0400	[thread overview]
Message-ID: <87twsp47bm.fsf@netris.org> (raw)
In-Reply-To: <725fd1253bc420d3e1e6bfa49bbf9b79@autoproduzioni.net> (matias jose seco's message of "Wed, 15 Jul 2015 20:08:26 +0000")

matias_jose_seco@autoproduzioni.net writes:

> Humanists and Magicians,
> i'm very glad to began this journey around BuildYourWorld dimension!
> In particular i've successfully generated the GuixSD station at
> Libreboot X60,
> and it runs like a free deer over the woods!

Excellent!  I've used GuixSD on a Libreboot X60 in the past, and now use
a Libreboot X200.

> In this chapter, i was trying to complete system declaration
> following two quests:
> 1 - add "processor.max_cstate=2" to GRUB's kernel parameters
> 2 - Set an Italian Locale with an UK Keyboard Layout
> The first goal is to turn the laptop from a whistling kettle to a calm
> breeze [1].

Another option to reduce the whistle is to run "powertop --auto-tune"
after boot.  Here's a service definition I put into my OS config to
do this:

--8<---------------cut here---------------start------------->8---
(define (powertop-auto-tune-service)
  (let ((powertop #~(string-append #$powertop "/sbin/powertop")))
    (with-monad %store-monad
      (return
       (service
        (documentation "Run powertop --auto-tune.")
        (provision '(powertop-auto-tune))
        (requirement '(user-processes))
        (start #~(lambda _
                   (zero? (system* #$powertop "--auto-tune")))))))))
--8<---------------cut here---------------end--------------->8---

And then include (powertop-auto-tune-service) in the 'services' field.
Note, you'll need to import some extra modules at the top of the file:

--8<---------------cut here---------------start------------->8---
(use-modules (gnu)
             (gnu services)
             (guix gexp)
             (guix store)
             (guix monads))
--8<---------------cut here---------------end--------------->8---

> I was able to install some packages, but actually, performing 'guix
> pull'
> brings my laptop off or freezed after sometime. I've attached my last
> attempt, and
> the only particular anomaly i've found was it's temperature (sensors
> attached), 2 minutes before it freezed again.

This is probably due to overheating.  Some Libreboot X60 models tend to
overheat.  My workaround was to add another service that disables the
second CPU core when it gets too hot.  Here's the service definition I
used:

--8<---------------cut here---------------start------------->8---
(define (temperature-regulation-service)
  (with-monad %store-monad
    (return
     (service
      (documentation "Regulate temperature on an overclocked Libreboot X60.")
      (provision '(temperature-regulation))
      (requirement '(user-processes))
      (start #~(lambda _
                 (let ((pid (primitive-fork)))
                   (if (positive? pid)
                       pid
                       (let ()
                         (define (current-temp)
                           (call-with-input-file
                               "/sys/class/thermal/thermal_zone0/temp"
                             read))
                         (define (set-cpu1-online! online?)
                           (call-with-output-file
                               "/sys/devices/system/cpu/cpu1/online"
                             (lambda (port)
                               (write (if online? 1 0) port))))
                         (let loop ()
                           (let ((temp (current-temp)))
                             (cond ((< temp 88000) (set-cpu1-online! #t))
                                   ((> temp 92000) (set-cpu1-online! #f))))
                           (sleep 2)
                           (loop)))))))
      (stop #~(make-kill-destructor))
      (respawn? #t)))))
--8<---------------cut here---------------end--------------->8---

and as above, you'll need to add (temperature-regulation-service) to the
services field, and of course run "guix system reconfigure <OS-CONFIG>"
and reboot.

If you find that it still crashes, you might need to lower those numbers
(88000 and 92000) a bit further.  Those mean that when the temperature
exceeds 92 degrees C, disable the second CPU, and when it drops below 88
degrees, turn it back on.

      Mark

  parent reply	other threads:[~2015-07-27 21:30 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-15 20:08 Of sounds and locales matias_jose_seco
2015-07-16 10:59 ` Alex Kost
2015-07-16 23:16 ` Ludovic Courtès
2015-07-27 18:21   ` matias_jose_seco
2015-07-27 21:30 ` Mark H Weaver [this message]
2015-07-27 21:39   ` Mark H Weaver
2015-10-24 15:28   ` matias_jose_seco
2015-10-25 19:07     ` Alex Kost
2015-11-01 22:26       ` matias_jose_seco
2015-11-02  9:01         ` Ludovic Courtès

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87twsp47bm.fsf@netris.org \
    --to=mhw@netris.org \
    --cc=guix-devel@gnu.org \
    --cc=matias_jose_seco@autoproduzioni.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.