ytooyamaのブログ

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

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

Ubuntu 16.04やCentOS 7で色々あった

昨日のドカ雪から一夜明け、雪道の中の出社はなかなか苦労しました。 かかとに重心をかけて歩幅を狭くして歩くと、割と安定して歩けるような気がしました。

今週は週末くらいまで寒いらしいので、道路に残る雪の凍結や一目見て雪はないように見えるけど、うっすら凍結している舗装された道路に気をつけたいと思います。

Ubuntu 16.04とSpectre対応

Ubuntu 16.04にSpectre対応が入ったカーネルが公開されました。数台(4つくらい)にインストールしてみましたが、とりあえず触ってみた限りは不具合はなさそうです。

Bug #1744244 “linux: 4.4.0-112.135 -proposed tracker” : Bugs : linux package : Ubuntu

CentOS 7のPXEブート

CentOSのISOイメージをいちいちマウントするのが面倒だったので、PXEブートする環境を以前作りました。 CentOS 7のPXEブートができるようにpxe configに次のように記述していました。

label 10
menu label ^10) CentOS 7 x64
kernel cent7/vmlinuz
append linux text initrd=cent7/initrd.img ip=dhcp method=http://ftp.riken.jp/Linux/centos/7/os/x86_64/

ところがなんか時々、PXEブート中やインストーラーの起動中などに失敗してエラーがループしてしまうことがあるのです。 そこでISOイメージをPXEサーバー上のWebサーバーの公開領域(/var/www/htmlの配下)にマウントして、それをmethodに設定しました。

WebサーバーはLighttpdを使い、/etc/lighttpd/lighttpd.confserver.dir-listing = "enable"を追加してディレクトリーインデックスを公開するように設定し、pxe configは次のように書き換えて対応しました。

label 10
menu label ^10) CentOS 7 x64
kernel cent7/vmlinuz
append linux text initrd=cent7/initrd.img ip=dhcp method=http://172.17.14.3/image/cent7/

ちなみにISOイメージのマウントはmountコマンドでmount -o loop -t iso9660 CentOS-7.4-x86_64-Minimal-1708.iso /var/www/html/image/cent7のように実行しましたが、永続化は/etc/fstabに次のように設定しました。

...
/var/www/html/CentOS-7.4-x86_64-Minimal-1708.iso /var/www/html/image/cent7      auto    loop    0       0

当然ながら、PXEサーバーと同じサーバー上のhttpリソースを使うので速いですね。ついでに同じように設定してFedora 27もPXEブートできるように設定しました。

CentOS 7でyumがなんか失敗する

古いバージョンのOpenStackの環境を作る必要があったので、CentOS 7+Packstackでさっくり作ろうと思っていました。 先に書いた問題でちょっとはまりましたが、なんとかCentOS 7.4のインストールとアップデートが終わりPackstackを走らせたら、今度はランダムなパッケージでyumコマンドを使うところでパッケージがなかったり、タイムアウトしたりして処理が中止してしまう問題が起きるようになりました。

インストールするパッケージをyum infoyum listコマンドで調べると、baseやupdatesに存在するパッケージのようです。つまり、標準リポジトリーの問題みたいです。

CentOS 7のミラーサーバーの状態は次のサイトで見ることができます。日本のミラー一覧はこちらのリンクから

the status of CentOS mirrors

そして次がある日のミラー一覧

f:id:ytooyama:20180124000608p:plain

赤字になっているのはどれくらいマスターと同期されていないかを示しているようです。 この状態ながら、リポジトリーの状態が古いのにもかかわらずStatus OKを返しているのはおかしいような気がします。

今回は対象のサーバーを除外するため、次のように設定しました。設定後、もう一度Packstackを実行したところインストールはうまくいった模様です。今後のことを考えるとCentOS 7のローカルミラーを作った方がいいのかな。

# vi /etc/yum/pluginconf.d/fastestmirror.conf
exclude=ftp.nara.wide.ad.jp

Windows 8.1でVPNにアクセスすると「VPN 接続エラー788」が発生する場合の解決方法

IPアドレスもユーザーもパスワードも正しいかつ、そのほかのVPN関連の設定もあっているのに次の様なエラーが出て しまうことがあります。私はWindows 8.1でしか確認していませんが、ほかのバージョンでも起きることがあるかもしれません。

VPNエラー788: セキュリティ層でリモート コンピュータと互換性のあるパラメータをネゴシエートできなかったため、L2TP 接続に失敗しました。」

解決策が次のフォーラムに書かれていました。

VPN error 788:The L2TP connection attempt failed because the security layer could not negotiate compatible parameters with the remote computer

ただこのフォーラム、たまにHTTP 503を吐きやがります。なので、重要なところだけ引用すると次の通りです。

According to your description,please check VPN setting for your client PC.

Ensure your vpn configuration is right.

Then,check that Windows services on your device are configured as described below.

1.Press Win+R,type"services.msc",press Enter.

2.In the "Services" window,scroll down the list to "IKE and AuthIP IPsec Keying Modules".

3.Ensure the "Startup type" is set to be "Automatic" and the "Service status" is "Started".

4.Now back in the "Services" window, double click on "IPsec Policy Agent". Repeat the same process as for the "IKE and AuthIP IPsec Keying Modules", ensuring the "Startup type" is set to be "Automatic" and the "Service status" is "Started".

"IKE and AuthIP IPsec Keying Modules"サービスと"IPsec Policy Agent"サービスを起動して、自動起動する様に設定するといいみたいです。ちなみに、私の環境ではWindowsの再起動が必要でした。

脆弱性「Meltdown」「Spectre」の対応など

昨日が新年初出社でした。 昨日今日と仕事はしつつ、検証環境の脆弱性「Meltdown」「Spectre」の対応を行なっていました。

主に稼働している検証環境はざっと次の通りです。 以下、メモから起こしたため、文体が変わっています。

仮想化ホスト(Linux KVM)

アップデートしたらGRUBなどいくつかのアップデートがあったが、なぜかLinux Kernelのアップデートがapt list -a linux-image-4.9.0-5-amd64とかで見つからなかった(その後apt search linux-image*で検索したら、linux-image-4.9.0-5-amd64が見つかった。謎である)。ググったらKernel didn't update to last versionを発見。同じ症状なので、apt install linux-image-4.9.0-5-amd64を実行して再起動して対応した。

VMのパフォーマンスが落ちる懸念があったが、この環境下のMAASサーバーはとりあえず性能劣化することなく稼働している。

MAASサーバー

今回の脆弱性Ubuntuのライブパッチでは対処できないらしいのでアップデートを実施することに。

insights.ubuntu.com

1/10に対応するパッチが公開(XenialTrusty)されたので、通常通りsudo apt update&& sudo apt upgradeを実行した(実際はAnsibleのaptモジュールを使ってアップデートを実施)。終わったら再起動。特に問題は発生しなかった。

MAASイメージもアップデートをかけた。デプロイしてみたところ、本脆弱性が潰されているLinux Kernelでデプロイできることを確認した。JujuとMAASを使って、脆弱性を修正した状態でKubernetes環境を作れることを確認した。

別VLAN用DNS/DHCP/PXEサーバー

仮想化ホストと同様、Kernelの更新がされなかったが同じ対応方法で切り抜けた。再起動後はパフォーマンスや安定性など特に問題はなし。

とあるRedmine

MAASサーバーと同様の対応をした。再起動後はパフォーマンスや安定性など特に問題はなし。

とあるGitLab

MAASサーバーと同様の対応をした。再起動後はパフォーマンスや安定性など特に問題はなし。

少々時間はかかったものの、特に問題なく現在稼働している。しばらく様子をみたい。