Ubuntus

FirefoxのuserContent.cssでYouTubeを軽くする

FirefoxのuserContent.cssでYouTubeを軽くする

4GB RAM 級の古い PC や小型 tablet で YouTube を開くと、動画そのものより周辺 UI の重さが気になることがある。

広告、コメント、関連動画、Shorts、棚 UI、アニメーションなどを CSS で非表示にすると、JavaScript の実行自体は止められないが、描画負荷と見た目の密度は下げられる。

このメモでは、Stylus のような拡張機能ではなく Firefox 標準の userContent.css を使ってみた時のメモ。

方針

  • JavaScript は使わない
  • 外部 URL、@importurl(...) は使わない
  • CSS は YouTube domain に限定する
  • Firefox の policy で userContent.css を有効化する
  • profile が snap 版と deb 版で分かれることを前提にする

CSS の外形は次のようになる。

@-moz-document domain("youtube.com") {
  ytd-rich-section-renderer,
  ytd-reel-shelf-renderer,
  ytd-rich-shelf-renderer[is-shorts],
  ytd-comments,
  #comments {
    display: none !important;
  }
}

実際には YouTube の DOM 変更に備え、Shorts 系、棚 UI、コメント、関連 UI を複数 selector で押さえる。

userContent.cssを使う理由

Stylus のような extension を使うと管理は楽だが、低メモリ端末では extension 自体も増やしたくないことがある。

Read more...

UbuntuでAndroid + Rust/Slint開発環境をAnsible管理する

UbuntuでAndroid + Rust/Slint開発環境をAnsible管理する

Ubuntu workstation に Android Studio、Android SDK、Emulator、Rust Android build 環境を入れる場合、GUI installer 任せにすると再構築時の差分が見えにくい。

Ansible では、OS 側の依存、SDK directory、Rust toolchain、Emulator 用 group、確認用 AVD を分けて管理すると扱いやすい。

管理するもの

  • Android Studio
  • Android SDK command-line tools
  • platform-tools
  • emulator
  • Android platform / build-tools
  • NDK
  • x86_64 emulator image
  • Rust toolchain
  • x86_64-linux-android target
  • cargo-apk
  • KVM / libvirt / plugdev group

Android Studio 本体は公式 tarball を固定 path に展開し、SDK は /opt/android-sdk のような system-wide path に置くと、複数 shell や editor から参照しやすい。

directory方針

例:

Read more...

Ubuntu22.04でfirefoxが/home以外で起動しない

背景

2024/01時点だとUbuntu22.04 LTSでfirefoxをインストールしようとするとSnap版がインストールされます。

Snapは、アプリケーションとその依存関係を含む自己完結型のパッケージ形式で、異なるLinuxディストリビューション間での互換性を提供します。 Snapパッケージは独自のサンドボックス環境で実行され、セキュリティと隔離を強化します。自動更新機能により、常に最新のソフトウェアバージョンを維持することを目的としています。

仕組み自体は良い仕組みだと思います。ただ私の環境では動作しなかったので、回避方法のメモを残します。

回避策

snapのfirefoxではなくMozillaチームのfirefoxを入れます。

ハマりやすいポイント

Snap自体は割と20.04の頃から存在しており使ったりしていたのですが、22.04から apt install firefox とした場合でもsnapのパッケージがインストールされるようになりました。 (つまりdebでインストールされるように見えるが実はSnapパッケージ)

エラーメッセージ

「/home以外にホームディレクトリがあると追加で設定が必要ですよ」というメッセージが出る。

$ firefox

Sorry, home directories outside of /home needs configuration.
See https://forum.snapcraft.io/t/11209 for details.

オススメされているURLが Support for non /home homedirs 内容を見ると、 Home directories outside of ‘/home’に情報がまとまっているとの事。アプローチとしては2つ

  1. sudo snap set system homedirs=<destination-directory> を実行してね
  2. /home配下のホームディレクトリ配下にbindマウントしてね

1のアプローチを試してみるがエラー

$ sudo snap set system homedir=/mnt/nfs/home/exampleuser/
error: cannot perform the following tasks:
- Run configure hook of "core" snap (run hook "configure": cannot set "core.homedir": unsupported system option)

現在の状況を snap get で取得するもエラー

Read more...

ubuntu studio 20.04の個人的な設定メモ

環境

Ubuntu Studio 22.04

UbuntuでUSBインストーラを作る

isoイメージをホームディレクトリ直下に移動しておくとイメージを自動的にリストアップしてくれる。

usb-creator-gtk, usb-creator-kde が存在するので未インストールであればインストールして起動。

Ubuntu Studio 22.04 インストーラ固有

  • Nvidia RTX3060だとインストーラがGPU経由で表示できない
  • M/BのUEFIの画面で[Initiate Graphic Adapter]の箇所でPEG(オンボードでないGPU)をIDG(内蔵のグラフィック機能)に変更
    • M/BのD-SubなりHDMIに接続しセットアップ
      • OSセットアップ後、NvidiaのドライバーをインストールしPEGに戻した。

レポジトリのキーファイル操作

apt-key は非推奨。新規にリポジトリ鍵を追加する場合は、/usr/share/keyrings/ に鍵を置き、リポジトリ設定の signed-by= で参照する。 既存環境の棚卸しや削除時だけ apt-key list / apt-key del を使う。

キー一覧

sudo apt-key list

キー削除

sudo apt-key del [キーID]

ファイルを直接削除

下記ディレクトリ配下のファイルを削除

  • /usr/share/keyrings/
  • /etc/apt/trusted.gpg.d/

ssh鍵の作成とgithubへの登録

右上の自分のアイコンをクリック -> Settings -> SSH and GPG keys -> New SSH Key

ssh-keygen cat ~/.ssh/id_rsa.pub

表示された公開鍵をGithubに貼り付けて設定

ghqをインストールしてgetする

apt install golang-go
go install github.com/x-motemen/ghq@latest

コマンドサーチパスに ~/go/bin を追加

Read more...

UbuntuでのAppArmorのメモ

背景

containerdをrootlessで動かそうとしたところAppArmorに引っかかってしまった

(私の場合、/mnt配下の追加ディスク上にコンテナイメージを置きたい、という背景があったため引っかかったと思われる)

標準的なディレクトリ以外で動作させようとした場合に問題になりそう。

下記のエラーが出た

Mar  6 00:39:00 marie-ms7817 systemd[1055]: Started libcontainer container d1b514a134af96a15f5062afe042fd8654d91b2be4bef27f9af5865e29d2cad7.
Mar  6 00:40:30 marie-ms7817 kernel: [ 7375.140738] audit: type=1400 audit(1709653230.078:103): apparmor="DENIED" operation="change_onexec" class="file" info="label not found" error=-2 profile="unconfined" name="nerdctl-default" pid=54813 comm="aa-exec"

apparmor=“DENIED operation=“change_onexec” このメッセージは、AppArmor(Linuxのセキュリティモジュールの一つ)が、実行時の権限変更を拒否したことを示している。 特に、name=“nerdctl-default"に関連する操作が拒否されており、これはコンテナのセキュリティポリシーに関連する問題を示唆している。 label not foundという部分から、特定のセキュリティラベルが見つからない、または適切に設定されていない可能性がある。

既存の設定前の確認

nerdctl-defaultに関連する設定があるか確認。 下記コマンドで現在のAppArmorの設定のリストを出力し設定があるか確認(無かった)

sudo aa-status

ポリシーファイルの作成

/etc/apparmor.d ディレクトリに nerdctl-default という名前の新しい AppArmor ポリシーファイルを作成する。

/etc/apparmor.d/nerdctl-default とした。

#include <tunables/global>

profile nerdctl-default flags=(attach_disconnected,mediate_deleted) {
    / r,
    /dev/tty rw,
    /dev/pts/** w,
    /dev/null rw,
    /etc/.ro*/ld.so.cache r,
    /etc/ld.so.cache r,
    /etc/locale.alias r,
    /etc/nsswitch.conf r,
    /etc/passwd r,
    /mnt/append-disk/containerd/** rwk,
    /proc/ r,
    /proc/** r,
    /sys/devices/system/** r,
    /sys/kernel/mm/transparent_hugepage/hpage_pmd_size r,
    /usr/bin/** rix,
    /usr/lib/locale/locale-archive r,
    /usr/lib/x86_64-linux-gnu/** rm,
    /usr/lib/locale/** r,
    /usr/share/terminfo/** r,
    /var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/** rwk,
    /var/lib/containerd/** rwk,
    owner /** rwix,
    network,
    ptrace (read, readby) peer=nerdctl-default,
    signal (receive) peer=nerdctl-default,
    signal (receive) peer=unconfined,
    signal (send) peer=nerdctl-default,
    signal (send) set=kill peer=unconfined,
}

それぞれの意味。

Read more...