ytooyamaのブログ

サーバ構築とか、仕事で発見したこととか、趣味のこととかを書いています。

Raspberry PiにNOOBSを使ってOSをセットアップした時にはまったこと

NOOBSは初心者向けのOSセットアップツールです。これまでRaspberry PiにOSのデータを書き込むにはddコマンドを使っていたのですが、ちょっと楽をしようとNOOBSを使ったら意外とはまったので、まとめておこうと思います。

まずはNOOBSをダウンロード。本家からだとちょっと遅いので、こちらのミラーからダウンロードすることもできます。

現行のRaspberry PiはSDカードをFAT32でフォーマットする必要があるため、ファイルシステムの種類をFAT32にしてフォーマットします。macOS High Sierraの場合は「MS-DOS (FAT)」を選択するとFAT32でフォーマットするようです。

ダウンロードしたNOOBSのZIPファイルを展開して、ファイルをすべてSDカードにコピーしたら、あとはSDカードをRaspberry Piに差し込んでブートするだけなのですが、なぜか起動してくれませんでした。最初は使おうとしていたRaspberry Piが壊れたのかなと思ったのですが、別のRaspberry Piに差し込んで起動しても同様に動きません。そこで公式のマニュアルを見ました。

www.raspberrypi.org

ドキュメントにSD AssociationのSD Formatterを使っている記述がありました。試しにダウンロードしてSD Formatterをフォーマットし、もう一度NOOBSをSDカードにコピーしてブートしてみたところ、うまくいきました。

Raspberry P 1も2も3も壊れてなくて、ただmacOSのディスクユーティリティが壊れていただけでした。 というわけで、フォーマットする時はSD AssociationのSD Formatterを使おうという話でした。

この問題、「またHigh Sierraか...」という話ではなくて、El Capitan以降の全バージョンのmacOSのディスクユーティリティでFAT32でフォーマットすると、よく失敗する気がします(SDカードだけでなく、USBメモリーなどでも)。ちなみにexFAT形式は特に問題ありません。「FAT32形式でフォーマットすると失敗することがある」と以前Public Betaを使っていた時にレポートはあげましたが、今の所治る気配はありません。

永遠に続くSending build context to Docker daemon

Dockerイメージを作ろうと、Docker for Macを入れた環境でdocker buildをしたら次のようなエラーが表示されました。 出力を見る限り、Docker daemonにどんどん何かを送っているようです。

下記は4.445GB程度を転送していた時の出力のコピペですが、実際はどんどんカウントアップされており、同時にシステムディスクの空き容量がどんどん減少していきました。とりあえずCTRL + Cで中止しました。

% docker build -t ytooyama/ubuntu-utils . 
ERRO[0010] Can't add file /Users/ytooyama/.gnupg/S.gpg-agent to tar: archive/tar: sockets not supported
ERRO[0010] Can't add file /Users/ytooyama/.gnupg/S.gpg-agent.browser to tar: archive/tar: sockets not supported
ERRO[0010] Can't add file /Users/ytooyama/.gnupg/S.gpg-agent.extra to tar: archive/tar: sockets not supported
ERRO[0010] Can't add file /Users/ytooyama/.gnupg/S.gpg-agent.ssh to tar: archive/tar: sockets not supported
Sending build context to Docker daemon  4.445GB

最初はmacOS固有のgnupg周りの問題かなと思ったのですが、いくら検索してもズバリといった情報は見つかりませんでした。そこで検索するキーワードをちょっと変えたところ、次のような情報を見つけました。

beniyama.hatenablog.jp

どうやら、Dockerファイルをホームディレクトリーにおいてdocker buildを実行したため、DockerクライアントからDocker daemonに対してホームディレクトリー配下のファイルを一所懸命転送していたようです。というわけで、~/working/dockerみたいなディレクトリーを掘って、そこにDockerfile「だけ」をおき、docker buildを実行してことなきを得ました。

その時に作ったのがこれです。作ったDockerイメージってDocker Hubで共有できるので便利ですね。

RHEL7/Fedora 27でGlusterFSを利用する

GlusterFSについてはこちらを参照してください。

GlusterFS - Wikipedia

RHEL7/Fedora 27でGlusterFSを利用する方法を調べました。 基本的には次の情報が役立ちました。

GlusterFS - How to Install GlusterFS Server on CentOS 7 / RHEL 7 - YouTube

www.linuxhelp.com stackoverflow.com

現在、RHEL7やCentOS7の場合はEPELリポジトリーは不要のようで、CentOS Storage SIG提供のパッケージを使うとうまく行きました(こちらにもそのリポジトリーを使うことと書かれています)。 こんなglusterfs.repoを用意してあとはインストールするだけです。

# vi /etc/yum.repos.d/glusterfs.repo
[glusterfs]
name = Glusterfs
baseurl = http://mirror.centos.org/centos-7/7/storage/x86_64/gluster-4.0/
gpgcheck = 0
enable = 1

Stable(3.10)版を使うには、baseurlとして以下を指定するとインストールできました。

Fedoraの場合は、以下にあるリポジトリーのパッケージを使います(repoファイルも提供されています)。3系のバージョンを使いたい場合は、Fedora 27の標準パッケージを使えます。ただしGlusterFS 3.12です。Stableを使いたい場合は素直にRHEL7やCentOS7を使った方がいいと思います。

ただ、repoファイルそのままの内容ではGPGのエラーを解決できないため、このリポジトリーのパッケージを使うにはgpgcheckをオフにする必要がありました。

gpgcheck=1
↓
gpgcheck=0

というわけで、RHEL7/Fedora 27ではGlusterFSは割と簡単に動作しました。 ちなみにGlusterFSサーバーを動かしたり、リモートのGlusterFSの共有ボリュームをマウントするためにSELinuxを闇に滅する(無効化する)必要は特にありませんでした。

Red Hat Developer Programの更新2018

今年もRed Hat Developer Programの更新を行いました。

ytooyama.hatenadiary.jp

去年はちょっとわかりにくかったのですが、今年はこのRed Hat Developer サイトにログインして「Terms & Conditions」に同意すれば良いようです。数時間待つとサブスクリプションが有効になって、いくつかの製品やドキュメントの利用が可能になります。

ちなみにサブスクリプションは更新とはいうものの持ち越しではなく新しいキーが割り当てられるため、サブスクライブしたものは再度新しいサブスクリプションを使ってサブスクライブし直しになるようです。まあ特に問題ないですよね。

とはいえ、これで検証作業がはかどります。

Safariのサイト越えトラッキング機能の話

先日のアップデートでmacOS Sierra向けのSafariも11.1になったのですが、 iOS 11の設定にあった「サイト越えトラッキング機能」がmacOSSafariにないなと思ったら、 これ、Safariの機能ではなくてmacOS High Sierra向けSafariの機能なのですね。

support.apple.com

こちらがSierraSafari 11.1で f:id:ytooyama:20180403215735p:plain

こっちがHigh SierraSafari 11.1です。 f:id:ytooyama:20180403215822p:plain

Safari 11.1自体の見た目は一緒ですが、設定に違いがありました。 設定するかしないかはこちらをみてから判断すると良い気がします。 デフォルトの設定はオンらしいですけど、一応確認しておいた方がいいと思います。

anagrams.jp www.gizmodo.jp

Webkit 公式の情報

Intelligent Tracking Prevention | WebKit

ちなみにこの設定は一般的な利用では問題は起きないはずですが、有効にすると一部のサイトで問題が発生するようです。

Ubuntu 17.10よりNetplanが利用されるようになった

Ubuntu 17.10からネットワーク設定にNetplanが利用されています。当然問題がなければ間も無くリリースされるUbuntu 18.04 LTSでも利用されます。

Ubuntu Desktopの場合はバックエンドが変わっただけでNetplanをあまり意識する必要はないですが、Ubuntu Serverの場合は注意する必要があります。

Ubuntu 17.04まで

これまではこのようなことをして、IPアドレスを設定していたと思います。

$ sudo vi /etc/network/interfaces
iface eth0 inet static
address 10.0.0.10
netmask 255.255.255.0
gateway 10.0.0.1
dns-nameservers 10.0.0.10
dns-search ns.example.com

IPアドレスの設定の反映のために再起動

$ sudo reboot

Ubuntu 17.10からは

これが、Netplanではこうなります。IPアドレスの設定を反映するために再起動が不要になったようですね。しかもsystemd-networkdを使うようです。

YAMLを書いてApplyするとか、なんか今風ですね。

$ sudo vi /etc/netplan/01-netcfg.yaml
network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s5:
      dhcp4: no
      addresses: [10.0.0.10/24]
      gateway4: 10.0.0.1
      nameservers:
        addresses: [10.0.0.10]
        search: [ns.example.com]
      dhcp6: no

IPアドレスの設定を反映

$ sudo netplan apply

コマンドを実行するとすぐ反映されます。SSHは切断されますので注意。

これを試したい場合は、Ubuntu Server 17.10.1をダウンロードして試してみてください。また、来月の今頃にはUbuntu 18.04 LTSがリリースされているはずです。

ちなみに

netplanを検索すると次のサイトが検索に引っかかるのですが

www.jr-odekake.net

なんでかなーと思ったら、URLに「jr-odekake.net/plan」の文字が。なるほど。

NVIDIAのCUDAのインストールでハマりがちなポイント

最近、NVIDIA CUDAを触ることが多くなっています。 通常はDocker HubのCUDAイメージを使うので良いのですが、たまにパッケージ版のCUDAが必要な時にハマるので、二度とはまらないようにメモしておこうと思います。

最新版のCUDAをインストールする

CUDAはこちらのページからダウンロードします。

例えばx86Ubuntu 16.04向けは、ボタンを選択していくと次のような手順でインストールできると書かれています。

sudo dpkg -i cuda-repo-ubuntu1604_9.1.85-1_amd64.deb
sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
sudo apt-get update
sudo apt-get install cuda

しかし、この通りやってもインストールできません。理由はapt-keyを入れる前にdpkgコマンドでインストールしようとしているからです。つまり、こうするのが正しいです。

% sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
% sudo dpkg -i cuda-repo-ubuntu1604_9.1.85-1_amd64.deb
% sudo apt-get update
% sudo apt-get install cuda

バージョンを指定してCUDAをインストールする

さて、つぎは最新ではないバージョンのCUDAが必要な時です。その場合はまずここを開きます。

developer.nvidia.com

リンクの一覧からダウンロードしたいバージョンを選択します。あとは前のステップと同じように実行します。 ただし!

メタパッケージのcudaをインストールすると最新版がインストールされます。したがって例えば一つ前のCUDA 9.0が必要ならば、こうするのが現時点では正解です。

% sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
% sudo dpkg -i cuda-repo-ubuntu1604_9.0.176-1_amd64.deb
% sudo apt-get update
% sudo apt-get install cuda-9.0

ちなみにリポジトリーには最近のバージョンのCUDAパッケージがあるので、一度cuda-repoパッケージをインストールしたあとはそのまま別のバージョンのCUDAをセットアップできます。

マルチブートのUSBインストーラー作成ツールのEasy2Bootを使ったら便利だった

ブログに書くのは久しぶりな気がします。

Linuxのインストールをするため、よく使うLinuxディストリビューションのISOイメージをCDやDVDに書き込んで一通り持っていました。昔はそれでよかったのですが、最近はサーバーにDVD/CDなどが実装されていないものも多く、最近はUSBメモリーにddコマンドを使って書き込んだものを利用していました。

いわゆる、こんな感じのコマンドで。

$ sudo dd if=CentOS-7.4-x86_64-Minimal-1708.iso of=/dev/diskX

私が最初に使い始めたUSBメモリーはUSB 1.1の512MBのモデルでしたが、今や千円くらい出すと16GBでUSB 3.1対応のものが買えてしまいます。安いですよね。というか、一個買ってしまおうかな。

www.amazon.co.jp

私が普段使うLinuxディストリビュションのISOイメージは、Server版や最小インストール用に使うMinimal ISOが多く、大抵は1GB以下の容量です。いくら安いからって32GBのメモリーに1GB以下のデーターを1つ書いて残りは捨てるのはもったいない気がします。パーティションを切って使っても良いのですが、いくつかのISOを一つのUSBメモリーに書き込んで使う方法を考えてみました。

で、使ったのが以前も取り上げたコレです(と書きましたが、このブログを検索しても出てこないようです。どこかに書いた記憶はあるんだけどなあ)。Easy2Bootというアプリケーションです。WindowsLinux版があるようで今回はWindows版を使いました。

http://www.easy2boot.com/download/

公式サイトからインストーラーをダウンロードします。必要に応じてウィルススキャンなどおこなってください。 サイトのダウンロードはたまに失敗します。再試行するか、下の方にあるGoogle DriveやSkyDriveのリンクからダウンロードしてください。改ざんされていることはないかと思いますが、念のためウィルススキャンなどおこなってください。

ダウンロードしたmsi形式のインストーラーを実行します。デフォルトではデスクトップにファイルが展開されるので、フォルダ内の実行ファイルを「管理者権限付きで実行」します。

f:id:ytooyama:20180314001455p:plain:w360

下のような警告が出ると思います。

f:id:ytooyama:20180313224452p:plain:w360

こんな画面が表示されるので、USBメモリーを接続します。

f:id:ytooyama:20180313224707p:plain:w360

左の一覧からキーボード、上からUSBメモリーを選択して「Make E2B USB Drive.cmd」ボタンを押します。すると、コマンドプロンプトが表示されます。あとは画面の指示に従って設定していくだけです。次のサイトが参考になります。

Windows ISOを取り扱う場合はRMPrepUSBも必要ですが、今回はLinuxのみを対象とするのでE2B v1.98のみのインストールでOKです。

hirogura.com

ファイルシステムFAT32にするか、NTFSにするかはどちらでもよいですが、今回はmacOSでもデータの読み書きが可能なFAT32を選択しました。インストーラーを作るためにWindows版のEasy2Bootを使いましたが、イメージの書き込みはドラッグ&ドロップでOKです。

というわけで、インストール後は _ISO¥LINUXディレクトリーにひたすらISOイメージをコピーします。注意することといえばmacOSでデータ書き込みをする際はファイル先頭に「._」というファイル名から始まる隠しファイルが生成されるので、データの書き込み後削除した方が良いです(USBブートするとそのファイルが選択肢に出てしまうため)。

f:id:ytooyama:20180314000211p:plain:w360

で、あとはUSBブートするとこんな感じに使えます。

f:id:ytooyama:20180314000308p:plain:w360

LINUXディレクトリーにコピーしたISOは「LINUX Menu」を選択すると現れます。選択してEnterすると、いつものインストーラーが起動するはずです。

f:id:ytooyama:20180314000333p:plain:w360

ちなみにUbuntu 16.04.1を使っている理由ですが、Ubuntu 16.04.4のISOイメージのサイズが中途半端に大きいサイズなのが原因か、はたまたISOイメージの作りがEasy2Bootと相性が良くないのかうまくブートできませんでした。そこで古いのを使ったところうまくいったので、めんどいのでUbuntu 16.04.1をつかっています。インストールしたらアップデートすればいいだけですから。

[2018年6月1日追記]

Easy2BootのブートUSBをつくる際に、CONTIG.ISOのサイズを指定するステップがあります。このサイズを規定より大きなサイズにしておくと、中途半端に大きくて読み込めないISOイメージを読み込めるようになるようです。

CONTIG.ISOのサイズを1024MBにしたところ、Ubuntu 16.04.4のISOでも問題なくなりました。

VMware vSphere ESXiの仮想マシンのBIOSについて

たまに変更しますが、その度に操作に戸惑うのでメモ。

物理マシンと同様、ESXiの仮想マシンにもBIOSが存在します。 BIOSはキーボード操作でひらけますが、結構シビアなので「仮想マシンオプション」の「次回仮想マシンの起動時に強制的にBIOSセットアップ画面に入る」を設定して再起動すると簡単です。

f:id:ytooyama:20180224222924p:plain:w400

ESXiのBIOSは物理マシンのそれとほぼ一緒ですが、困るのがブートデバイスの起動順の切り替えの方法です。

f:id:ytooyama:20180224223517p:plain:w400

画面上は「+」キーと「-」キーで優先順位を設定するとありますが、実際は「Shift」 + 「+」 と「-」キーで設定します。設定変更後はBIOSの変更の保存を忘れずに。

Amazon Fire OSの各種アップデートが提供された

Fire OSが更新されました。 デバイス毎に更新版のFireOSが提供されています。

Amazon.co.jp ヘルプ: Fire & Kindleソフトウェアアップデート

FireTV Stickは自動的に更新されていました。

  • Fire OS 5.2.6.2

Kindle Fire HDはアップデートチェックをして適用しました。

  • Fire OS 5.6.0.1