Hejdaの見る夢

一人前のエンジニアを目指して頑張ったこととかをつらつら書くブログ

🐳 package-dockerfile に Go(golang) をいれました 👀

先の投稿に引き続き、package-dockerfile に Go(golang) の Dockerfile を追加しました

https://hub.docker.com/u/iganarix

  • Docker Hub

https://hub.docker.com/r/iganarix/lang-golang

これから継続的にアップデート出来ていけたらいいなと思います(`・ω・´)ゞ

🐳 package-dockerfile に Python を入れました 🐍

昔から下記のようなものを作っていまして、地道に増やしています

https://github.com/iganari/package-dockerfile

これは何かというと、自分用の Docker Image を作るための Repository です

上記の Repository にて、管理している Dockerfile を使って、

Docker Hub にて Docker Image を作っています(自動生成)

https://hub.docker.com/u/iganarix

内容は極めてシンプルでして、殆どが公式パッケージに対して、

日本時刻の設定を加筆しているくらいです

それだけなのですが、毎回 Dockerfile に書くのが億劫なので、

自分で作ってしまいました (・〜・)

また、コミットのコメントは英語で頑張っています(かなり拙いですが…)

今回はその Repository に Python 用の Dockerfile をやっと追加しましたというお話です

これからも地道に増やして行きたいと思います(`・ω・´)ゞ

自作スクリプト(virtualbox-operation)の v1.1 をリリースしました

自作スクリプトvirtualbox-operationの v1.1をリリースしました 変更点としては、

  • 何回も読んでいた関数を纏める
  • READMEの更新

になります

v1.0 では、まずは動くスクリプトを作成するために割と強引なスクリプトを書いていましたが、 v1.1 で効率化を少し意識して修正を加えてみました

まだまた、要修正・要改善点はたくさんあるので、引き続き頑張ってアップデートしていきたいと思っています ╭( ・ㅂ・)و ̑̑

Ubuntu 16.04 LTSで、Linuxカーネルを4.4.0-143-genericに上げたら、VirtualBoxが使えなくなった件

経緯

きっかけ

2019/03/18に何気ない気持ちで ホストマシン(Ubuntu 16.04 LTS)で sudo apt update && sudo apt upgrade -y としたら、VirtualBox v5.2が起動しなくなりました

症状と考えうる理由

症状としては、VirtualBox自体は起動するのですが、その中で作成した仮想マシンが起動出来ず、新しく作ることも出来ませんでした

理由としては、 sudo apt upgrade 後のLinuxカーネルではAPIに変更点があったらしく、VirtualBoxがそのAPIの変更に追従出来ていないようです

対処開始

Linuxカーネルのバージョンは 4.4.0-143-generic でした

$ uname -r
4.4.0-143-generic

VirtualBoxコマンドラインを使った際に、今回のエラーへの対処として、

There were problems setting up VirtualBox.  To re-start the set-up process, run
  /sbin/vboxconfig
as root.

と表示されるので、素直にターミナルで実行してみますが

$ sudo /sbin/vboxconfig
vboxdrv.sh: Stopping VirtualBox services.
vboxdrv.sh: Starting VirtualBox services.
vboxdrv.sh: Building VirtualBox kernel modules.
vboxdrv.sh: failed: Look at /var/log/vbox-setup.log to find out what went wrong.

There were problems setting up VirtualBox.  To re-start the set-up process, run
  /sbin/vboxconfig
as root.

同じエラーが出てしまいます…

他の対応を試みる

VirtualBoxの公式サイト(https://www.virtualbox.org/wiki/Downloads)から、 VirtualBox v5.1, v6.0をパッケージでダウンロードしてインストールしてみたり、コマンドラインでインストールしてみましたが一向にならず…

呟いてみたところ…

Oracleの対応を待つわけにもいかないので、「ホストマシンのカーネルをダウングレードするしかないかなぁ(´・ω・`)」と日報に書いたら、同僚が解決方法が記載されているブログを見つけてれくました!!

上記のサイトに従って作業をしたところ、再び起動出来るようになりました!!

下記に作業記録を記載しておきます

作業

ソースコードを修正しますので、作業する際は自己責任でお願いします ⚠

まずは最新にしましょう

  • aptのアップデート
    • 可能であれば、最新にしておきましょう
$ sudo apt update
$ sudo apt upgrade
  • VirtualBoxのアップグレード
    • コマンドラインでもパッケージからのインストールでもどちらでもよいと思います
    • 可能であれば、最新にしておきましょう
    • わたしはVirtualBox v6.0.3にしました

ここから、VirtualBoxソースコードを修正していきます

$ sudo cp -a /usr/src/vboxhost-6.0.4/vboxdrv/r0drv/linux/memobj-r0drv-linux.c{,.bk.20190320}
  • バックアップ出来たか、確認します
$ sudo ls -la  /usr/src/vboxhost-6.0.4/vboxdrv/r0drv/linux/memobj-r0drv-linux.c*
-rw-r--r-- 1 root root 60644  3月 20 16:34 /usr/src/vboxhost-6.0.4/vboxdrv/r0drv/linux/memobj-r0drv-linux.c
-rw-r--r-- 1 root root 60638  1月 26 03:21 /usr/src/vboxhost-6.0.4/vboxdrv/r0drv/linux/memobj-r0drv-linux.c.bk.20190320
  • 該当のファイルを編集します
    • # if GET_USER_PAGES_API >= KERNEL_VERSION(4, 9, 0) -> if GET_USER_PAGES_API >= KERNEL_VERSION(4, 4, 168) と変更します
    • 合計で3箇所あります
$ sudo vim /usr/src/vboxhost-6.0.4/vboxdrv/r0drv/linux/memobj-r0drv-linux.c
  • 編集した箇所を確認しまします
$ sudo diff -s /usr/src/vboxhost-6.0.4/vboxdrv/r0drv/linux/memobj-r0drv-linux.c /usr/src/vboxhost-6.0.4/vboxdrv/r0drv/linux/memobj-r0drv-linux.c.bk.20190320 
1078c1078
< # if GET_USER_PAGES_API >= KERNEL_VERSION(4, 4, 168)
---
> # if GET_USER_PAGES_API >= KERNEL_VERSION(4, 9, 0)
1098c1098
< # if GET_USER_PAGES_API >= KERNEL_VERSION(4, 4, 168)
---
> # if GET_USER_PAGES_API >= KERNEL_VERSION(4, 9, 0)
1117c1117
< # if GET_USER_PAGES_API >= KERNEL_VERSION(4, 4, 168)
---
> # if GET_USER_PAGES_API >= KERNEL_VERSION(4, 9, 0)
  • 改めて、vboxconfigコマンドを実施します
$ sudo /sbin/vboxconfig 
vboxdrv.sh: Stopping VirtualBox services.
vboxdrv.sh: Starting VirtualBox services.
vboxdrv.sh: Building VirtualBox kernel modules.
$

成功!!!!!!!!!!!!!!!

この後は、GUIVirtualBoxを起動して、既存の仮想マシンが正常に起動出来れば問題は解決です!!

まとめ

  • 今回はOracleが修正するより先に1エンジニアが問題箇所を特定し、解決策をインターネットに上げることで多くのユーザが救われたと思います
  • 改めて、エンジニアリングの世界ってすごいなと体感した出来事でした
  • あと、この対応はあくまで一時的なので、早く本家のVirtualBoxが対応してほしいです (-人-)

参考URL