Rys

自分用のメモ

NVM checksum が Valid じゃない

(ブログを移行したのでもう一度書いています)

新しくPCを買ったらubuntuでネットがつながらなかったので解決方法を書きます.

状況

まず, Windows10搭載のPCにubuntu16.04LTSを入れました.
そして有線でネットに繋ごうとしてもdisconnectedになることに気づきました.
とりあえず再起動してみると, 起動時にちらっと Checksum not Valid と出ているのが見えた気がしたので以下のコマンドをterminalで実行して確認.
$ dmesg | grep Valid
すると,
e1000e 0000:00:1f:6: The NVM checksum is Not Valid
と出てきました. やはり, checksumではじかれていました.

解決方法

とりあえずe1000eを最新のものにしてみましたが, 解決されませんでした.
なので, 根本的な解決にはなっていませんが, 以下のようにして解決しました.

まず, 最新のe1000eを ここ からダウンロードしてきます.
(別のpcでダウンロードし, USBで移しました.)
次に, e1000e-3.3.4/srcに移動してそこにあるnvm.cを開き,
s32 e1000e_validate_nvm_checksum_generic(struct e1000_hw *hw)
の内部を return 0 以外全てコメントアウトして保存します.
そして以下のコマンドを実行

$ sudo modprobe -r e1000e
$ sudo make install
$ sudo modprobe e1000e
$ sudo update-initramfs -u

この時, sudo modprobe e1000eを実行すると
modprobe: Error: could not insert e1000e : Reqired key not available
というエラーが出たら(ubuntu14.04では出なかったけど, 16.04では出た), BIOSメニュー(起動時にFn2を押すなどしたら入れる) で詳細設定からセキュアブートを無効にしてからもう一度実行すればおそらく通ります.

UbuntuのAnaconda3にOpenCV + ffmpeg を入れる

UbuntuでもOpenCV + ffmpegを使う必要があったので書きます.

requirementを入れる

apt-get install git libjpeg-dev libpng-dev libtiff5-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev pkg-config cmake libgtk2.0-dev libeigen3-dev libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev sphinx-common libtbb-dev yasm libfaac-dev libopencore-amrnb-dev libopencore-amrwb-dev libopenexr-dev libgstreamer-plugins-base1.0-dev libavcodec-dev libavutil-dev libavfilter-dev libavformat-dev libavresample-dev

OpenCVアーカイブをダウンロード + unzip

wget https://github.com/Itseez/opencv/archive/3.1.0.zip
unzip 3*.zip

buildディレクトリを作成

cd opencv-3.1.0
mkdir build
cd build

cmakeする

cmake -DWITH_FFMPEG=ON -DBUILD_TIFF=ON -DBUILD_opencv_java=OFF -DWITH_CUDA=OFF -DENABLE_AVX=ON -DWITH_OPENGL=ON -DWITH_OPENCL=ON -DWITH_IPP=ON -DWITH_TBB=ON -DWITH_EIGEN=ON -DWITH_V4L=ON -DWITH_VTK=OFF -DBUILD_TESTS=OFF -DBUILD_PERF_TESTS=OFF -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=$(python3 -c "import sys; print(sys.prefix)") -DPYTHON3_EXECUTABLE=$(which python3) -DPYTHON3_INCLUDE_DIR=$(python3 -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") -DPYTHON3_PACKAGES_PATH=$(python3 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") ..

参考ページでは最初のオプションが -DBUILD_FFMPEG=ON となっていたのですが, 自分の環境ではこれではうまくイカなかったので変更しています.

コア数を調べる

grep -c ^processor /proc/cpuinfo

コア数に応じた -j オプションを付けてmake + make install

make -j4
make install

追記

import cv2をするプログラムで, 実行時にGLIBCXX_3.4.21がないよみたいなエラーが出た場合, libgccをインストールすればいいです. anacondaを使っている場合は以下のようにインストールできます.

conda install libgcc

参考ページ

Linux - Linux - OpenCV VideoCaptureが動作しない(58787)|teratail

gitで複数アカウントを使うときローカルをリモートに反映する

gitで複数アカウントを使っている際, git remote add origin リポジトリURL とすると,

remote: Permission to ユーザ名/リポジトリ名 denied to メインアカウント名.
fatal: unable to access 'リポジトリURL': The requested URL returned error: 403

となってしまう.

git  remote add origin https://ユーザ名@github.com/ユーザ名/リポジトリ名.git

とすればいける.

Macのpython3にffmpeg+OpenCV3をいれる

Macffmpegをインストール

Homebrewでffmpegをインストール

brew install ffmpeg

Cmakeを使ってOpenCVをビルドする

Cmakeをインストール

Cmakeをダウンロードし, インストールする.

OpenCV3をダウンロード

OpenCV3をダウンロードし, 解凍(伸張)する.

Cmakeでビルド

まず, ダウンロードしたOpenCV3のディレクトリ内などにbuildディレクトリを作成する.

cd ~/Downloads/opencv-3.1.0
mkdir build

Cmakeを起動して Where is the source codeにダウンロードしたOpenCV3のパスを指定し(Brouseから探す), Where to build the binariesに作成したbuildのパスを指定する.
すると, 以下のような画面になる.
f:id:lilrys:20161218073754p:plain:w300
とりあえず1度configureを押すと赤くなくなる.
searchpythonと入力すると, BUILD, INSTALL, PYTHON2, PYTHON3というグループのみが残るので, これらの中身を以下のように編集する.

f:id:lilrys:20161218075826p:plain:w500 (これは自分の場合なので, 環境によって異なるかもしれません. PYTHON2グループに関しては何も編集していないです.)
次に, searchffmpegと入力し, 以下のように編集する.
何も表示されない場合はAdd Entryで追加する.
f:id:lilrys:20161218080512p:plain:w500
最後に, configureを押し, Configure doneと出たら, Generateを押す.

makeする

最後にterminalを開き, OpenCV3のディレクトリのbuild内に移動し, make, installする.

cd ~/Downloads/opencv-3.1.0/build
make -j2 # j2の数字はpcのコア数
sudo make install

これですべての手順が終わったので, python3のopencvで動画のフレーム切り出しなどffmpegを使用する処理ができるようになっているはず.

参考ページ

Build OpenCV 3 on Mac OS X with Python 3 and ffmpeg support Install OpenCV 3 With Python 3 (Mac OSX) - Luis González