Import sources
commit
c72b35b8e9
@ -0,0 +1,10 @@
|
|||||||
|
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
|
||||||
|
<!-- labnotes-sidebar -->
|
||||||
|
<ins class="adsbygoogle"
|
||||||
|
style="display:block"
|
||||||
|
data-ad-client="ca-pub-9293069461823781"
|
||||||
|
data-ad-slot="5776170959"
|
||||||
|
data-ad-format="auto"></ins>
|
||||||
|
<script>
|
||||||
|
(adsbygoogle = window.adsbygoogle || []).push({});
|
||||||
|
</script>
|
@ -0,0 +1,56 @@
|
|||||||
|
---
|
||||||
|
layout: post
|
||||||
|
title: "Debian Jessie on Dell Precision M4800"
|
||||||
|
date: 2014-11-22 01:16:09 +0100
|
||||||
|
comments: true
|
||||||
|
categories:
|
||||||
|
---
|
||||||
|
|
||||||
|
The testing ISO image works on a USB key.
|
||||||
|
|
||||||
|
Using the nvidia (non-free) driver
|
||||||
|
----------------------------------
|
||||||
|
|
||||||
|
To install the nVidia driver:
|
||||||
|
|
||||||
|
* make sure installed kernel headers (linux-headers) match kernel (linux-image),
|
||||||
|
otherwise DKMS won't build.
|
||||||
|
* install nvidia-driver (note: this will build a kernel module, so requires
|
||||||
|
a working compiler)
|
||||||
|
* run `nvidia-xconfig --query-gpu-info` by hand and make note of PCI BusID
|
||||||
|
* run `nvidia-xconfig --busid=PCI:x:x:x` to generate xorg.conf
|
||||||
|
|
||||||
|
BIOS setup
|
||||||
|
----------
|
||||||
|
|
||||||
|
* Video -> Switchable graphics -> uncheck Enable Switchable Graphics
|
||||||
|
|
||||||
|
GNOME 3
|
||||||
|
-------
|
||||||
|
|
||||||
|
Disable `gnome-keyring`:
|
||||||
|
```
|
||||||
|
$ cd /etc/xdg/autostart
|
||||||
|
$ mv gnome-keyring-ssh.desktop gnome-keyring-ssh.desktop-
|
||||||
|
$ mv gnome-keyring-gpg.desktop gnome-keyring-gpg.desktop-
|
||||||
|
```
|
||||||
|
|
||||||
|
Remember NumLock state:
|
||||||
|
```
|
||||||
|
$ gsettings set org.gnome.settings-daemon.peripherals.keyboard remember-numlock-state true
|
||||||
|
```
|
||||||
|
|
||||||
|
Support for smart-card reader
|
||||||
|
-----------------------------
|
||||||
|
|
||||||
|
`apt-get install pcscd`
|
||||||
|
|
||||||
|
Network
|
||||||
|
-------
|
||||||
|
|
||||||
|
Disable [IPv6 Privacy Extensions](https://home.regit.org/2011/04/ipv6-privacy/)
|
||||||
|
```plain /etc/sysctl.conf
|
||||||
|
# Disable IPv6 "Privacy extensions" (random SLAAC addresses)
|
||||||
|
net.ipv6.conf.all.use_tempaddr=0
|
||||||
|
net.ipv6.conf.default.use_tempaddr=0
|
||||||
|
```
|
@ -0,0 +1,51 @@
|
|||||||
|
---
|
||||||
|
layout: post
|
||||||
|
title: "Setting up Octopress"
|
||||||
|
date: 2014-11-22 01:20:42 +0100
|
||||||
|
comments: true
|
||||||
|
categories:
|
||||||
|
---
|
||||||
|
Objective
|
||||||
|
---------
|
||||||
|
|
||||||
|
To set up Octopress in its own, isolated Ruby environment
|
||||||
|
|
||||||
|
Prerequisite
|
||||||
|
------------
|
||||||
|
|
||||||
|
Install rbenv to manage Ruby virtual environments.
|
||||||
|
|
||||||
|
Create isolated environment:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ export GEM_HOME=$HOME/octopress.gems
|
||||||
|
$ gem install bundler
|
||||||
|
$ export PATH=$GEM_HOME/bin:$PATH
|
||||||
|
```
|
||||||
|
|
||||||
|
`GEM_HOME` and `PATH` need to be set to do any Octopress work.
|
||||||
|
|
||||||
|
Clone Octopress:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ git clone git://github.com/imathis/octopress.git octopress
|
||||||
|
$ cd octopress
|
||||||
|
```
|
||||||
|
|
||||||
|
Install dependencies and default theme:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ bundle install
|
||||||
|
$ rake install
|
||||||
|
```
|
||||||
|
|
||||||
|
:warning: If `--path` is passed to `bundle install`, the value is cached
|
||||||
|
in `.bundle/config`, and `$GEM_HOME` is subsequently ignored.
|
||||||
|
|
||||||
|
Emoji support
|
||||||
|
-------------
|
||||||
|
|
||||||
|
* Plugin: https://github.com/chriskempson/jekyll-emoji
|
||||||
|
It is actually necessary to add `gemoji` to the Gemfile
|
||||||
|
* Images: https://github.com/arvida/emoji-cheat-sheet.com
|
||||||
|
* `ln -s .../emoji-cheat-sheet.com/public/graphics/emogis source/images/
|
@ -0,0 +1,142 @@
|
|||||||
|
---
|
||||||
|
layout: post
|
||||||
|
title: "Upgrading to FreeBSD 10.1-RELEASE"
|
||||||
|
date: 2015-02-18 23:06:46 +0100
|
||||||
|
comments: true
|
||||||
|
categories:
|
||||||
|
---
|
||||||
|
|
||||||
|
I endeavoured to upgrade my old FreeBSD 9.3-RELEASE system to brand
|
||||||
|
new 10.1. As expected, this was a quite bumpy process, and below are
|
||||||
|
a few things I had to find out the hard way.
|
||||||
|
|
||||||
|
Ports
|
||||||
|
=====
|
||||||
|
|
||||||
|
Neither `pkg update` nor `portupgrade` can update all ports.
|
||||||
|
I had to dump all origins, remove all ports, then reinstall
|
||||||
|
everything manually.
|
||||||
|
|
||||||
|
Linuxulator
|
||||||
|
===========
|
||||||
|
|
||||||
|
New CentOS-6 based linux_base requires sysctl:
|
||||||
|
```
|
||||||
|
compat.linux.osrelease=2.6.18
|
||||||
|
```
|
||||||
|
|
||||||
|
X11
|
||||||
|
===
|
||||||
|
|
||||||
|
New Xorg
|
||||||
|
--------
|
||||||
|
|
||||||
|
As of Apr. 16, 2014, the X server has been upgraded to a new
|
||||||
|
release. From https://wiki.freebsd.org/Graphics/WITH_NEW_XORG:
|
||||||
|
|
||||||
|
```plain linenos:false
|
||||||
|
Note that there's a know regression with syscons and kernel video
|
||||||
|
drivers: you can't switch back to a console once an X.Org session is
|
||||||
|
started. A new console driver called vt(4) fixes this issue while
|
||||||
|
bringing nice features. It's available in FreeBSD 9.3-RELEASE and
|
||||||
|
10.1-RELEASE but isn't enabled by default. To enable it, put the
|
||||||
|
following line in your /boot/loader.conf:
|
||||||
|
kern.vty=vt
|
||||||
|
```
|
||||||
|
|
||||||
|
It is a real shame that users essentially have no choice but
|
||||||
|
switching from the default syscons to the "new" (unfinished,
|
||||||
|
far from functionally complete) vt console driver.
|
||||||
|
|
||||||
|
The X mouse cursor occasionnally disappears for some unidentified
|
||||||
|
reason. Alt-Tab brings it back.
|
||||||
|
|
||||||
|
DRI
|
||||||
|
---
|
||||||
|
|
||||||
|
Both GDM and the GNOME desktop now require DRI access. At least
|
||||||
|
for ATI video cards, this means that user `gdm`, as well as anyone
|
||||||
|
logging in to a GNOME session, must have access to `/dev/dri/card0`:
|
||||||
|
|
||||||
|
``` plain /etc/devfs.rules linenos:false
|
||||||
|
add path 'dri/card0 mode 0666
|
||||||
|
```
|
||||||
|
|
||||||
|
GDM
|
||||||
|
---
|
||||||
|
|
||||||
|
Gdm won't work out of the box (black screen):
|
||||||
|
`gdm_lang` cannot be set to a non-UTF-8 locale anymore
|
||||||
|
(if the month name in the current date contains an accent,
|
||||||
|
the greeter will abort). Time to bite the UTF-8 bullet, then.
|
||||||
|
|
||||||
|
Oh, and I can't just remove the variable altogether, see below.
|
||||||
|
|
||||||
|
Keymap
|
||||||
|
------
|
||||||
|
|
||||||
|
Interesting issue for GNOME users. I found out that the GDM login screen
|
||||||
|
would always revert to US layout, no matter what. Initially I thought
|
||||||
|
the X server had an incorrect keymap due to HAL device enumeration,
|
||||||
|
so I added the following to my setup:
|
||||||
|
|
||||||
|
```xml /usr/local/share/hal/fdi/policy/99local/10-x11-keymap.fdi
|
||||||
|
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||||
|
|
||||||
|
<deviceinfo version="0.2">
|
||||||
|
<device>
|
||||||
|
<match key="info.capabilities" contains="input.keyboard">
|
||||||
|
<merge key="input.x11_options.XkbLayout" type="string">fr</merge>
|
||||||
|
<merge key="input.x11_options.XkbOptions" type="string">terminate:ctrl_alt_bksp,compose:rctrl</merge>
|
||||||
|
<merge key="input.xkb.layout" type="string">fr</merge>
|
||||||
|
<merge key="input.xkb.options" type="string">terminate:ctrl_alt_bksp,compose:rctrl</merge>
|
||||||
|
</match>
|
||||||
|
</device>
|
||||||
|
</deviceinfo>
|
||||||
|
|
||||||
|
<!-- Legacy X11 options:
|
||||||
|
Option "XkbRules" "xorg"
|
||||||
|
Option "XkbModel" "pc105"
|
||||||
|
Option "XkbLayout" "fr"
|
||||||
|
Option "XkbOptions" "terminate:ctrl_alt_bksp"
|
||||||
|
Option "XkbOptions" "compose:rctrl"
|
||||||
|
-->
|
||||||
|
```
|
||||||
|
|
||||||
|
However this happened to be a total red herring, as by default the
|
||||||
|
port configures Xorg to use devd, not HAL. For devd, I
|
||||||
|
[found out](http://olivier.cochard.me/bidouillage/installation-et-configuration-de-freebsd-comme-poste-de-travail#TOC-Configuration-de-la-langue-du-clavier-sans-HAL)
|
||||||
|
this is achieved
|
||||||
|
using xorg.conf options:
|
||||||
|
|
||||||
|
```
|
||||||
|
Section "InputClass"
|
||||||
|
Identifier "Keyboard Defauls"
|
||||||
|
Driver "keyboard"
|
||||||
|
MatchIsKeyboard "on"
|
||||||
|
Option "XkbLayout" "fr"
|
||||||
|
EndSection
|
||||||
|
```
|
||||||
|
|
||||||
|
But all of this was mostly irrelevant for my setup since I add
|
||||||
|
AutoAddDevices turned off in the X server setup, and the correct
|
||||||
|
layout was hardcoded in xorg.conf. And indeed,
|
||||||
|
starting it with startx yields the expected French layout.
|
||||||
|
|
||||||
|
However, it appears that gnome-shell considers that whatever keymap
|
||||||
|
is configured in the X server probably must be unsuitable, and
|
||||||
|
changes it on its own to a better default based on the current locale
|
||||||
|
(or "us" if no locale is set for gdm).
|
||||||
|
|
||||||
|
Printing
|
||||||
|
========
|
||||||
|
|
||||||
|
I am using an HP MFP1217nfw network printer, which requires the proprietary
|
||||||
|
`print/hplip` and `print/hplip-plugin` packages. These install `print/cups` as
|
||||||
|
a dependency. `print/cups-filters` is not installed as a dependency, but
|
||||||
|
is required anyway, or all print operations will fail with:
|
||||||
|
|
||||||
|
```
|
||||||
|
D [02/Mar/2015:22:24:01 +0100] Print-Job client-error-document-format-not-supported: Unsupported format "application/pdf".
|
||||||
|
```
|
||||||
|
|
@ -0,0 +1,93 @@
|
|||||||
|
---
|
||||||
|
layout: post
|
||||||
|
title: "Bizarre packet filtering on OVH Kimsufi server"
|
||||||
|
date: 2015-03-05 23:11:24 +0100
|
||||||
|
comments: true
|
||||||
|
categories:
|
||||||
|
---
|
||||||
|
|
||||||
|
Context
|
||||||
|
=======
|
||||||
|
|
||||||
|
I am leasing a Kimsufi dedicated server from OVH,
|
||||||
|
`ks3269175.kimsufi.com` aka `5.39.82.72`. Since early
|
||||||
|
January 2015, TCP connections to that machine (and in
|
||||||
|
particular SSH connections) are sporadically hanging.
|
||||||
|
|
||||||
|
Analysis of the issue
|
||||||
|
=====================
|
||||||
|
|
||||||
|
This machine is on a network whose default router
|
||||||
|
is `5.39.82.254` (`vss-gw-6k.fr.eu`).
|
||||||
|
|
||||||
|
As far as I was able to determine, this is a virtual
|
||||||
|
router, load balanced using [GLBP](http://www.freeccnastudyguide.com/study-guides/ccna/ch14/vrrp-hsrp-glbp/) .
|
||||||
|
The two actual routers are:
|
||||||
|
|
||||||
|
* `vss-9b-6k.fr.eu`, MAC address `00:07:b4:00:01:01`
|
||||||
|
* `vss-9a-6k.fr.eu`, MAC address `00:07:b4:00:01:02`
|
||||||
|
|
||||||
|
When attempting to establish an SSH connection from the outside
|
||||||
|
to that machine, the first data packet in the connection
|
||||||
|
appears to be dropped if sent through `00:07:b4:00:01:01`.
|
||||||
|
|
||||||
|
This does not appear to be related to any kind of stateful
|
||||||
|
firewalling system. As an experiment, I wrote a simple Scapy
|
||||||
|
script that loops sending identical TCP segments, one per second,
|
||||||
|
through both of the above MAC addresses, to a remote address
|
||||||
|
outside OVH.
|
||||||
|
|
||||||
|
A tcpdump on the dedicated server shows the stream of outgoing packets:
|
||||||
|
|
||||||
|
```
|
||||||
|
23:04:15.390421 00:22:4d:83:36:80 > 00:07:b4:00:01:01, ethertype IPv4 (0x0800), length 115: 5.39.82.72.2122 > 194.98.77.4.60347: Flags [P.], seq 0:49, ack 0, win 8192, options [TS val 123 ecr 456,eol], length 49
|
||||||
|
23:04:15.406734 00:22:4d:83:36:80 > 00:07:b4:00:01:02, ethertype IPv4 (0x0800), length 115: 5.39.82.72.2222 > 194.98.77.4.60347: Flags [P.], seq 0:49, ack 0, win 8192, options [TS val 123 ecr 456,eol], length 49
|
||||||
|
23:04:16.424437 00:22:4d:83:36:80 > 00:07:b4:00:01:01, ethertype IPv4 (0x0800), length 115: 5.39.82.72.2122 > 194.98.77.4.60348: Flags [P.], seq 0:49, ack 0, win 8192, options [TS val 123 ecr 456,eol], length 49
|
||||||
|
23:04:16.441460 00:22:4d:83:36:80 > 00:07:b4:00:01:02, ethertype IPv4 (0x0800), length 115: 5.39.82.72.2222 > 194.98.77.4.60348: Flags [P.], seq 0:49, ack 0, win 8192, options [TS val 123 ecr 456,eol], length 49
|
||||||
|
23:04:17.459641 00:22:4d:83:36:80 > 00:07:b4:00:01:01, ethertype IPv4 (0x0800), length 115: 5.39.82.72.2122 > 194.98.77.4.60349: Flags [P.], seq 0:49, ack 0, win 8192, options [TS val 123 ecr 456,eol], length 49
|
||||||
|
23:04:17.476966 00:22:4d:83:36:80 > 00:07:b4:00:01:02, ethertype IPv4 (0x0800), length 115: 5.39.82.72.2222 > 194.98.77.4.60349: Flags [P.], seq 0:49, ack 0, win 8192, options [TS val 123 ecr 456,eol], length 49
|
||||||
|
```
|
||||||
|
|
||||||
|
Now observing traffic on the remote machine, we see only those
|
||||||
|
packets that went through 00:07:b4:00:01:02:
|
||||||
|
|
||||||
|
```
|
||||||
|
23:05:13.322004 IP 5.39.82.72.2222 > 194.98.77.4.60403: Flags [P.], ack 0, win 8192, options [TS val 123 ecr 456,eol], length 49
|
||||||
|
23:05:14.355176 IP 5.39.82.72.2222 > 194.98.77.4.60404: Flags [P.], ack 0, win 8192, options [TS val 123 ecr 456,eol], length 49
|
||||||
|
23:05:15.390245 IP 5.39.82.72.2222 > 194.98.77.4.60405: Flags [P.], ack 0, win 8192, options [TS val 123 ecr 456,eol], length 49
|
||||||
|
23:05:16.426968 IP 5.39.82.72.2222 > 194.98.77.4.60406: Flags [P.], ack 0, win 8192, options [TS val 123 ecr 456,eol], length 49
|
||||||
|
23:05:17.456869 IP 5.39.82.72.2222 > 194.98.77.4.60407: Flags [P.], ack 0, win 8192, options [TS val 123 ecr 456,eol], length 49
|
||||||
|
23:05:18.494918 IP 5.39.82.72.2222 > 194.98.77.4.60408: Flags [P.], ack 0, win 8192, options [TS val 123 ecr 456,eol], length 49
|
||||||
|
```
|
||||||
|
|
||||||
|
Resolution
|
||||||
|
==========
|
||||||
|
|
||||||
|
None so far. OVH has been notified of the problem (TICKET#2015010719008317)
|
||||||
|
and all analysis elements in my possession have been conveyed to them,
|
||||||
|
to no avail so far: the machine has been essentially unusable for the
|
||||||
|
past two months and counting.
|
||||||
|
|
||||||
|
**Update 2015-03-20** OVH say they identified a problem and are working on
|
||||||
|
a fix. No more SSH failure observed since 2015-03-18 in the afternoon,
|
||||||
|
so apparently the fix did work. Still waiting for a post-mortem explanation
|
||||||
|
as to what went wrong, and why it took them so long to ackonwledge,
|
||||||
|
investigate, and resolve the problem.
|
||||||
|
|
||||||
|
**Update 2015-04-01** Service remains stable, in that failures are not
|
||||||
|
observed anymore. OVH indicates they are still discussing the underlying
|
||||||
|
issue with Cisco, and the fix is not completed yet.
|
||||||
|
|
||||||
|
**Update 2015-06-17** Service remains stable. OVH indicates that they have
|
||||||
|
identified the origin of the issue, a fix is available, and they have
|
||||||
|
scheduled its deployment.
|
||||||
|
|
||||||
|
**Update 2015-09-17** At long last, OVH confirmed that the problem is
|
||||||
|
indeed resolved on their side, and agreed to extend my subscription
|
||||||
|
by 3 months at no cost in compensation, which is decent of them.
|
||||||
|
|
||||||
|
Acknowledgements
|
||||||
|
================
|
||||||
|
|
||||||
|
Thanks to Pierre Beyssac for hinting at GLBP, and to Fabian at OVH
|
||||||
|
support for following up internally on this issue.
|
@ -0,0 +1,39 @@
|
|||||||
|
---
|
||||||
|
layout: post
|
||||||
|
title: "GPhoto2 fails to connect to Canon EOS 20D"
|
||||||
|
date: 2015-03-12 18:43:21 +0100
|
||||||
|
comments: true
|
||||||
|
categories:
|
||||||
|
---
|
||||||
|
|
||||||
|
For the past few months, [Digikam](https://www.digikam.org/)
|
||||||
|
(and the underlying [GPhoto2](http://gphoto.sourceforge.net/) library)
|
||||||
|
failed to connect to my Canon EOS 20D camera:
|
||||||
|
|
||||||
|
```
|
||||||
|
canon/canon/usb.c (2): Initializing the (USB) camera.
|
||||||
|
canon/canon/usb.c (2): canon_usb_camera_init()
|
||||||
|
canon/canon/usb.c (2): canon_usb_identify: USB ID match 0x04a9:0x30eb (model name "Canon:EOS 20D (normal mode)")
|
||||||
|
gp_context_status (2): Detected a 'Canon:EOS 20D (normal mode)'.
|
||||||
|
Detected a 'Canon:EOS 20D (normal mode)'.
|
||||||
|
gp_port_usb_msg_read (3): Reading message (request=0xc value=0x55 index=0x0 size=1=0x1)...
|
||||||
|
gp_port_usb_msg_read (3): Read 0 = 0x0 out of 1 bytes USB message (request=0xc value=0x55 index=0x0 size=1=0x1) (empty hexdump of empty buffer)
|
||||||
|
gp_context_error (0): Could not establish initial contact with camera
|
||||||
|
|
||||||
|
*** Error ***
|
||||||
|
Could not establish initial contact with camera
|
||||||
|
gp_port_close (2): Closing port...
|
||||||
|
gp_context_error (0): An error occurred in the io-library ('Unknown error'): No error description available
|
||||||
|
```
|
||||||
|
|
||||||
|
Upgrading various components of my system did not help, so I ended up
|
||||||
|
suspecting a possible issue with the USB stack, which prompted a
|
||||||
|
[major OS upgrade]({% post_url 2015-02-18-upgrading-to-freebsd-10-1-release %})
|
||||||
|
from which I am still slowly recovering.
|
||||||
|
|
||||||
|
It turned out that the upgrade did not help. Further investigation and
|
||||||
|
debugging finally allowed me to zero in on the cause of the problem,
|
||||||
|
which turned out to be a bug in libgphoto2... which coincidentally
|
||||||
|
got [fixed](http://sourceforge.net/p/gphoto/code/15384/)
|
||||||
|
hours before I identified it on my own.
|
||||||
|
|
@ -0,0 +1,29 @@
|
|||||||
|
---
|
||||||
|
layout: post
|
||||||
|
title: "GnuPG 2.1.2 doesn't work with caff"
|
||||||
|
date: 2015-05-09 01:50:02 +0200
|
||||||
|
comments: true
|
||||||
|
categories:
|
||||||
|
---
|
||||||
|
|
||||||
|
Today I signed a GnuPG key using my air-gapped master private key,
|
||||||
|
and then tried to send the signature to the key owner from
|
||||||
|
my network-connected workstation using [caff](https://wiki.debian.org/caff).
|
||||||
|
This failed miserably, with caff unable to find a valid signature,
|
||||||
|
and `gpg --list-secret-keys` missing the (stub) private key.
|
||||||
|
|
||||||
|
It turns out that I had inadvertently upgraded GnuPG on this workstation
|
||||||
|
to version 2.1.2, which has a [completely revamped secret keys handling](https://www.gnupg.org/faq/whats-new-in-2.1.html#nosecring):
|
||||||
|
secret key material is now entirely handled by `gpg-agent`, and
|
||||||
|
the `--secret-keyring` command line option for `gpg` (which `caff`
|
||||||
|
depends on) is now
|
||||||
|
[obsolete](https://lists.gnupg.org/pipermail/gnupg-devel/2014-December/029296.html).
|
||||||
|
|
||||||
|
GnuPG 2.1 apparently also chokes on some legacy keys, and the work-around
|
||||||
|
is to [reimport the keyring manually](http://jo-ke.name/wp/?p=111).
|
||||||
|
|
||||||
|
`caff` has been [fixed](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=771857)
|
||||||
|
to support GnuPG 2.1. However this depends on GnuPG 2.1.3 or newer,
|
||||||
|
which is [not in the ports tree yet](https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=200057),
|
||||||
|
so for the time being I have reverted
|
||||||
|
to the "stable" 2.0 release: `portmaster -o security/gnupg20 gnupg`.
|
@ -0,0 +1,42 @@
|
|||||||
|
---
|
||||||
|
layout: post
|
||||||
|
title: "Subsonic, FreeBSD 10, and UTF-8"
|
||||||
|
date: 2015-07-30 15:00:00 +0200
|
||||||
|
comments: true
|
||||||
|
categories:
|
||||||
|
---
|
||||||
|
|
||||||
|
In the context of
|
||||||
|
[upgrading to FreeBSD 10]({% post_url 2015-02-18-upgrading-to-freebsd-10-1-release %}),
|
||||||
|
I reinstalled the [Subsonic media server](http://www.subsonic.org/) from ports.
|
||||||
|
|
||||||
|
Servlet container
|
||||||
|
=================
|
||||||
|
|
||||||
|
It turns out that using Jetty as the underlying servlet container would not work:
|
||||||
|
I would get an obscure Java exception during various operations:
|
||||||
|
|
||||||
|
```
|
||||||
|
Message /WEB-INF/jsp/settingsHeader.jsp(12,0) PWC6340: According to the TLD, rtexprvalue is true, and deferred-value is specified for the attribute items of the tag handler org.apache.taglibs.standard.tag.rt.core.ForTokensTag, but the argument for the setter method is not a java.lang.Object
|
||||||
|
```
|
||||||
|
|
||||||
|
Switching to Tomcat 8 worked.
|
||||||
|
|
||||||
|
Changing filesystem charset to UTF-8
|
||||||
|
====================================
|
||||||
|
|
||||||
|
I had been using ISO-8859-15 filenames for ever. As part of the OS ugprade,
|
||||||
|
I decided it was more than time to switch the whole system to UTF-8. (One
|
||||||
|
specific issue that prompted this was the fact that GDM now seems to not
|
||||||
|
support ISO 8859-15 GECOS user names anymore).
|
||||||
|
|
||||||
|
In order to have Subsonic properly handle file and directory names encoded
|
||||||
|
in UTF-8, I had to set LANG for it:
|
||||||
|
|
||||||
|
```plain /etc/rc.conf.d/tomcat8
|
||||||
|
export LANG=fr_FR.UTF-8
|
||||||
|
```
|
||||||
|
|
||||||
|
*and* to re-create the database from scratch (remove everything from
|
||||||
|
`/var/subsonic/db/` *except* `subsonic.script`).
|
||||||
|
|
@ -0,0 +1,116 @@
|
|||||||
|
---
|
||||||
|
layout: post
|
||||||
|
title: "Digikam, dependencies, and building KDE libraries"
|
||||||
|
date: 2015-09-05 12:49:51 +0200
|
||||||
|
comments: true
|
||||||
|
categories:
|
||||||
|
---
|
||||||
|
|
||||||
|
Context
|
||||||
|
=======
|
||||||
|
|
||||||
|
I have a very basic KDE environment, just enough to be able to run
|
||||||
|
Digikam. Anytime I try to delete a photo, I get an error message:
|
||||||
|
|
||||||
|
```plain
|
||||||
|
Could not start process
|
||||||
|
Unable to create io-slave: klauncher said: Unknown protocol 'trash'.
|
||||||
|
```
|
||||||
|
|
||||||
|
Oh, well. So I guess the FreeBSD port for Digikam fails to list a
|
||||||
|
required dependency. Fixing this is a long (ongoing) journey,
|
||||||
|
with lots of interesting adventures all along. This is not a step
|
||||||
|
by step buid, but a series of notes about various traps I fell
|
||||||
|
on the way.
|
||||||
|
|
||||||
|
KDE libraries versioning
|
||||||
|
========================
|
||||||
|
|
||||||
|
Executive summary: you cannot build KDE libraries (such
|
||||||
|
as sysutils/kfilemetadata) of a given version if it does
|
||||||
|
not match exactly the installed version of kdelibs:
|
||||||
|
|
||||||
|
```plain Build log
|
||||||
|
[...]
|
||||||
|
===> Registering installation for kfilemetadata-4.14.3_2 as automatic
|
||||||
|
pkg-static: Unable to access file /var/ports/work/usr/ports/sysutils/kfilemetadata/work/stage/usr/local/lib/libkfilemetadata.so.4.14.3: No such file or directory
|
||||||
|
*** Error code 74
|
||||||
|
```
|
||||||
|
|
||||||
|
kfilemetadata fails to install. That file is indeed missing; the staging area
|
||||||
|
does however contain a libkfilemetadata.so.4.14.2. So why does the source package
|
||||||
|
of 4.14.3 generate a 4.14.2 library?
|
||||||
|
|
||||||
|
Answer: the library version is not set by the package itself, it comes from a
|
||||||
|
default value from:
|
||||||
|
o
|
||||||
|
|
||||||
|
```plain /usr/local/share/apps/cmake/modules/KDE4Defaults.cmake
|
||||||
|
set(GENERIC_LIB_VERSION "4.14.2")
|
||||||
|
```
|
||||||
|
|
||||||
|
Where does this come from?
|
||||||
|
|
||||||
|
```plain
|
||||||
|
$ pkg which /usr/local/share/apps/cmake/modules/KDE4Defaults.cmake
|
||||||
|
/usr/local/share/apps/cmake/modules/KDE4Defaults.cmake was installed by package kdelibs-4.14.2_5
|
||||||
|
```
|
||||||
|
|
||||||
|
Conclusion: the build dependency for kfilemetadata should list the exact same version of
|
||||||
|
kdelibs, or the port won't build.
|
||||||
|
|
||||||
|
Upgrading kdelibs
|
||||||
|
=================
|
||||||
|
|
||||||
|
Let's instead upgrade kdelibs from binary package, and hope for the best:
|
||||||
|
|
||||||
|
```plain
|
||||||
|
# pkg install -f kdelibs
|
||||||
|
```
|
||||||
|
|
||||||
|
This breaks because the binary package depends on a newer libpng, so let's upgrade this one,
|
||||||
|
keeping the old shared lib intact just in case.
|
||||||
|
|
||||||
|
```plain
|
||||||
|
$ digikam
|
||||||
|
/usr/local/lib/libpng16.so.16: version PNG16_0 required by /usr/local/lib/libkhtml.so.5 not defined
|
||||||
|
```
|
||||||
|
|
||||||
|
Strange that libpng 1.6.16 does not have version 16... Sigh... OK, upgrading from png-1.6.16
|
||||||
|
to png-1.6.18 appears to fix the problem. Back on track...
|
||||||
|
|
||||||
|
Now Digikam displays its splash screen and starts initializing, then segfaults.
|
||||||
|
Hell, I'll have to bite the bullet and upgrade a few hundred packages from ports. :-(
|
||||||
|
|
||||||
|
|
||||||
|
VLC ports variants
|
||||||
|
==================
|
||||||
|
|
||||||
|
The vlc port by defaults depends on QT5, whereas the rest of the
|
||||||
|
KDE system depends on QT4. You can rebuild vlc with the QT4 option,
|
||||||
|
but that's not quite sufficient: actually phonon (part of KDE)
|
||||||
|
depends explicitly on slave port vlc-qt4 (so you can't just install
|
||||||
|
vlc with QT4 option, you have to go through the separate slave
|
||||||
|
port).
|
||||||
|
|
||||||
|
OpenSLP
|
||||||
|
=======
|
||||||
|
|
||||||
|
Digikam does not segault anymore, CUPS is repaired (I had to reinstall
|
||||||
|
it somewhere in the process, as it would silently fail to startup
|
||||||
|
due to a missing symbol) but I still cannot delete photos. On second
|
||||||
|
guess, the missing item might be kde4-runtime, not kde4-workspace.
|
||||||
|
|
||||||
|
Here the dead end is quickly reached: x11/kde4-runtime depends on net/openslp,
|
||||||
|
which won't build because of a security vulnerability... Oh well, let's
|
||||||
|
build with `DISABLE_VULNERABILITIES=yes`...
|
||||||
|
|
||||||
|
Epilogue
|
||||||
|
========
|
||||||
|
|
||||||
|
At long last, small victory: the missing piece was indeed x11/kde4-runtime.
|
||||||
|
The problem has been [reported](https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=203222).
|
||||||
|
I must admit I'm getting sick and tired of the amount of breakage I need to
|
||||||
|
investigate and fix most times I want to install something using the ports system.
|
||||||
|
Desktop work nowadays requires humongous dependency closures that are extremely
|
||||||
|
fragile, and I'm very much tempted these days to switch back to Debian for that.
|
@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
layout: post
|
||||||
|
title: "FreeBSD Unicode symbols support"
|
||||||
|
date: 2015-10-01 22:38:03 +0200
|
||||||
|
comments: true
|
||||||
|
categories:
|
||||||
|
---
|
||||||
|
|
||||||
|
The font packages available on a desktop environment with a default
|
||||||
|
FreeBSD installation do not support the
|
||||||
|
[Miscellaneous Symbols and Pictographs](https://en.wikipedia.org/wiki/Miscellaneous_Symbols_and_Pictographs)
|
||||||
|
Unicode range (U+1F300..U+1F5FF), which contains various dingbats
|
||||||
|
and emoji.
|
||||||
|
|
||||||
|
A nice vector font providing these symbols is however available
|
||||||
|
from ports: `x11-fonts/symbola`.
|
||||||
|
|
||||||
|
(Note: `x11-fonts/gnu-unifont` and `x11-fonts/gnu-unifont-ttf` are not
|
||||||
|
nearly as exhaustive.)
|
||||||
|
|
||||||
|
**Update 2017-01-23** Similar problem on Debian (CIRCLED LATIN CAPITAL LETTER V
|
||||||
|
(U+24CB), Ⓥ was missing). Resolved by installing `fonts-linuxlibertine`.
|
||||||
|
|
@ -0,0 +1,61 @@
|
|||||||
|
---
|
||||||
|
layout: post
|
||||||
|
title: "Setting up GRUB/GPT/LVM"
|
||||||
|
date: 2016-01-19 17:09:09 +0100
|
||||||
|
comments: true
|
||||||
|
categories:
|
||||||
|
---
|
||||||
|
|
||||||
|
Notes on setting up a machine to use GPT partitioning, LVM for
|
||||||
|
all filesystems (including root), and GRUB2 to boot.
|
||||||
|
|
||||||
|
Starting with a vanilla Debian 7.8 setup. Here we assume that /dev/sdb
|
||||||
|
is the disk that will ultimately contain the system.
|
||||||
|
|
||||||
|
GPT setup
|
||||||
|
=========
|
||||||
|
|
||||||
|
(parted) mklabel gpt
|
||||||
|
(parted) mkpart primary 2048s 4095s
|
||||||
|
(parted) set 1 bios_grub on
|
||||||
|
(parted) name 1 "BIOS Boot Partition"
|
||||||
|
(parted) mkpart primary 4096s 100%
|
||||||
|
(parted) set 2 lvm on
|
||||||
|
(parted) name 2 "LVM"
|
||||||
|
|
||||||
|
Do we want a swap partition there??? If we don't provision one now,
|
||||||
|
we'll have to swap to an LVM LV.
|
||||||
|
|
||||||
|
LVM setup
|
||||||
|
=========
|
||||||
|
|
||||||
|
pvcreate /dev/sdb1
|
||||||
|
# Format given disk for LVM
|
||||||
|
|
||||||
|
vgcreate tank /dev/sdb2
|
||||||
|
# Create a volume group with that disk as the underlying storage
|
||||||
|
|
||||||
|
lvcreate -n rootfs -L 10G tank
|
||||||
|
lvcreate -n home -l 100%FREE tank
|
||||||
|
|
||||||
|
Filesystem
|
||||||
|
==========
|
||||||
|
|
||||||
|
mkfs.ext4 /dev/mapper/tank-rootfs
|
||||||
|
mkfs.ext4 /dev/mapper/tank-home
|
||||||
|
mount -t ext4 /dev/mapper/tank-rootfs /mnt
|
||||||
|
|
||||||
|
Set up root filesystem (including /boot subdirectory) in /mnt.
|
||||||
|
|
||||||
|
Make sure that /etc/fstab on tank-rootfs points to the proper
|
||||||
|
root fs.
|
||||||
|
|
||||||
|
GRUB2
|
||||||
|
=====
|
||||||
|
|
||||||
|
for i in /dev /dev/pts /proc /sys /run; do mount -B $i /mnt$i; done
|
||||||
|
chroot /mnt
|
||||||
|
rm -f /boot/grub/device.map
|
||||||
|
grub-mkconfig -o /boot/grub/grub.cfg
|
||||||
|
grub-install /dev/sdb
|
||||||
|
|
@ -0,0 +1,21 @@
|
|||||||
|
---
|
||||||
|
layout: post
|
||||||
|
title: "GDM keyboard layout revisited"
|
||||||
|
date: 2016-08-07 01:38:56 +0200
|
||||||
|
comments: true
|
||||||
|
categories:
|
||||||
|
---
|
||||||
|
|
||||||
|
So, I wanted to upgrade Firefox on my FreeBSD 10 workstation,
|
||||||
|
and this in turn caused some supporting libraries to be upgraded,
|
||||||
|
and this broke all sorts of things again.
|
||||||
|
|
||||||
|
Initially gdm just segfaulted. After more manual upgrades,
|
||||||
|
it turned out to work again, except that GDM had lost all localization,
|
||||||
|
and in particular got the wrong keymap for the login screen.
|
||||||
|
|
||||||
|
It appears that gdm_lang is no longer honored (despite still being
|
||||||
|
mentioned in /usr/local/etc/rc.d/gdm): you now need to set gdm's
|
||||||
|
locale in /usr/local/etc/gdm/locale.conf. Also note that unlike
|
||||||
|
other user-editable configuration files, this one is overwritten
|
||||||
|
each time gdm is reinstalled.
|
@ -0,0 +1,25 @@
|
|||||||
|
---
|
||||||
|
layout: post
|
||||||
|
title: "HP Laserjet m1217nfw setup with CUPS on FreeBSD 10"
|
||||||
|
date: 2016-08-27 11:41:57 +0200
|
||||||
|
comments: true
|
||||||
|
categories:
|
||||||
|
---
|
||||||
|
|
||||||
|
This is an entry level network-connected multi function printer. It
|
||||||
|
does not have a built-in Postscript interpreter. Instead, it receives
|
||||||
|
raster data through a proprietary network protocol implemented as
|
||||||
|
a closed source binary plugin to the CUPS filtering system.
|
||||||
|
|
||||||
|
In addition to CUPS, the following ports must be installed:
|
||||||
|
|
||||||
|
* print/hplip
|
||||||
|
* print/hplip-plugin
|
||||||
|
|
||||||
|
Once this is done, the printer can be added to CUPS. The standard
|
||||||
|
socket connection options cannot be used. Instead, the "HPLIP" transport
|
||||||
|
must be selected. The printer URI must be set manually from the output of
|
||||||
|
`hp-makeuri <IP-address>`. (The plugin requires an URI starting with
|
||||||
|
"hp:", and will reject any other device URI with an error message saying
|
||||||
|
"Error: This module is designed to work with HP Printers only").
|
||||||
|
|
@ -0,0 +1,53 @@
|
|||||||
|
---
|
||||||
|
layout: post
|
||||||
|
title: "Chaging default browser for GNOME on Debian"
|
||||||
|
date: 2017-10-11 11:25:00 +0200
|
||||||
|
comments: true
|
||||||
|
categories:
|
||||||
|
---
|
||||||
|
|
||||||
|
Problem position
|
||||||
|
================
|
||||||
|
|
||||||
|
I have `chromium` and `firefox-esr` installed. I want `gvfs-open`
|
||||||
|
to default to the latter when opening a web URL.
|
||||||
|
|
||||||
|
Alternatives
|
||||||
|
============
|
||||||
|
|
||||||
|
There are /etc/alternatives entries for `x-www-browser` and
|
||||||
|
`gnome-www-browser` that can be manually edited using
|
||||||
|
|
||||||
|
# update-alternatives --config gnome-www-browser
|
||||||
|
# update-alternatives --config x-www-browser
|
||||||
|
|
||||||
|
Unsuprisingly, this won't have the desired effect. Life
|
||||||
|
would be too simple...
|
||||||
|
|
||||||
|
GNOME MIME
|
||||||
|
==========
|
||||||
|
|
||||||
|
The default browser for GNOME applications is determined using
|
||||||
|
`gvfs-mime`. Per-user overrides can be specified in
|
||||||
|
`~/.local/share/applications/mimeapps.list`. System-wide
|
||||||
|
defaults are generated by `update-desktop-database` and
|
||||||
|
stored in `/usr/share/applications/mimeinfo.cache`.
|
||||||
|
|
||||||
|
Quoting https://wiki.debian.org/MIME:
|
||||||
|
|
||||||
|
> The mimeinfo.cache is basically a raw reverse cache for the
|
||||||
|
> .desktop information. There is no way to define priorities in it.
|
||||||
|
> To be able to specify default applications, a mimeapps.list file
|
||||||
|
> (previously named defaults.list up to debian 5) must be created.
|
||||||
|
> It can be system-wide (in /usr/share/applications or a subdirectory)
|
||||||
|
> or user-specific (in $HOME/.local/share/applications).
|
||||||
|
|
||||||
|
And indeed the fix was to reorder the list from `mimeinfo.cache`,
|
||||||
|
and create the following file:
|
||||||
|
|
||||||
|
```plain /usr/share/applications/mimeapps.list
|
||||||
|
[Default Applications]
|
||||||
|
x-scheme-handler/http=firefox-esr.desktop;chromium.desktop;google-chrome.desktop;
|
||||||
|
x-scheme-handler/https=firefox-esr.desktop;chromium.desktop;google-chrome.desktop;
|
||||||
|
```
|
||||||
|
|
@ -0,0 +1,146 @@
|
|||||||
|
---
|
||||||
|
layout: post
|
||||||
|
title: "Linux on Dell Precision 7520"
|
||||||
|
date: 2017-11-29 12:00:00 +0100
|
||||||
|
comments: true
|
||||||
|
categories:
|
||||||
|
---
|
||||||
|
|
||||||
|
Three years after the [M4800]({% post_url 2014-11-22-debian-jessie-on-dell-precision-m4800 %}),
|
||||||
|
it's time to upgrade again. Let's start with `debian-9.2.1-amd64-netinst.iso`.
|
||||||
|
|
||||||
|
Booting it up
|
||||||
|
-------------
|
||||||
|
|
||||||
|
My new laptop came with an OEM Windows 10 preinstalled. I wanted to keep it just
|
||||||
|
in case, but it turns out that:
|
||||||
|
|
||||||
|
* since I want BitLocker, SecureBoot needs to be enabled
|
||||||
|
* Ubuntu supports SecureBoot, but Debian does not
|
||||||
|
* since I want LVM+encryption, I need to use Debian
|
||||||
|
|
||||||
|
So I'm ditching the pre-installed Windows (I'll make a VirtualBox VM
|
||||||
|
later on if I really need it).
|
||||||
|
|
||||||
|
Installation
|
||||||
|
------------
|
||||||
|
|
||||||
|
System install is pretty uneventful, except for the fact that the trackpad
|
||||||
|
is apparently not working within the installer. I was able to install
|
||||||
|
on LVM with encryption as desired. I was happy to find MATE as one of the
|
||||||
|
desktop options.
|
||||||
|
|
||||||
|
Post-install customization
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
X11
|
||||||
|
===
|
||||||
|
|
||||||
|
Keyboard and trackpad setup appear to work just fine out of the
|
||||||
|
box (including for GDM).
|
||||||
|
|
||||||
|
The default driver appears to work just fine with the embedded LCD
|
||||||
|
display, but is unable to handle my two external DP monitors
|
||||||
|
(see below).
|
||||||
|
|
||||||
|
Nvidia driver
|
||||||
|
=============
|
||||||
|
|
||||||
|
I am using this laptop on a docking station with two DisplayPort
|
||||||
|
monitors. This works only if the builtin Intel GPU is disabled,
|
||||||
|
and the add-on Nvidia GPU only is enabled.
|
||||||
|
|
||||||
|
Using the nvidia (non-free) driver
|
||||||
|
----------------------------------
|
||||||
|
|
||||||
|
To install the nVidia driver:
|
||||||
|
|
||||||
|
* make sure installed kernel headers (linux-headers) match kernel (linux-image),
|
||||||
|
otherwise DKMS won't build.
|
||||||
|
* install nvidia-driver (note: this will build a kernel module, so requires
|
||||||
|
a working compiler)
|
||||||
|
* install nvidia-xconfig
|
||||||
|
* run `nvidia-xconfig --query-gpu-info` by hand and make note of PCI BusID
|
||||||
|
* run `nvidia-xconfig --busid=PCI:x:x:x` to generate xorg.conf
|
||||||
|
|
||||||
|
BIOS setup
|
||||||
|
----------
|
||||||
|
|
||||||
|
To disable the built-in Intel GPU:
|
||||||
|
|
||||||
|
* Video -> Switchable graphics -> uncheck Enable Switchable Graphics
|
||||||
|
|
||||||
|
(I have also checked Graphics Special Mode, not sure whether this is
|
||||||
|
needed).
|
||||||
|
|
||||||
|
Desktop environment
|
||||||
|
===================
|
||||||
|
|
||||||
|
* Set focus-follows-mouse
|
||||||
|
* Set keyboard shortcut for lock screen to Win+L
|
||||||
|
* Set MATE terminal to white-on-black
|
||||||
|
|
||||||
|
[Disable GNOME Keyring SSH agent](http://william.shallum.net/random-notes/disabling-gnome-keyring-daemon-ssh-agent-on-mate-desktop):
|
||||||
|
|
||||||
|
```
|
||||||
|
$ gsettings get org.mate.session gnome-compat-startup
|
||||||
|
['smproxy', 'keyring']
|
||||||
|
$ gsettings set org.mate.session gnome-compat-startup "['smproxy']"
|
||||||
|
$ gsettings get org.mate.session gnome-compat-startup
|
||||||
|
['smproxy']
|
||||||
|
|
||||||
|
$ mate-session-properties
|
||||||
|
# uncheck SSH Key Agent and maybe others.
|
||||||
|
# This will create a copy of /etc/xdg/autostart/gnome-keyring-ssh.desktop
|
||||||
|
# in ~/.config/autostart, with appropriate settings to turn it off.
|
||||||
|
```
|
||||||
|
|
||||||
|
Sudo configuration
|
||||||
|
==================
|
||||||
|
|
||||||
|
Add myself to group `sudo`.
|
||||||
|
|
||||||
|
APT sources
|
||||||
|
===========
|
||||||
|
|
||||||
|
In `/etc/apt/sources.list`: add contrib and non-free.
|
||||||
|
|
||||||
|
Wifi drivers
|
||||||
|
============
|
||||||
|
|
||||||
|
The Intel wireless drivers require non-free binary components,
|
||||||
|
see https://wiki.debian.org/fr/iwlwifi
|
||||||
|
|
||||||
|
Packages
|
||||||
|
========
|
||||||
|
|
||||||
|
firmware-iwlwifo
|
||||||
|
vim
|
||||||
|
rsync
|
||||||
|
net-tools
|
||||||
|
pcscd
|
||||||
|
apt-transport-https
|
||||||
|
openvpn
|
||||||
|
binutils
|
||||||
|
ltrace
|
||||||
|
strace
|
||||||
|
scdaemon
|
||||||
|
|
||||||
|
Hipchat
|
||||||
|
=======
|
||||||
|
|
||||||
|
Hipchat is linked against Qt libraries that assume OpenSSL 1.0,
|
||||||
|
but Debian provides 1.1.
|
||||||
|
|
||||||
|
Work around:
|
||||||
|
|
||||||
|
```
|
||||||
|
# apt-get install libssl1.0.2
|
||||||
|
# ln -s /usr/lib/x86_64-linux-gnu/libssl.so.1.0.2 /opt/HipChat4/lib/libssl.so
|
||||||
|
# ln -s /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.2 /opt/HipChat4/lib/libcrypto.so
|
||||||
|
```
|
||||||
|
|
||||||
|
(Note: the Atlassian web site gives
|
||||||
|
[incomplete instructions](https://confluence.atlassian.com/hipchatkb/hipchat4-debian-client-doesn-t-connect-859526103.html)
|
||||||
|
-- they do not mention libcrypto).
|
||||||
|
|
@ -0,0 +1,45 @@
|
|||||||
|
---
|
||||||
|
layout: post
|
||||||
|
title: "IPv6 and Netgraph Ethernet pseudo-interface"
|
||||||
|
date: 2017-12-28 12:47:00 +0100
|
||||||
|
comments: true
|
||||||
|
categories:
|
||||||
|
---
|
||||||
|
|
||||||
|
On a NanoBSD firewall, I want to have a separate
|
||||||
|
MAC address on one of the Ethernet interfaces to
|
||||||
|
act as the outer endpoint for IPv6 traffic. This
|
||||||
|
is achieved using a Netgraph eiface:
|
||||||
|
|
||||||
|
```plain /etc/rc.local
|
||||||
|
kldload ng_ether
|
||||||
|
ngctl mkpeer sis0: bridge lower link0
|
||||||
|
ngctl name sis0:lower sis0bridge
|
||||||
|
ngctl connect sis0: sis0bridge: upper link1
|
||||||
|
ngctl mkpeer sis0bridge: eiface link2 ether
|
||||||
|
ngctl msg sis0: setpromisc 1
|
||||||
|
ngctl msg sis0: setautosrc 0
|
||||||
|
|
||||||
|
ifconfig ngeth0 link 06:00:00:00:00:06
|
||||||
|
```
|
||||||
|
|
||||||
|
Note that this does *not* include an ifconfig call to
|
||||||
|
set the interface's IPv6 address: this is done by
|
||||||
|
devd, which calls the boot scripts' ifconfig routine
|
||||||
|
when the interface comes up. Thus I have the following
|
||||||
|
line in /etc/rc.conf:
|
||||||
|
|
||||||
|
```plain /etc/rc.conf
|
||||||
|
ifconfig_ngeth0_ipv6="inet6 fe80::6/64"
|
||||||
|
```
|
||||||
|
|
||||||
|
If instead of this line I have an explicit ifconfig
|
||||||
|
in `/etc/rc.local` then there is a race condition between
|
||||||
|
rc.local and devd. If devd runs last, the boot scripts
|
||||||
|
won't see any IPv6 address configured for the newly
|
||||||
|
created interface in `/etc/rc.conf`, and they will set
|
||||||
|
`ifdisabled` on it (blocking all IPv6 traffic, and marking
|
||||||
|
the configured link local address as "tentative").
|
||||||
|
If devd runs first, the problem is dormant, because setting
|
||||||
|
the link local address clears `ifdisabled` as a side effect.
|
||||||
|
|
@ -0,0 +1,34 @@
|
|||||||
|
---
|
||||||
|
layout: post
|
||||||
|
title: "Add collation to Postgres post-initdb"
|
||||||
|
date: 2018-05-16 14:09:15 +0200
|
||||||
|
comments: true
|
||||||
|
categories:
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
Note: this is for old Postgres installs that lack the
|
||||||
|
pg_import_system_collations function.
|
||||||
|
|
||||||
|
We need to operate as user so that the new collation has the proper
|
||||||
|
ownership. We connect to template1, because by default we can't connect
|
||||||
|
to template0.
|
||||||
|
|
||||||
|
$ sudo -u postgres psql -d template1
|
||||||
|
|
||||||
|
Now allow ourselves to connect to template0
|
||||||
|
|
||||||
|
template1=# UPDATE pg_database SET datallowconn = TRUE WHERE datname = 'template0';
|
||||||
|
template1=# \c template0
|
||||||
|
|
||||||
|
Create collation in the proper schema (pg_catalog). Quote collation name
|
||||||
|
to preserve capitalization.
|
||||||
|
|
||||||
|
template0=# CREATE COLLATION pg_catalog."en_US" (LOCALE='en_US.utf8');
|
||||||
|
|
||||||
|
Now reset datallowconn to FALSE.
|
||||||
|
|
||||||
|
template0=# UPDATE pg_database SET datallowconn = FALSE WHERE datname = 'template0';
|
||||||
|
|
||||||
|
Now any database created from the template0 template will inherit the new
|
||||||
|
collation.
|
@ -0,0 +1,32 @@
|
|||||||
|
---
|
||||||
|
layout: post
|
||||||
|
title: "HPLIP won't print"
|
||||||
|
date: 2018-07-31 13:08:26 +0200
|
||||||
|
comments: true
|
||||||
|
categories:
|
||||||
|
---
|
||||||
|
|
||||||
|
Symptom
|
||||||
|
-------
|
||||||
|
|
||||||
|
Printing to HP MFP1217nfw fails with "Filter failed". No useful
|
||||||
|
information in CUPS logs even at LogLevel debug. Message found
|
||||||
|
in `/var/log/daemon.log`:
|
||||||
|
|
||||||
|
Jul 31 13:03:10 malaussene hpcups[3083]: common/utils.c 130: validate_plugin_version() Plugin version[3.14.6] mismatch with HPLIP version[3.16.11]
|
||||||
|
Jul 31 13:03:10 malaussene hpcups[3083]: common/utils.c 157: Plugin version is not matching
|
||||||
|
|
||||||
|
Probable cause
|
||||||
|
--------------
|
||||||
|
|
||||||
|
Upgrade of HPLIP Debian packages without corresponding (manual) update
|
||||||
|
of the proprietary/binary plugin.
|
||||||
|
|
||||||
|
Fix
|
||||||
|
---
|
||||||
|
|
||||||
|
Upgrading the plugin using:
|
||||||
|
|
||||||
|
# hp-plugin
|
||||||
|
|
||||||
|
proved effective.
|
@ -0,0 +1,72 @@
|
|||||||
|
---
|
||||||
|
layout: post
|
||||||
|
title: "Debian setup for personal laptop"
|
||||||
|
date: 2019-02-02 11:36:09 +0100
|
||||||
|
comments: true
|
||||||
|
categories:
|
||||||
|
---
|
||||||
|
|
||||||
|
Setup redone after complete loss of trusty seven years old hard drive
|
||||||
|
due to mechanical failure. Replaced with SSD, whole system reinstalled
|
||||||
|
with fresh Debian 9.6.0.
|
||||||
|
|
||||||
|
Packages installation
|
||||||
|
=====================
|
||||||
|
|
||||||
|
apt upgrade
|
||||||
|
|
||||||
|
packages:
|
||||||
|
zsh
|
||||||
|
mutt
|
||||||
|
git
|
||||||
|
subversion
|
||||||
|
whois
|
||||||
|
gnumeric
|
||||||
|
net-tools
|
||||||
|
traceroute
|
||||||
|
apt-file
|
||||||
|
|
||||||
|
packages de dépôts tiers :
|
||||||
|
virtualbox
|
||||||
|
|
||||||
|
package de source non-free :
|
||||||
|
firmware-iwlwifi
|
||||||
|
|
||||||
|
À la main :
|
||||||
|
firefox
|
||||||
|
Lastpass
|
||||||
|
Lastpass binary component (binaire à copier et JSON à générer
|
||||||
|
dans ~/.mozilla)
|
||||||
|
|
||||||
|
Driver Nvidia
|
||||||
|
=============
|
||||||
|
|
||||||
|
Pour fonctionnement correct de l'accélération 3D dans VirtualBox
|
||||||
|
(pour Fusion 360)
|
||||||
|
|
||||||
|
linux-headers-$(uname -r|sed 's/[^-]*-[^-]*-//')
|
||||||
|
nvidia-driver depuis le dépôt stretch-backports
|
||||||
|
|
||||||
|
Dans xorg.conf, override manuel DPI 100x100 (défaut 143x144 : fontes
|
||||||
|
trop grandes)
|
||||||
|
|
||||||
|
Customize
|
||||||
|
=========
|
||||||
|
|
||||||
|
ln -s Téléchargements ftp
|
||||||
|
|
||||||
|
Gnome-terminal:
|
||||||
|
palette prédéfinie blanc sur noir
|
||||||
|
|
||||||
|
Apparence/fenêtres
|
||||||
|
focus follows mouse
|
||||||
|
|
||||||
|
chsh zsh
|
||||||
|
|
||||||
|
checkout scripts, ln -s .zshrc
|
||||||
|
|
||||||
|
xmodmap multi_key
|
||||||
|
|
||||||
|
firefox
|
||||||
|
setup sync
|
||||||
|
middlemouse.contentLoadURL <- true
|
@ -0,0 +1,38 @@
|
|||||||
|
---
|
||||||
|
layout: post
|
||||||
|
title: "Manual Firefox install on Debian"
|
||||||
|
date: 2019-05-11 15:26:15 +0200
|
||||||
|
comments: true
|
||||||
|
categories:
|
||||||
|
---
|
||||||
|
|
||||||
|
# Install downloaded archive
|
||||||
|
|
||||||
|
Download and unpack archive under `/opt`. Note: top level directory
|
||||||
|
in archive is `firefox`, does not contain version.
|
||||||
|
|
||||||
|
# Creating a GNOME launcher
|
||||||
|
|
||||||
|
From https://wiki.debian.org/Firefox:
|
||||||
|
|
||||||
|
```plain /usr/share/applications/firefox.desktop
|
||||||
|
[Desktop Entry]
|
||||||
|
Name=Firefox ''Your version''
|
||||||
|
Comment=Web Browser
|
||||||
|
GenericName=Web Browser
|
||||||
|
X-GNOME-FullName=Firefox ''Your version'' Web Browser
|
||||||
|
Exec=/path/to/firefox/firefox %u
|
||||||
|
Terminal=false
|
||||||
|
X-MultipleArgs=false
|
||||||
|
Type=Application
|
||||||
|
Icon=/path/to/firefox/browser/chrome/icons/default/default128.png
|
||||||
|
Categories=Network;WebBrowser;
|
||||||
|
MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/vnd.mozilla.xul+xml;application/rss+xml;application/rdf+xml;image/gif;image/jpeg;image/png;x-scheme-handler/http;x-scheme-handler/https;
|
||||||
|
StartupWMClass=Firefox
|
||||||
|
StartupNotify=true
|
||||||
|
```
|
||||||
|
|
||||||
|
# Setting it as default
|
||||||
|
|
||||||
|
See [previous post]({% post_url 2017-10-11-chaging-default-browser-for-gnome-on-debian %}).
|
||||||
|
|
@ -0,0 +1,34 @@
|
|||||||
|
---
|
||||||
|
layout: post
|
||||||
|
title: "Arduino boot loader on cheap Chinese BluePill clone"
|
||||||
|
date: 2019-08-11 16:59:46 +0200
|
||||||
|
comments: true
|
||||||
|
categories:
|
||||||
|
---
|
||||||
|
|
||||||
|
Boot modes: flash/ROM (system memory)/RAM
|
||||||
|
Bootloader or not/purpose/various programming methods
|
||||||
|
* UART
|
||||||
|
* ST-LINK
|
||||||
|
* DFU
|
||||||
|
Arduino boot loader: dual device issue (serial ACM vs DFU)
|
||||||
|
* reset -> loader (3s) -> user app
|
||||||
|
* when ACM app detects DTR toggle, reset USB bus (or reset MCU???)
|
||||||
|
and switch back to DFU loader
|
||||||
|
* rogerclarke
|
||||||
|
* support recently integrated in official STM32duino
|
||||||
|
Bare boot loader: DFU only, by default one shot at reset, no support
|
||||||
|
for switching back through DTR (no ACM!)
|
||||||
|
Requires a sketch which implements the ACM dev (SerialUSB)
|
||||||
|
For some reason the distributed combined loader+sketch does not
|
||||||
|
work.
|
||||||
|
Perpetual loader mode (stay in DFU)
|
||||||
|
Once first sketch is programmed, it contains ACM support for
|
||||||
|
loading the next one... *If* the correct programming mode is
|
||||||
|
selected while building the sketch!
|
||||||
|
|
||||||
|
Alternative: HID bootloader (not thoroughly investigated)
|
||||||
|
|
||||||
|
Reliability issue (host sometimes unable to open ACM)
|
||||||
|
|
||||||
|
ST-LINK is superior (no 3s delay at boot time, reliable programming)
|
@ -0,0 +1,54 @@
|
|||||||
|
---
|
||||||
|
layout: post
|
||||||
|
title: "Poor man's CNC plotter"
|
||||||
|
date: 2019-12-24 15:36:20 +0100
|
||||||
|
comments: true
|
||||||
|
categories:
|
||||||
|
---
|
||||||
|
|
||||||
|
Initial GRBL settings:
|
||||||
|
|
||||||
|
````
|
||||||
|
$0 = 10 (Step pulse time, microseconds)
|
||||||
|
$1 = 25 (Step idle delay, milliseconds)
|
||||||
|
$2 = 0 (Step pulse invert, mask)
|
||||||
|
$3 = 0 (Step direction invert, mask)
|
||||||
|
$4 = 0 (Invert step enable pin, boolean)
|
||||||
|
$5 = 0 (Invert limit pins, boolean)
|
||||||
|
$6 = 0 (Invert probe pin, boolean)
|
||||||
|
$10 = 1 (Status report options, mask)
|
||||||
|
$11 = 0.010 (Junction deviation, millimeters)
|
||||||
|
$12 = 0.002 (Arc tolerance, millimeters)
|
||||||
|
$13 = 0 (Report in inches, boolean)
|
||||||
|
$20 = 0 (Soft limits enable, boolean)
|
||||||
|
$21 = 0 (Hard limits enable, boolean)
|
||||||
|
$22 = 0 (Homing cycle enable, boolean)
|
||||||
|
$23 = 0 (Homing direction invert, mask)
|
||||||
|
$24 = 25.000 (Homing locate feed rate, mm/min)
|
||||||
|
$25 = 500.000 (Homing search seek rate, mm/min)
|
||||||
|
$26 = 250 (Homing switch debounce delay, milliseconds)
|
||||||
|
$27 = 1.000 (Homing switch pull-off distance, millimeters)
|
||||||
|
$30 = 255 (Maximum spindle speed, RPM)
|
||||||
|
$31 = 1 (Minimum spindle speed, RPM)
|
||||||
|
$32 = 0 (Laser-mode enable, boolean)
|
||||||
|
$100 = 6.700 (X-axis travel resolution, step/mm)
|
||||||
|
$101 = 8.000 (Y-axis travel resolution, step/mm)
|
||||||
|
$102 = 250.000 (Z-axis travel resolution, step/mm)
|
||||||
|
$110 = 4000.000 (X-axis maximum rate, mm/min)
|
||||||
|
$111 = 4000.000 (Y-axis maximum rate, mm/min)
|
||||||
|
$112 = 500.000 (Z-axis maximum rate, mm/min)
|
||||||
|
$120 = 500.000 (X-axis acceleration, mm/sec^2)
|
||||||
|
$121 = 500.000 (Y-axis acceleration, mm/sec^2)
|
||||||
|
$122 = 10.000 (Z-axis acceleration, mm/sec^2)
|
||||||
|
$130 = 40.000 (X-axis maximum travel, millimeters)
|
||||||
|
$131 = 30.000 (Y-axis maximum travel, millimeters)
|
||||||
|
$132 = 200.000 (Z-axis maximum travel, millimeters)
|
||||||
|
````
|
||||||
|
|
||||||
|
Switch to 16x micro-stepping:
|
||||||
|
````
|
||||||
|
>>> $100=107.2
|
||||||
|
ok
|
||||||
|
>>> $101=128
|
||||||
|
ok
|
||||||
|
````
|
@ -0,0 +1,9 @@
|
|||||||
|
---
|
||||||
|
layout: post
|
||||||
|
title: "Color emoji in mate-terminal on Debian"
|
||||||
|
date: 2023-05-06 00:58:00 +0100
|
||||||
|
comments: true
|
||||||
|
categories:
|
||||||
|
---
|
||||||
|
|
||||||
|
Easy peasy: `apt install apt install fonts-noto-color-emoji`
|
Loading…
Reference in New Issue