diff --git a/_source/_includes/custom/asides/adsense.html b/_source/_includes/custom/asides/adsense.html new file mode 100644 index 0000000..999c4ee --- /dev/null +++ b/_source/_includes/custom/asides/adsense.html @@ -0,0 +1,10 @@ + + + + diff --git a/_source/_posts/2014-11-22-debian-jessie-on-dell-precision-m4800.markdown b/_source/_posts/2014-11-22-debian-jessie-on-dell-precision-m4800.markdown new file mode 100644 index 0000000..edfbb03 --- /dev/null +++ b/_source/_posts/2014-11-22-debian-jessie-on-dell-precision-m4800.markdown @@ -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 +``` diff --git a/_source/_posts/2014-11-22-setting-up-octopress.markdown b/_source/_posts/2014-11-22-setting-up-octopress.markdown new file mode 100644 index 0000000..14ca3a7 --- /dev/null +++ b/_source/_posts/2014-11-22-setting-up-octopress.markdown @@ -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/ diff --git a/_source/_posts/2015-02-18-upgrading-to-freebsd-10-1-release.markdown b/_source/_posts/2015-02-18-upgrading-to-freebsd-10-1-release.markdown new file mode 100644 index 0000000..e9828f5 --- /dev/null +++ b/_source/_posts/2015-02-18-upgrading-to-freebsd-10-1-release.markdown @@ -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 + + + + + + fr + terminate:ctrl_alt_bksp,compose:rctrl + fr + terminate:ctrl_alt_bksp,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". +``` + diff --git a/_source/_posts/2015-03-05-bizarre-packet-filtering-on-ovh-kimsufi-server.markdown b/_source/_posts/2015-03-05-bizarre-packet-filtering-on-ovh-kimsufi-server.markdown new file mode 100644 index 0000000..ff55b49 --- /dev/null +++ b/_source/_posts/2015-03-05-bizarre-packet-filtering-on-ovh-kimsufi-server.markdown @@ -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. diff --git a/_source/_posts/2015-03-12-gphoto-fails-to-connect-to-canon-eos-20d.markdown b/_source/_posts/2015-03-12-gphoto-fails-to-connect-to-canon-eos-20d.markdown new file mode 100644 index 0000000..b7e0c40 --- /dev/null +++ b/_source/_posts/2015-03-12-gphoto-fails-to-connect-to-canon-eos-20d.markdown @@ -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. + diff --git a/_source/_posts/2015-05-09-gnupg-2-dot-1-2-doesnt-work-with-caff.markdown b/_source/_posts/2015-05-09-gnupg-2-dot-1-2-doesnt-work-with-caff.markdown new file mode 100644 index 0000000..0609b22 --- /dev/null +++ b/_source/_posts/2015-05-09-gnupg-2-dot-1-2-doesnt-work-with-caff.markdown @@ -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`. diff --git a/_source/_posts/2015-07-30-subsonic.markdown b/_source/_posts/2015-07-30-subsonic.markdown new file mode 100644 index 0000000..db843d9 --- /dev/null +++ b/_source/_posts/2015-07-30-subsonic.markdown @@ -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`). + diff --git a/_source/_posts/2015-09-05-building-kde-libraries.markdown b/_source/_posts/2015-09-05-building-kde-libraries.markdown new file mode 100644 index 0000000..4f787a9 --- /dev/null +++ b/_source/_posts/2015-09-05-building-kde-libraries.markdown @@ -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. diff --git a/_source/_posts/2015-10-01-unicode-symbols-support.markdown b/_source/_posts/2015-10-01-unicode-symbols-support.markdown new file mode 100644 index 0000000..4241b89 --- /dev/null +++ b/_source/_posts/2015-10-01-unicode-symbols-support.markdown @@ -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`. + diff --git a/_source/_posts/2016-01-19-setting-up-grub-slash-gpt-slash-lvm.markdown b/_source/_posts/2016-01-19-setting-up-grub-slash-gpt-slash-lvm.markdown new file mode 100644 index 0000000..8f27502 --- /dev/null +++ b/_source/_posts/2016-01-19-setting-up-grub-slash-gpt-slash-lvm.markdown @@ -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 + diff --git a/_source/_posts/2016-08-07-gdm-keyboard-layout-revisited.markdown b/_source/_posts/2016-08-07-gdm-keyboard-layout-revisited.markdown new file mode 100644 index 0000000..1b2b627 --- /dev/null +++ b/_source/_posts/2016-08-07-gdm-keyboard-layout-revisited.markdown @@ -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. diff --git a/_source/_posts/2016-08-27-hp-laserjet-m1217nfw-setup-with-cups.markdown b/_source/_posts/2016-08-27-hp-laserjet-m1217nfw-setup-with-cups.markdown new file mode 100644 index 0000000..38366a0 --- /dev/null +++ b/_source/_posts/2016-08-27-hp-laserjet-m1217nfw-setup-with-cups.markdown @@ -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 `. (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"). + diff --git a/_source/_posts/2017-10-11-chaging-default-browser-for-gnome-on-debian.markdown b/_source/_posts/2017-10-11-chaging-default-browser-for-gnome-on-debian.markdown new file mode 100644 index 0000000..23a8b03 --- /dev/null +++ b/_source/_posts/2017-10-11-chaging-default-browser-for-gnome-on-debian.markdown @@ -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; +``` + diff --git a/_source/_posts/2017-11-29-debian-stretch-on-dell-precision-7520.markdown b/_source/_posts/2017-11-29-debian-stretch-on-dell-precision-7520.markdown new file mode 100644 index 0000000..91aba10 --- /dev/null +++ b/_source/_posts/2017-11-29-debian-stretch-on-dell-precision-7520.markdown @@ -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). + diff --git a/_source/_posts/2017-12-28-ipv6-and-netgraph-ethernet-pseudo-interface.markdown b/_source/_posts/2017-12-28-ipv6-and-netgraph-ethernet-pseudo-interface.markdown new file mode 100644 index 0000000..09ea104 --- /dev/null +++ b/_source/_posts/2017-12-28-ipv6-and-netgraph-ethernet-pseudo-interface.markdown @@ -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. + diff --git a/_source/_posts/2018-05-16-add-collation-to-postgres-post-initdb.markdown b/_source/_posts/2018-05-16-add-collation-to-postgres-post-initdb.markdown new file mode 100644 index 0000000..5229610 --- /dev/null +++ b/_source/_posts/2018-05-16-add-collation-to-postgres-post-initdb.markdown @@ -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. diff --git a/_source/_posts/2018-07-31-hplip-wont-print.markdown b/_source/_posts/2018-07-31-hplip-wont-print.markdown new file mode 100644 index 0000000..0eb9a47 --- /dev/null +++ b/_source/_posts/2018-07-31-hplip-wont-print.markdown @@ -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. diff --git a/_source/_posts/2019-02-02-debian-setup-for-personal-laptop.markdown b/_source/_posts/2019-02-02-debian-setup-for-personal-laptop.markdown new file mode 100644 index 0000000..bbb66e5 --- /dev/null +++ b/_source/_posts/2019-02-02-debian-setup-for-personal-laptop.markdown @@ -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 diff --git a/_source/_posts/2019-05-11-manual-firefox-install-on-debian.markdown b/_source/_posts/2019-05-11-manual-firefox-install-on-debian.markdown new file mode 100644 index 0000000..aebf059 --- /dev/null +++ b/_source/_posts/2019-05-11-manual-firefox-install-on-debian.markdown @@ -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 %}). + diff --git a/_source/_posts/2019-08-11-arduino-boot-loader-on-cheap-chinese-bluepill-clone.markdown b/_source/_posts/2019-08-11-arduino-boot-loader-on-cheap-chinese-bluepill-clone.markdown new file mode 100644 index 0000000..b4f5663 --- /dev/null +++ b/_source/_posts/2019-08-11-arduino-boot-loader-on-cheap-chinese-bluepill-clone.markdown @@ -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) diff --git a/_source/_posts/2019-12-24-poor-mans-cnc-plotter.markdown b/_source/_posts/2019-12-24-poor-mans-cnc-plotter.markdown new file mode 100644 index 0000000..9c92d8e --- /dev/null +++ b/_source/_posts/2019-12-24-poor-mans-cnc-plotter.markdown @@ -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 +```` diff --git a/_source/_posts/2023-05-06-color-emoji-terminal.markdown b/_source/_posts/2023-05-06-color-emoji-terminal.markdown new file mode 100644 index 0000000..11ad8d4 --- /dev/null +++ b/_source/_posts/2023-05-06-color-emoji-terminal.markdown @@ -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`