Ubuntu

Ubuntuの/tmpをtmpfsにする方法

systemd のデフォルトでは /tmp は tmpfs でマウントされるようになっている。 でも Ubuntu では /tmp で tmpfs を使わないようにしてある。何度か /tmp を tmpfs にする試みはあったらしい1が……。

まあどうでもいいといえばどうでもいいが、Ubuntu の /tmp を tmpfs にする方法。

$ sudo systemctl enable /usr/share/systemd/tmp.mount
$ sudo reboot

これだけ。

通常、systemd では /tmp は tmp.mount でマウントされる。 Ubuntu でもこのファイルは /usr/share/systemd にインストールされるようになっていて、ユーザの好みに合わせて使える。 ただし、ここはユニットファイルの検索パスに入っていないので普通に指定すると有効化できない。 というわけで、フルパスを指定して mount unit を有効化することで、直接使えるようにしている。

C++標準ライブラリのマニュアルページをインストール

Ubuntu (をはじめ多くの GNU/Linux ディストリビューション) では C 言語のマニュアルページは最初から標準で入っていますが、 C++ のマニュアルページは入っていません (C++ にはマニュアルページを見る文化がないのだろうか…)。 という訳で、自分でインストールする必要があります。

$ sudo apt install libstdc++-8-doc

で、見るときは、

$ man std::vector

みたいな感じで std:: までつけないといけないみたいです。

Surface GoにUbuntuをインストール

まずはじめに、Surface Go に Ubuntu をインストールするモチベーションは何かというと、 Surface Go を買ったときにとりあえず (とりあえずかどうかは議論が分かれるところですが) 入っている OS は当然ながら Windows 10 なわけですが、ずっと GNU/Linux の何らかのディストリビューションを使ってきた 僕としては Windows がどうしても使いにくかったということです。Surface Go は大きさとしては なかなかコンパクトで持ち運びしやすいのでこのサイズで OS が Windows じゃなかったら (婉曲?) 最高だなと思ったってのもあります。

まあそんなわけで (まとまらなかった) インストールの手順を書いこうと思います。

インストーラの USB をつくる

ここが一番大変だったかもしれません。 自分の場合、USB の Type A から Type C に変換するアダプタを持っているので、それを使ってインストール用の iso を焼いた USB をつないでいたんですが、どうにもこうにも起動しない。最終的には起動させられたんですが、 いろいろ試しすぎてどれが要因なのか分からないです。 何のおかげでうまくいったのかを調べようと思わなくもなかったんですが、それまでの試行錯誤で疲労困憊していて、 そのモチベーションがなかったので。 という訳で、とにかく試したことを書きます。

Ubuntu で freeglut を使う

環境は Ubuntu 18.04.3 LTS x86_64 です.

必要なパッケージを入れる

$ sudo apt install freeglut3-dev

試す

なんか適当に

#include <stdlib.h>
#include <GL/glut.h>
#include <GL/gl.h>
#include <GL/glu.h>

static void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT);
    glFlush();
}

int main(int argc, char **argv)
{
    glutInit(&argc, argv);
    glutInitWindowSize(256,256);
    glutCreateWindow("Hello");
    glClearColor(1, 0, 0, 1);
    glutDisplayFunc(display);
    glutMainLoop();
    return 0;
}

256x256 のウィンドウを赤く塗りつぶすだけです.

で,コンパイル

$ gcc main.c -lglut -lGLU -lGL -lm

できました.

screenshot

適当に Makefile にしておく

ライブラリが多くて毎回指定するのは面倒なので, Makefile 必須っぽいです.