portage tree を squashfs で sync しよう

portage-2.2.19以降では Portage tree を Squash FSでsyncできるようになったらしい。

下記メールにある通り、 dev-util/squashmergeをインストールして repos.conf を設定する。 emerge --sync すると最初は Squash FSの snapshot が、最初のsync以後はいまの snapshot に対する差分がDLされて portage tree として見えるようになる。

archives.gentoo.org

Portage tree に SquashFSを使うのは、 tree のサイズを小さくするよく知られたトリックである。 たとえばbtrfs+lzoで504MBのtreeがSquashFS+lzoで96MBにまで小さくできる。

http://dev.gentoo.org/~mgorny/articles/using-deltas-to-speed-up-squashfs-ebuild-repository-updates.pdf

しかし、Squashを毎回やり直すのが面倒であった。 今回のportageの変更で透過的にSquashFS上のportage treeの更新ができるようになる。

 

いまの自分のシステムは Git での syncにしているが、どうせportage treeの中で上書きなんてしないし、 SquashDelta sync に切り替えていこう。特にあまり容量のないサーバでinodeとディスクの節約になって嬉しい。

make.profile はディレクトリでいいらしい

Gentoo は選択なので当然 systemd をサポートしている。 systemd を使うには USE フラグを設定しておいたり、あるいは systemd とではうまく動かないパッケージがあるので使わないように設定しなければならない。これを簡単に設定できるように systemd の profile が作られている。

これまでは systemd の profile はdefault/linux/amd64/13.0/desktop/gnome/systemd か
default/linux/amd64/13.0/desktop/kde/systemd のようにデスクトップ環境の下に作られていた。 最近になってデスクトップ環境以外の systemd profile (default/linux/amd64/13.0/systemd)ができた。

archives.gentoo.org

これを聞いて、よかったべんりーと思っていたのだけれど、実は"/etc/portage/make.profile" は「/usr/portage/profiles下へのsymlink」でなくていいということを知った。

archives.gentoo.org

このメールによると /etc/portage/make.profile のディレクトリを作って、その下の parent ファイルに使いたい profile へのパスを書けば複数のprofile を "mix-in" できるようだ。

そうすると、 desktop+systemd (kdeでもgnomeでもない)とかdesktop+kde+systemd+developer とか no-multilib+systemd とかmusl+systemd とかも設定できる、ということなのだろう。すごい

 

Software Design 2015年 2月号: BPF, seccomp, tinyconfig

 

 

Software Design 2015年 2月号 に記事を書きました。

「第35回 Linuxカーネル観光ガイド」で、 seccomp フィルタ、 bpfシステムコール、そして Linux カーネルの新しい config 方法である tinyconfig について書きました。

日経Linux 2015年 2月号: Btrfs の機能はどうやって実現されてるの?

 

日経 Linux (リナックス) 2015年 02月号

日経 Linux (リナックス) 2015年 02月号

 

 日経Linux 2015年 2月号 に記事を書きました。

「第6回 カーネルハッカーがやさしくひも解くLinux ファイルシステム」として、Btrfs の実装について解説しました。ちなみに次回最終回です。

org-mode でポスター作成

ふええん、 Office なんて使えないよう Windows インストールするのめんどいよう、なのでポスターも Emacs org-mode で作成する。基本的に beamer, beamerposter を使えばよい。 テンプレートとしてはこんな感じになる。

#+TITLE: ほげふが
#+AUTHOR: ほげもが
#+DATE:
#+OPTIONS: H:1
#+BEAMER_COLOR_THEME:
#+BEAMER_FONT_THEME:
#+BEAMER_HEADER: \usepackage[orientation=portrait,size=a1,scale=1.4]{beamerposter}
#+BEAMER_HEADER: \setbeamertemplate{navigation symbols}{}
#+BEAMER_HEADER: \usepackage{type1cm}
#+BEAMER_HEADER: \usepackage{mathptmx}
#+BEAMER_HEADER: \usepackage{tikz}
#+BEAMER_HEADER: \renewcommand{\kanjifamilydefault}{\gtdefault}
#+BEAMER_HEADER: \usepackage{setspace}
#+BEAMER_INNER_THEME:
#+BEAMER_THEME: RJH
#+BEAMER_COLOR_THEME: 
#+LATEX_CLASS: beamer
#+LATEX_CLASS_OPTIONS: [compress,dvipdfmx,fleqn,serif]
#+LATEX_HEADER:
#+LATEX_HEADER_EXTRA:
#+DESCRIPTION:
#+OPTIONS: toc:nil ^:nil
\setstretch{0.3}
* 
:PROPERTIES:
:BEAMER_OPT: t
:END:
** 
\setstretch{1}
\normalize
:PROPERTIES:
:BEAMER_COL: 0.49
:BEAMER_OPT: t
:END:
*** 左側ひとつめ
なんたらかんたら
*** 左側ふたつめ
なんたらかんたら
** 
:PROPERTIES:
:BEAMER_COL: 0.49
:BEAMER_OPT: t
:END:
\setstretch{1}
\normalize
*** 右側ひとつめ
なんとかかんとか
*** 右側ふたつめ
なんとかかんとか

大事なのは

  • #+BEAMER_HEADER: \usepackage[orientation=portrait,size=a1,scale=1.4]{beamerposter}
    • A1の縦長にする
  • #+BEAMER_HEADER: \setbeamertemplate{navigation symbols}{}
    • 下の navigation とかを消す
  • #+BEAMER_THEME: RJH
    • beamer のテーマ
  • :BEAMER_OPT: t
    • 上に寄せる
  • :BEAMER_COL: 0.49
    • 二段組

RJH テーマはここ
Making a poster in beamer | Hyndsight


あとは適当に setstretch で調整する。

Software Design 2015年 1月号: DRMとrender nodeについて

 

  

Software Design 2015年 1月号 に記事を書きました。

「第34回 Linuxカーネル観光ガイド」で、 Linux で画面描画を行なう DRM の仕組みと最近デフォルトで有効になった render node (/dev/dri/renderD128)について書きました。 libdrm を使って画面に色を出したりなどしています。