mattintosh note

Hello Raspberry Pi!

VirtualBox の UEFI で Ubuntu が起動しない

EFI ブートの PC 用に USB メモリを作ってるんだけど、インストール後に VirtualBox を落として起動したら Ubuntu が起動しない…と。

なんか前にも同じようなことがあった気がするけど、どうやったっけ…で調べたら詳しく解説してくれてる方がいた。

www.downtown.jp

UEFI シェルからパーティションは見えてるのでそこにある EFI ファイルを起動する。ここでのパスの区切りはバックスラッシュっぽい。

FS0:\EFI\ubuntu\grubx64.efi

よくわからなければ FS0 を選択して EFI/ubuntu まで移動して grubx64.efi を実行する。cd では普通のスラッシュで移動できる。どっかのあれみたいだな…。

FS0:
cd EFI/ubuntu
grubx64.efi

「コマンドなんてわかんねーよクソッ!」みたいな場合は exitUEFI シェルを落として、CUI メニューにある Boot Maintenance Manager を開く。

f:id:mattintosh4:20180308230012p:plain

Boot From File を選択する。

f:id:mattintosh4:20180308225935p:plain

ボリュームラベル無しのパーティションを選択。

f:id:mattintosh4:20180308225910p:plain

EFI を選択。

f:id:mattintosh4:20180308225851p:plain

ubuntu を選択。

f:id:mattintosh4:20180308225740p:plain

grubx64.efi を選択。

f:id:mattintosh4:20180308225754p:plain

GRUB が起動するのであとはいつも通り。

f:id:mattintosh4:20180308225814p:plain

/boot/efi/EFI/ubuntu/grubx64.efi/boot/efi/EFI/boot/bootx64.efi にコピーしておけばいいっぽいけど、VirtualBox だけの問題なら別にいいか…。

Wine 3.0 版 EasyWine Nihonshu をプレリリースしました

Wine 3.0 がリリースされたので各種頒布物をビルドしました。

  • EasyWine-20180121_wine-3.0.dmg
  • MikuInstaller-Kai-Kit_wine-3.0.dmg
  • wine-3.0_nihonshu-20180121.tar.bz2
  • ws_wine-3.0_nihonshu-20180121.tar.7z

matome.naver.jp

パッチは 2.x 系からそのまま引き継いでいます。仕事が忙しくあまり時間がないため、細かい動作チェックしてませんので人柱版です。WINEPREFIX に重要なデータを入れている場合はバックアップを取っておいた方がいいかもしれません。

いつの間にか HKEY_CURRENT_USER\Software\Wine\Mac DriverRetinaMode という設定が増えてたので Retina 環境の方は設定してみるとより良い環境になるかもしれません。レジストリのプリセットは変更してないのでそのうち更新する予定です。

次の更新は夏予定。では。

Ubuntu 17.04 Zesty から 17.10 Artful へ

apt-get update したら URL が見つからないよと言われたので。リポジトリftp.riken.jp にしてるんだけど Zesty のサポートが2018年1月までだったのでサーバから無くなったようだ。

$ cd /etc/apt
$ sudo gzip -k sources.list
$ sudo sed -i'' 's/zesty/artful/g' sources.list
$ sudo apt-get update
$ sudo apt-get dist-upgrade

追記:do-release-upgrade というコマンドがあった。

$ sudo do-release-upgrade --help
Usage: do-release-upgrade [options]

Options:
  -h, --help            show this help message and exit
  -V, --version         Show version and exit
  -d, --devel-release   If using the latest supported release, upgrade to the
                        development release
  --data-dir=DATA_DIR   Directory that contains the data files
  -p, --proposed        Try upgrading to the latest release using the upgrader
                        from $distro-proposed
  -m MODE, --mode=MODE  Run in a special upgrade mode. Currently 'desktop' for
                        regular upgrades of a desktop system and 'server' for
                        server systems are supported.
  -f FRONTEND, --frontend=FRONTEND
                        Run the specified frontend
  -c, --check-dist-upgrade-only
                        Check only if a new distribution release is available
                        and report the result via the exit code
  -q, --quiet           

が、これをやると色々と吹っ飛んだ…。


あと、Mac で久しぶりに git 使ってたら git tag --sort=v:refname が使えなくなってた。一番新しいタグを拾うのに使ってたのに…。

調べてみたら for-each-ref で一番新しいタグを拾いたければ --count=1 --sort=-taggerdate で逆順出せばいいようだ。楽ちん。

git for-each-ref --sort=-taggerdate --count=1 --format '%(refname:short)' refs/tags

Linux で qaac がさくっと使える Docker コンテナを作った

C93 で CD を色々買ってきたので PC に取り込もうとしたんだけど、新しい PC に qaac の実行環境を作ってなかったので Docker で作れるようにしてみました。

github.com

qaac って何?

(ざっくり言うと)iTunes なしでコマンドラインから AppleAAC/ALAC エンコーダーを使えるようにするもの。

Docker コンテナイメージを作成する

Docker コンテナを作る前に qaac のセットアップが必要です。(コンテナ内で qaac のセットアップをしようと思ったのですが、セットアップ用のパッケージを入れるとイメージサイズが大きくなるのでホスト側で作成することにしました)

$ git clone https://github.com/mattintosh4/docker-qaac64
$ cd docker-qaac64
$ ./qaac_builder.sh

イメージを作成します。qaac は Wine 経由で実行するようになっているため、Wine のセットアップに多少時間がかかります。Wine は Ubuntuリポジトリではなく WineHQ のリポジトリを使うようになっています。(後日、時間が出来たら依存関係の数を減らす予定)

$ docker build -t qaac64 .

qaac は GitHubAPI から常に最新版の情報を取得するので最新版が落ちてきます。

iTunes のバージョンは 12.7.2 ですが、Apple の配信が終了すると使えなくなる可能性があります。その場合、iTunes64Setup.exe をブラウザでダウンロードし、qaac_builder.sh と同じディレクトリに置いて iTunes64Setup.exe.sha1 を更新してもらえらば好きなバージョンが使えます。

$ sha1sum iTunes64Setup.exe > iTunes64Setup.exe.sha1

qaac64.exe を使う

docker images でイメージが作成されていることを確認します。

$ docker images
REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
qaac64                    latest              c6e8b5ada977        6 hours ago         985 MB
ubuntu                    xenial              00fd29ccc6f1        2 weeks ago         111 MB

コンテナ内で qaac を使ってエンコードをするわけですが、肝心のオーディオファイルはホスト側にあるので Docker のボリューム機能を使ってコンテナ内にホストのディレクトリをマウントさせる必要があります。

基本的な書式は下記の通りです。作業用ディレクトリ等を作成せずに使う場合はパスにスペースが混入する可能性があるので $PWD 部分を "$PWD" としておいた方が安全かもしれません。--rm を忘れるとエンコードの度にコンテナが増えていくので気をつけましょう。 (WINEPREFIX をイメージを作成する際に実行していたのですが、何故かそのあと qaac64.exe を実行するとアクセス出来ないというエラーになってしまうため毎回 WINEPREFIX の作成に数秒かかります)

docker run --rm -v $PWD:/mnt qaac64 wine qaac64.exe

以下、カレントディレクトリに BIN や CUE ファイルがある場合の例です。BIN は cdrdao で抽出した状態のもので、フォーマットは s16b になります。

$ docker run --rm -v $PWD:/mnt qaac64 wine qaac64.exe --raw --raw-format s16b --raw-channels 2 --raw-rate 44100 cdda.bin

CUE シートを使う場合はオプションに --text-codepage 65001UTF-8の場合)を追加します。--fname-format 等でアーティスト、アルバム名の指定ができます。詳しくは qaac のヘルプを読んでください。

$ docker run --rm -v $PWD:/mnt qaac64 wine qaac64.exe --raw --raw-format s16b --raw-channels 2 --raw-rate 44100 --text-codepage 65001 cdda.cue

毎回 docker run と書くのが面倒な場合

~/.bashrc などに関数を書いておくとよいです。

qaac64(){ docker run --rm -v "$PWD":/mnt qaac64 wine qaac64.exe "$@"; }

qaac の準備が面倒くさいのでスクリプト化した

LinuxiTunesAAC/ALAC エンコーダーを使うために WINE 経由で qaac を使うんだけど、qaac の準備がめんどくさかったのでスクリプト化した。

Linux で qaac を使う方法は過去記事参照。

mattintosh.hatenablog.com

qaac のバージョンは執筆時点では 2.64。引数に WindowsiTunes 64-bit 版のインストーラーを指定すればいいだけにしてある。

2.64 固定番と最新版の2種類がある。git ls-remote で最新のタグを拾おうかと思ったけど、GitHubAPI で最新版の名前と URL が取得できたので jq で済ますことにした。

  • p7zip、curl が必要。latest の場合は jq も必要。
  • 2.64 固定番で qaac のバージョンを上げたければ QAAC_VERSIONQAAC_SHA1SUM を変更する。

■ 2.64 固定版

$ git clone https://gist.github.com/mattintosh4/d5116168d0743d437ea1150cf11588d7 qaac_builder
$ cd qaac_builder
$ bash qaac_builder_2.64.sh ~/Downloads/iTunes64Setup.exe

■ 最新版

$ git clone https://gist.github.com/mattintosh4/d5116168d0743d437ea1150cf11588d7 qaac_builder
$ cd qaac_builder
$ bash qaac_builder_latest.sh ~/Downloads/iTunes64Setup.exe

WINE で qaac64.exe を実行してエラーが出なければOK。

$ wine qaac_2.64/qaac64.exe --check
qaac 2.64, CoreAudioToolbox 7.10.9.0
libsoxconvolver 0.1.0
libsoxr-0.1.3b1

Docker イメージでも作るかな…。

■ 2.64 固定版スクリプト

■ 最新版スクリプト

なお、最新版の JSONhttps://api.github.com/repos/nu774/qaac/releases/latest で取得することができる。

{
  "url": "https://api.github.com/repos/nu774/qaac/releases/6441962",
  "assets_url": "https://api.github.com/repos/nu774/qaac/releases/6441962/assets",
  "upload_url": "https://uploads.github.com/repos/nu774/qaac/releases/6441962/assets{?name,label}",
  "html_url": "https://github.com/nu774/qaac/releases/tag/v2.64",
  "id": 6441962,
  "tag_name": "v2.64",
  "target_commitish": "master",
  "name": "v2.64",
  "draft": false,
  "author": {
    "login": "nu774",
    "id": 489444,
    "avatar_url": "https://avatars3.githubusercontent.com/u/489444?v=4",
    "gravatar_id": "",
    "url": "https://api.github.com/users/nu774",
    "html_url": "https://github.com/nu774",
    "followers_url": "https://api.github.com/users/nu774/followers",
    "following_url": "https://api.github.com/users/nu774/following{/other_user}",
    "gists_url": "https://api.github.com/users/nu774/gists{/gist_id}",
    "starred_url": "https://api.github.com/users/nu774/starred{/owner}{/repo}",
    "subscriptions_url": "https://api.github.com/users/nu774/subscriptions",
    "organizations_url": "https://api.github.com/users/nu774/orgs",
    "repos_url": "https://api.github.com/users/nu774/repos",
    "events_url": "https://api.github.com/users/nu774/events{/privacy}",
    "received_events_url": "https://api.github.com/users/nu774/received_events",
    "type": "User",
    "site_admin": false
  },
  "prerelease": false,
  "created_at": "2017-05-19T12:21:05Z",
  "published_at": "2017-05-19T12:29:11Z",
  "assets": [
    {
      "url": "https://api.github.com/repos/nu774/qaac/releases/assets/3912283",
      "id": 3912283,
      "name": "qaac_2.64.zip",
      "label": null,
      "uploader": {
        "login": "nu774",
        "id": 489444,
        "avatar_url": "https://avatars3.githubusercontent.com/u/489444?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nu774",
        "html_url": "https://github.com/nu774",
        "followers_url": "https://api.github.com/users/nu774/followers",
        "following_url": "https://api.github.com/users/nu774/following{/other_user}",
        "gists_url": "https://api.github.com/users/nu774/gists{/gist_id}",
        "starred_url": "https://api.github.com/users/nu774/starred{/owner}{/repo}",
        "subscriptions_url": "https://api.github.com/users/nu774/subscriptions",
        "organizations_url": "https://api.github.com/users/nu774/orgs",
        "repos_url": "https://api.github.com/users/nu774/repos",
        "events_url": "https://api.github.com/users/nu774/events{/privacy}",
        "received_events_url": "https://api.github.com/users/nu774/received_events",
        "type": "User",
        "site_admin": false
      },
      "content_type": "application/x-zip-compressed",
      "state": "uploaded",
      "size": 3055646,
      "download_count": 2190,
      "created_at": "2017-05-19T12:28:48Z",
      "updated_at": "2017-05-19T12:29:09Z",
      "browser_download_url": "https://github.com/nu774/qaac/releases/download/v2.64/qaac_2.64.zip"
    }
  ],
  "tarball_url": "https://api.github.com/repos/nu774/qaac/tarball/v2.64",
  "zipball_url": "https://api.github.com/repos/nu774/qaac/zipball/v2.64",
  "body": "Fixed regression of 2.63: HE-AAC frames were incorrectly multiplexed."
}