2014年10月18日土曜日
NASからAndroid内のSDカード上へデータをコピー
PCの共有フォルダにAndroidからアクセス(ESファイルエクスプローラ使用)
http://madeinpc.blog50.fc2.com/blog-entry-826.html#more
AndroidにFTPサーバーをたててPCからアクセス(ESファイルエクスプローラ使用)
http://madeinpc.blog50.fc2.com/blog-entry-828.html
特にAndroidを操作する方法では、直接NASを覗けていい感じである。
が、どちらのやり方でも、デバイスのローカル領域へのコピーは成功するが、SDカードへコピーする段階で失敗する(直接コピー・クリップボード経由のコピー、共に失敗)。
検索したらAndroid4.4からの権限問題だった。
http://saponoblog.seesaa.net/article/399165076.html
http://octoba.net/archives/20140821-android-feature-kitkat-cant-write-sd.html
ESファイルエクスプローラがBaiduと繋がっているという話もある。
http://bylines.news.yahoo.co.jp/yamamotoichiro/20140811-00038166/
そうでなくてもタスクマネージャから終了しても通知アイコンが消えず、鬱陶しいのでアンインストール。
代替として、SDカードへのコピーが可能との記述のあるFileCommanderをGoogle Playからインストールして試してみたが駄目だった。どうやらプリインストールされているものでないと駄目らしい。
http://app-roid.com/blog-entry-1288.html
プリインストールならばと「マイファイル」(インターフェースから察するに、中身FileCommanderっぽい)を試してみたら、SDカード上へのコピーに成功した。
FTPクライアント機能があるので、NASにFTPサーバを立てれば使い物になるかもしれない。面倒臭いけど。
容量を喰うメディアデータはクラウドやストリーミングで処理し、Androidでファイラを使用すべきでない時期に来ているのかもしれない。
そうなるとデバイスには外部ストレージ要らなくなり、面倒くさいので代わりにメディアプレーヤーが欲しくなる。
NW-A16欲しい。
2014年10月16日木曜日
2014年5月14日水曜日
apportエラー
ソフトウェアセンターをアップデートしたら、ブートするごとに以下のエラーメッセージが発生されるようになった。
残念ながら、Ubuntu14.04で内部エラーが発生しました。
レポートを見ると、apportサービスなるものが関わっているらしい。
▼ExclutablePath
/usr/share/apport/apportcheckresume
▼Package
linux-image-3.13-0-24-generic 3.13.0-24.47
【以下略】
apportサービスを止める事で、再起動時にエラーメッセージが出ることは無くなった。
sudo service apport stop
設定ファイルを編集する事で恒久的に停止させることが出来るようだけど、素早い修正が行われることを期待して行わない事にする。
■参考文献
Internal error with apport-gpu-error-intel.py
How To Disable The Apport Error Reporting On Ubuntu 14.04 Trusty Tahr
残念ながら、Ubuntu14.04で内部エラーが発生しました。
レポートを見ると、apportサービスなるものが関わっているらしい。
▼ExclutablePath
/usr/share/apport/apportcheckresume
▼Package
linux-image-3.13-0-24-generic 3.13.0-24.47
【以下略】
apportサービスを止める事で、再起動時にエラーメッセージが出ることは無くなった。
sudo service apport stop
設定ファイルを編集する事で恒久的に停止させることが出来るようだけど、素早い修正が行われることを期待して行わない事にする。
■参考文献
Internal error with apport-gpu-error-intel.py
How To Disable The Apport Error Reporting On Ubuntu 14.04 Trusty Tahr
2014年5月5日月曜日
無線はハードウェアのスイッチで無効になっています
ubuntu14.04にしたら、いつの間にやらWi-fiが使用出来なくなっていた。
システム設定 > ネットワークを開くと、"無線"のプロパティが"オフ"になっていて"オン"にする事が出来ない。
右上のネットワークアイコンをクリックすると「無線はハードウェアのスイッチで無効になっています」とステータス表示されていて、"Wi-fiを有効にする"は半透明状態で設定する事が出来ない。
結論からいうと、キーボード上のショートカットキーで無効化されていたのが原因で、もう一度押下すると無事に繋がるようになった。ショートカットキーはOSの更に下で動作しているのだなあ。
解決の処方はこれだけで、残りは調査時のメモ。
ショートカットキーで無効化されている状態のWi-fiを、lshwとrfkillコマンドでステータス表示してみた。rfkillはWi-fiやBluetoothといった無線デバイスへのインターフェースを提供するものらしい。
~$ sudo lshw -C network
*-network 無効
詳細: 無線インターフェース
製品: RTL8723AE PCIe Wireless Network Adapter
ベンダー: Realtek Semiconductor Co., Ltd.
物理ID: 0
バス情報: pci@0000:03:00.0
論理名: wlan0
バージョン: 00
シリアル: **:**:**:**:**:**
幅: 64 bits
クロック: 33MHz
性能: pm msi pciexpress bus_master cap_list __________________ physical wireless
設定: broadcast=yes driver=rtl8723ae driverversion=3.13.0-24-generic firmware=N/A latency=0 link=no multicast=yes wireless=IEEE 802.11bgn
リソース: irq:18 IOポート:d000(サイズ=256) メモリー:f7900000-f7903fff
【省略】
~$ rfkill list
0: hci0: Bluetooth
Soft blocked: no
Hard blocked: no
1: phy0: Wireless LAN
Soft blocked: no
Hard blocked: yes
ショートカットキーで有効にすると、上記の赤字部分が、それぞれ"無効"→""、"yes"→"no"に変わる。
システム設定 > ネットワークを開くと、"無線"のプロパティが"オフ"になっていて"オン"にする事が出来ない。
右上のネットワークアイコンをクリックすると「無線はハードウェアのスイッチで無効になっています」とステータス表示されていて、"Wi-fiを有効にする"は半透明状態で設定する事が出来ない。
結論からいうと、キーボード上のショートカットキーで無効化されていたのが原因で、もう一度押下すると無事に繋がるようになった。ショートカットキーはOSの更に下で動作しているのだなあ。
解決の処方はこれだけで、残りは調査時のメモ。
ショートカットキーで無効化されている状態のWi-fiを、lshwとrfkillコマンドでステータス表示してみた。rfkillはWi-fiやBluetoothといった無線デバイスへのインターフェースを提供するものらしい。
~$ sudo lshw -C network
*-network 無効
詳細: 無線インターフェース
製品: RTL8723AE PCIe Wireless Network Adapter
ベンダー: Realtek Semiconductor Co., Ltd.
物理ID: 0
バス情報: pci@0000:03:00.0
論理名: wlan0
バージョン: 00
シリアル: **:**:**:**:**:**
幅: 64 bits
クロック: 33MHz
性能: pm msi pciexpress bus_master cap_list __________________ physical wireless
設定: broadcast=yes driver=rtl8723ae driverversion=3.13.0-24-generic firmware=N/A latency=0 link=no multicast=yes wireless=IEEE 802.11bgn
リソース: irq:18 IOポート:d000(サイズ=256) メモリー:f7900000-f7903fff
【省略】
~$ rfkill list
0: hci0: Bluetooth
Soft blocked: no
Hard blocked: no
1: phy0: Wireless LAN
Soft blocked: no
Hard blocked: yes
ショートカットキーで有効にすると、上記の赤字部分が、それぞれ"無効"→""、"yes"→"no"に変わる。
2014年4月15日火曜日
【和訳】Cmakeのチュートリアル
Below is a step-by-step tutorial covering common build system issues that CMake helps to address. Many of these topics have been introduced in Mastering CMake as separate issues but seeing how they all work together in an example project can be very helpful. This tutorial can be found in the Tests/Tutorial directory of the CMake source code tree. Each step has its own subdirectory containing a complete copy of the tutorial for that step.
A Basic Starting Point (Step 1)
最も基本的なプロジェクトは、ソースファイルからの実行ファイルのビルドです。シンプルなプロジェクトでは、2行あるだけのCMakeistsファイルが必要な全てです。
いろいろと追記する前の最初期のCMakeListsは以下のとおりです。
#CMake version2.6以降をサポート cmake_minimum_required (VERSION 2.6)
#プロジェクト名 Tutorial project (Tutorial)
#実行ファイル"Tutorial"をソースファイル"tutorial.cxx"から作る add_executable(Tutorial tutorial.cxx)
この例で、CMakeListsには大文字・小文字が混在しています。CMakeは混在を大文字・小文字を区別しません。
ソースコードtutorial.cxx"は、数字の平方根を計算しますが、現状では下記の通りとてもシンプルです。
// A simple program that computes the square root of a number #include <stdio.h> #include <stdlib.h> #include <math.h> int main (int argc, char *argv[]) { if (argc < 2) { fprintf(stdout,"Usage: %s number\n",argv[0]); return 1; } double inputValue = atof(argv[1]); double outputValue = sqrt(inputValue); fprintf(stdout,"The square root of %g is %g\n", inputValue, outputValue); return 0; }
Adding a Version Number and Configured Header File
最初に、実行ファイルとプロジェクトにバージョン番号を導入します。従来通りソースコードのみで管理も出来ますが、CMakeLists内で行うこと事でより高い柔軟性を得られます。バージョン番号を追加するために、CMakeListsを以下の通り修正します。
cmake_minimum_required (VERSION 2.6) project (Tutorial) # The version number. set (Tutorial_VERSION_MAJOR 1) set (Tutorial_VERSION_MINOR 0) # TutorialConfig.h.inを元にTutorialConfig.hを自動生成する configure_file ( "${PROJECT_SOURCE_DIR}/TutorialConfig.h.in" "${PROJECT_BINARY_DIR}/TutorialConfig.h" ) # TutorialConfig.hの出力先のディレクトリを、インクルードファイルの検索パスリストに追加 include_directories("${PROJECT_BINARY_DIR}") # add the executable add_executable(Tutorial tutorial.cxx)
"${PROJECT_SOURCE_DIR}/TutorialConfig.h.in"を以下の通り作成
// the configured options and settings for Tutorial #define Tutorial_VERSION_MAJOR @Tutorial_VERSION_MAJOR@ #define Tutorial_VERSION_MINOR @Tutorial_VERSION_MINOR@
CMakeヘッダファイルを構成する時、@Tutorial_VERSION_MAJOR@と@Tutorial_VERSION_MINOR@の値はCMakeListsで定義される値に置換されます。
次に、tutorial.cxxを、生成されたヘッダファイルをインクルードし、バージョン番号を使用するように修正します。
// A simple program that computes the square root of a number #include <stdio.h> #include <stdlib.h> #include <math.h> #include "TutorialConfig.h" int main (int argc, char *argv[]) { if (argc < 2) { fprintf(stdout,"%s Version %d.%d\n", argv[0], Tutorial_VERSION_MAJOR, Tutorial_VERSION_MINOR); fprintf(stdout,"Usage: %s number\n",argv[0]); return 1; } double inputValue = atof(argv[1]); double outputValue = sqrt(inputValue); fprintf(stdout,"The square root of %g is %g\n", inputValue, outputValue); return 0; }
Adding a Library (Step 2)
ライブラリをプロジェクトに追加します。. ライブラリはユーザ独自の実装を含み、実行ファイルはコンパイラが標準で提供するライブラリ代わりに、このライブラリを使用します。ここでは、ライブラリをサブディレクトリ"subdirectory"に置きます。次の1行をCMakeListsに追加します。
add_library(MathFunctions mysqrt.cxx)
"mysqrt.cxx"はライブラリに含まれる関数のソースファイルです。
ライブラリを使用するために、TOP階層のCMakeListsにadd_subdirectoryを追記します。これで、ライブラリもビルド対象になります。
また、 MathFunctions/mysqrt.hを見つけられるように、インクリード・ディレクトリに追加を行います。
最後に、ライブラリを実行ファイル"Tutorial"に追加します。
include_directories ("${PROJECT_SOURCE_DIR}/MathFunctions") add_subdirectory (MathFunctions) # add the executable add_executable (Tutorial tutorial.cxx) target_link_libraries (Tutorial MathFunctions)
MathFunctionライブラリの作成を考えるケースがあります。巨大なライブラリや、3rdパーティのコードを使いたい場合です。
トップ階層のCMakeListsにオプションを追加します。
# should we use our own math functions? option (USE_MYMATH "Use tutorial provided math implementation" ON)
上記で記述したメッセージは、CMake時、GUIに表示されます。デフォルト値はONですが、ユーザは必要に応じて変更出来ます。設定値はキャッシュされ、CMakeするごとに設定を繰り返す必要はありません。
次の変更は、MathFunctionsライブラリのビルド・リンク条件を作成することです。トップ階層のCMakeListsの文末を変更します。
# add the MathFunctions library? # if (USE_MYMATH) include_directories ("${PROJECT_SOURCE_DIR}/MathFunctions") add_subdirectory (MathFunctions) set (EXTRA_LIBS ${EXTRA_LIBS} MathFunctions) endif (USE_MYMATH) # add the executable add_executable (Tutorial tutorial.cxx) target_link_libraries (Tutorial ${EXTRA_LIBS})
MathFunctionsがこのプロジェクトに含まれるかどうかはオプションUSE_MYMATHの設定で決定されます。EXTRA_LIBS変数に実行ファイルにリンクされるライブラリをまとめていることに注意してください。 これは、多くのオプションコンポーネントを抱える巨大なプロジェクトを管理する時のセオリーです。
オプションUSE_MYMATHの設定をソースコードで使用するには以下のようにします。
// A simple program that computes the square root of a number #include <stdio.h> #include <stdlib.h> #include <math.h> #include "TutorialConfig.h" #ifdef USE_MYMATH #include "MathFunctions.h" #endif int main (int argc, char *argv[]) { if (argc < 2) { fprintf(stdout,"%s Version %d.%d\n", argv[0], Tutorial_VERSION_MAJOR, Tutorial_VERSION_MINOR); fprintf(stdout,"Usage: %s number\n",argv[0]); return 1; } double inputValue = atof(argv[1]); #ifdef USE_MYMATH double outputValue = mysqrt(inputValue); #else double outputValue = sqrt(inputValue); #endif fprintf(stdout,"The square root of %g is %g\n", inputValue, outputValue); return 0; }
マクロUSE_MYMATHは、CMakeからソースコードへTutorialConfig.h.in構成ファイルを通して提供します。
TutorialConfig.h.inに以下を記述すると、USE_MYMATHオプションがONの場合のみ、TutorialConfig.h内で#defineされます。
#cmakedefine USE_MYMATH
Installing and Testing (Step 3)
インストール・ルールとテスト機能のサポートをプロジェクトに追加します。
インストールルール:
MathFunctionsライブラリについて、インストールされるライブラリとヘッダーファイルのセットアップを行います。
これには、以下の2行をMathFunctionsのCMakeListsに追加します。
install (TARGETS MathFunctions DESTINATION bin) install (FILES MathFunctions.h DESTINATION include)
アプリケーションについて、トップ階層のCMakeListsへ以下を追記します。これは、実行ファイルと出力ヘッダーファイルのインストールを指示します。
# add the install targets install (TARGETS Tutorial DESTINATION bin) install (FILES "${PROJECT_BINARY_DIR}/TutorialConfig.h" DESTINATION include)
以上です。この時点でチュートリアルのビルドが可能です。"make install"もしくは「IDEでINSTALLターゲットのビルドの実行」を行うことで、適切なヘッダーファイル、ライブラリ、実行ファイルがインストールされます。CMake変数の"CMAKE_INSTALL_PREFIX"は、インストールされるファイルのルートの決定に使用されます。
テストの追加:
トップ階層のCMakeListsの文末に、アプリケーションの正常動作を検証する幾つかの基本テストを追加することができます。
# does the application run add_test (TutorialRuns Tutorial 25) # does it sqrt of 25 add_test (TutorialComp25 Tutorial 25) set_tests_properties (TutorialComp25 PROPERTIES PASS_REGULAR_EXPRESSION "25 is 5") # does it handle negative numbers add_test (TutorialNegative Tutorial -25) set_tests_properties (TutorialNegative PROPERTIES PASS_REGULAR_EXPRESSION "-25 is 0") # does it handle small numbers add_test (TutorialSmall Tutorial 0.0001) set_tests_properties (TutorialSmall PROPERTIES PASS_REGULAR_EXPRESSION "0.0001 is 0.01") # does the usage message work? add_test (TutorialUsage Tutorial) set_tests_properties (TutorialUsage PROPERTIES PASS_REGULAR_EXPRESSION "Usage:.*number")
最初のテストは単純にアプリケーション実行を検証します。セグメンテーション違反(segfault)もしくは他のクラッシュは起こらず、0を返します。これがCTestテストの基本形です。続く幾つかのテストの全ては、テスト出力が特定の文字列を含むか検証する、PASS_REGULAR_EXPRESSIONテストプロパティを利用します(make use of)。
このケースでは、数値がふさわしいかの検証と、引数の数が不正な場合のUSAGEメッセージの出力チェックを行います。
入力値の異なる多くのテストを追加したい場合、マクロを作る事も可能です。第1引数にマクロ名、第2引数以降にマクロのパラメータを指定します。
#define a macro to simplify adding tests, then use it macro (do_test arg result) add_test (TutorialComp${arg} Tutorial ${arg}) set_tests_properties (TutorialComp${arg} PROPERTIES PASS_REGULAR_EXPRESSION ${result}) endmacro (do_test) # do a bunch of result based tests do_test (25 "25 is 5") do_test (-25 "-25 is 0")
それぞれのdo_testマクロの発動すると、引数に基づいた名称・入力値・結果を使ったテストがプロジェクトに追加されます。
Adding System Introspection (Step 4)
ターゲット・プラットフォームが持っていない可能性がある機能に依存したコードをプロジェクトに追加する場合を考えます。サンプルでは、"log"や"exp"関数を必要とするコードを追加し、プラットフォームがそれらをサポートする場合はそれを使用します。最初にこれらの関数が機能するかをCheckFunctionExists.cmakeマクロでテストします。これには、トップ階層のCmakeListsに追記します。
# does this system provide the log and exp functions?
#"CheckFunctionExists.cmake"をインクルードして実行する
include (CheckFunctionExists.cmake) check_function_exists (log HAVE_LOG) check_function_exists (exp HAVE_EXP)
CMakeがプラットフォーム上にそれらを見つけたかを示す値を定義する為にTutorialConfig.h.inを編集します。
// does the platform provide exp and log functions? #cmakedefine HAVE_LOG #cmakedefine HAVE_EXP
テストが実施されるのはTutorialConfig.hのconfigure_fileコマンドより前であることは重要です。configure_fileコマンドは、Cmakeの現在の設定を使用して即座にファイルを形成します。
テストに成功した場合はマクロ(HAVE_LOG, HAVE_EXP)が定義されるのでこれを使用してコードを分岐させることが出来ます。
// if we have both log and exp then use them #if defined (HAVE_LOG) && defined (HAVE_EXP) result = exp(log(x)*0.5); #else // otherwise use an iterative approach . . .
Adding a Generated File and Generator (Step 5)
生成したソースファイルをビルドプロセスに追加する方法を説明します。このサンプルにおいて、ビルドプロセスでテーブルを作成し、そのテーブルをアプリケーション内にコンパイルします。まず、テーブルを作成するプログラムを用意します。
MathFunctionsサブディレクトリで、"MakeTable.cxx"を新規作成します。
MathFunctionsサブディレクトリで、"MakeTable.cxx"を新規作成します。
// A simple program that builds a sqrt table #include <stdio.h> #include <stdlib.h> #include <math.h> int main (int argc, char *argv[]) { int i; double result; // make sure we have enough arguments if (argc < 2) { return 1; } // open the output file FILE *fout = fopen(argv[1],"w"); if (!fout) { return 1; } // create a source file with a table of square roots fprintf(fout,"double sqrtTable[] = {\n"); for (i = 0; i < 10; ++i) { result = sqrt(static_cast<double>(i)); fprintf(fout,"%g,\n",result); } // close the table with a zero fprintf(fout,"0};\n"); fclose(fout); return 0; }
テーブルはC++のコードで生成され、出力ファイルは実行時の引数で指定します。
MathFunctionsのCMakeListsに、実行ファイルMakeTableをビルドするコマンドを追加し、ビルドプロセスの一部としてMakeTableを実行します。
MathFunctionsのCMakeListsに、実行ファイルMakeTableをビルドするコマンドを追加し、ビルドプロセスの一部としてMakeTableを実行します。
# テーブルを生成する実行ファイル"MakeTable"を追加 add_executable(MakeTable MakeTable.cxx) # ソースコードを生成するコマンドを追加 add_custom_command ( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/Table.h COMMAND MakeTable ${CMAKE_CURRENT_BINARY_DIR}/Table.h DEPENDS MakeTable ) # 生成したソースコードのパスをインクルードファイルの検索パスに追加 include_directories( ${CMAKE_CURRENT_BINARY_DIR} ) # メインライブラリ"MathFunctions"に追加 add_library(MathFunctions mysqrt.cxx ${CMAKE_CURRENT_BINARY_DIR}/Table.h )
最初に、MakeTableの実行ファイルを、他の実行ファイルの場合と同様に、追加します。
それから、MakeTableの実行からTable.hを作る方法を詳述するカスタム・コマンドを追加します。
次に、mysqrt.cxxが、生成されるファイル"Table.h"に依存することをCMakeに知らせる必要があります。Table.hをライブラリMathFunctionsのソースリストに追加します。mysqrt.cxxがTable.hを見つけてインクルード出来るように、Table.hのパスをインクルード・ディレクトリのリストに追加する必要もあります。
このプロジェクトのビルド時、MakeTable実行ファイルを最初にビルドします。次に、Table.hを生成するためにMakeTableを実行します。最後に、mysqrt.cxxをコンパイルします。このmysqrt.cxxはMathFunctionsライブラリを生成するTable.hを含んでいます。
以上の修正を盛り込んだトップ階層のCMakeListsは下記のとおりです。
それから、MakeTableの実行からTable.hを作る方法を詳述するカスタム・コマンドを追加します。
次に、mysqrt.cxxが、生成されるファイル"Table.h"に依存することをCMakeに知らせる必要があります。Table.hをライブラリMathFunctionsのソースリストに追加します。mysqrt.cxxがTable.hを見つけてインクルード出来るように、Table.hのパスをインクルード・ディレクトリのリストに追加する必要もあります。
このプロジェクトのビルド時、MakeTable実行ファイルを最初にビルドします。次に、Table.hを生成するためにMakeTableを実行します。最後に、mysqrt.cxxをコンパイルします。このmysqrt.cxxはMathFunctionsライブラリを生成するTable.hを含んでいます。
以上の修正を盛り込んだトップ階層のCMakeListsは下記のとおりです。
cmake_minimum_required (VERSION 2.6) project (Tutorial) # The version number. set (Tutorial_VERSION_MAJOR 1) set (Tutorial_VERSION_MINOR 0) # does this system provide the log and exp functions? include (${CMAKE_ROOT}/Modules/CheckFunctionExists.cmake) check_function_exists (log HAVE_LOG) check_function_exists (exp HAVE_EXP) # should we use our own math functions option(USE_MYMATH "Use tutorial provided math implementation" ON) # configure a header file to pass some of the CMake settings # to the source code configure_file ( "${PROJECT_SOURCE_DIR}/TutorialConfig.h.in" "${PROJECT_BINARY_DIR}/TutorialConfig.h" ) # add the binary tree to the search path for include files # so that we will find TutorialConfig.h include_directories ("${PROJECT_BINARY_DIR}") # add the MathFunctions library? if (USE_MYMATH) include_directories ("${PROJECT_SOURCE_DIR}/MathFunctions") add_subdirectory (MathFunctions) set (EXTRA_LIBS ${EXTRA_LIBS} MathFunctions) endif (USE_MYMATH) # add the executable add_executable (Tutorial tutorial.cxx) target_link_libraries (Tutorial ${EXTRA_LIBS}) # add the install targets
# TARGETSに続く"Tutorial"を名前とする実行ファイルを、binディレクトリ以下に作成する install (TARGETS Tutorial DESTINATION bin)# "Tutorial"を名前とする実行ファイルを、binディレクトリ以下に作成する# FILESに続くファイルのパス(複数のコピー)を、DESTINATIONに続く"include"ディレクトリにコピーするinstall (FILES "${PROJECT_BINARY_DIR}/TutorialConfig.h" DESTINATION include) # does the application run add_test (TutorialRuns Tutorial 25) # does the usage message work? add_test (TutorialUsage Tutorial) set_tests_properties (TutorialUsage PROPERTIES PASS_REGULAR_EXPRESSION "Usage:.*number" ) #define a macro to simplify adding tests macro (do_test arg result) add_test (TutorialComp${arg} Tutorial ${arg}) set_tests_properties (TutorialComp${arg} PROPERTIES PASS_REGULAR_EXPRESSION ${result} ) endmacro (do_test) # do a bunch of result based tests do_test (4 "4 is 2") do_test (9 "9 is 3") do_test (5 "5 is 2.236") do_test (7 "7 is 2.645") do_test (25 "25 is 5") do_test (-25 "-25 is 0") do_test (0.0001 "0.0001 is 0.01")
TutorialConfig.h looks like:
// the configured options and settings for Tutorial #define Tutorial_VERSION_MAJOR @Tutorial_VERSION_MAJOR@ #define Tutorial_VERSION_MINOR @Tutorial_VERSION_MINOR@ #cmakedefine USE_MYMATH // does the platform provide exp and log functions? #cmakedefine HAVE_LOG #cmakedefine HAVE_EXP
And the CMakeLists file for MathFunctions looks like:
# first we add the executable that generates the table add_executable(MakeTable MakeTable.cxx) # add the command to generate the source code add_custom_command ( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/Table.h DEPENDS MakeTable COMMAND MakeTable ${CMAKE_CURRENT_BINARY_DIR}/Table.h ) # add the binary tree directory to the search path # for include files include_directories( ${CMAKE_CURRENT_BINARY_DIR} ) # add the main library add_library(MathFunctions mysqrt.cxx ${CMAKE_CURRENT_BINARY_DIR}/Table.h) install (TARGETS MathFunctions DESTINATION bin) install (FILES MathFunctions.h DESTINATION include)
Building an Installer (Step 6)
プロジェクトを一般に配布する事を考えます。様々なプラットフォームに対して、バイナリとソースの双方を配布するには、前述のStep3「Installing and Testing」で行ったインストール(ソースコードからビルドしてインストール)とは若干の違いが存在します。
このサンプルでは、インストールパッケージをビルドしますが、バイナリインストールと、cygwin, debian, RPMs等で見られるようなパッケージ管理システム機能をサポートします。
プラットフォーム固有のインストーラを作るために、"Packing with CPack"チャプターで記述されている通り、CPackを使用します。
トップ階層のCMakeLists.txtに追記します。
このサンプルでは、インストールパッケージをビルドしますが、バイナリインストールと、cygwin, debian, RPMs等で見られるようなパッケージ管理システム機能をサポートします。
プラットフォーム固有のインストーラを作るために、"Packing with CPack"チャプターで記述されている通り、CPackを使用します。
トップ階層のCMakeLists.txtに追記します。
# build a CPack driven installer package include (InstallRequiredSystemLibraries) set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/License.txt") set (CPACK_PACKAGE_VERSION_MAJOR "${Tutorial_VERSION_MAJOR}") set (CPACK_PACKAGE_VERSION_MINOR "${Tutorial_VERSION_MINOR}") include (CPack)
以上で達成出来ます。.
"InstallRequiredSystemLibraries"のインストールから開始します。このモジュールはランタイムライブラリをインクルードします。ランタイムライブラリは、現在のプラットフォームに対してプロジェクトが必要とします。
次に、ライセンスを置いた場所と、プロジェクトのバージョン情報を示すCPack変数をセットします。
最後に、CPackモジュールをインクルードします。CPackモジュールは、定義した変数や、他のインストーラの対象となるシステムのプロパティを使用します。
通常の手順でプロジェクトをビルドを行い、その上で絵CPackを実行します。バイナリで配布する場合は以下となります。
"InstallRequiredSystemLibraries"のインストールから開始します。このモジュールはランタイムライブラリをインクルードします。ランタイムライブラリは、現在のプラットフォームに対してプロジェクトが必要とします。
次に、ライセンスを置いた場所と、プロジェクトのバージョン情報を示すCPack変数をセットします。
最後に、CPackモジュールをインクルードします。CPackモジュールは、定義した変数や、他のインストーラの対象となるシステムのプロパティを使用します。
通常の手順でプロジェクトをビルドを行い、その上で絵CPackを実行します。バイナリで配布する場合は以下となります。
cpack -C CPackConfig.cmake
ソースファイルで配布する場合は以下となります。
cpack -C CPackSourceConfig.cmake
Adding Support for a Dashboard (Step 7)
ダッシュボードへテスト結果の投稿をサポートする機能は、容易に追加出来ます。このチュートリアルの以前に、既に幾つかのテストをプロジェクトに定義しています。これらのテストを実行し、結果をダッシュボードに投稿します。ダッシュボードのサポートをインクルードするために、TOP階層のCMakeListsにCTestモジュールをインクルードします。
# enable dashboard scripting include (CTest)
また、CTestConfig.cmakeファイルを作成します。これに、ダッシュボードに対してプロジェクト名を記述します。
set (CTEST_PROJECT_NAME "Tutorial")
CTestは実行時、このファイルを読み取ります。シンプルなダッシュボードを作成するためには、プロジェクトでCMakeを実行し、ディレクトリを生成ファイルの出力先に変更し、"ctest –D Experimental"を実行します。ダッシュボードの結果は、Kitwareの公式ダッシュボードにアップロードされます。
2014年4月7日月曜日
i300SAにLinux用Wifiドライバをインストール
NextGear i300SA(中身はclevo w110er)に入れたUbuntu13.10からWifiに繋がらない。
アクセスポイントは見えていて、WPA認証しても接続に失敗する。
偶に接続状態になっても、実際のデータ通信は行われない。(ゲートウェイへpingを打っても戻ってこない)
かと思うと、ふとした拍子に正常に通信を始めることがある。
Windos7でブートした時は問題なく通信していてハードウェアは正常に見えるので、
ドライバが中途半端に動作しているのでは?と推測する。
PCIバス上のデバイス
$ lspci
【中略】
03:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8723AE PCIe Wireless Network Adapter
【後略】
$ lspci -vnns 03:00.0
03:00.0 Network controller [0280]: Realtek Semiconductor Co., Ltd. RTL8723AE PCIe Wireless Network Adapter [10ec:8723]
Subsystem: Realtek Semiconductor Co., Ltd. Device [10ec:0726]
Flags: bus master, fast devsel, latency 0, IRQ 18
I/O ports at d000 [size=256]
Memory at f7900000 (64-bit, non-prefetchable) [size=16K]
Capabilities: <access denied>
Kernel driver in use: rtl8723ae
$ sudo lshw -C network -numeric
*-network
詳細: 無線インターフェース
製品: RTL8723AE PCIe Wireless Network Adapter [10EC:8723]
ベンダー: Realtek Semiconductor Co., Ltd. [10EC]
物理ID: 0
バス情報: pci@0000:03:00.0
logical name: wlan0
バージョン: 00
シリアル: 2c:d0:5a:61:52:ad
幅: 64 bits
クロック: 33MHz
capabilities: pm msi pciexpress bus_master cap_list __________________ physical wireless
設定: broadcast=yes driver=rtl8723ae driverversion=3.11.0-18-generic firmware=N/A ip=192.168.0.4 latency=0 link=yes multicast=yes wireless=IEEE 802.11bgn
リソース: irq:18 ioport:d000(size=256) メモリー:f7900000-f7903fff
10ecはベンダID、 8723はプロダクトIDらしい。
rtl8723aeというドライバが機能していない可能性が高い。
$ udevadm info -a -p /sys/class/net/wlan0 | grep DRIVER
DRIVER==""
DRIVERS=="rtl8723ae"
DRIVERS=="pcieport"
DRIVERS==""
カーネルに登録されているドライバ情報を確認する
$ modinfo rtl8723ae
filename: /lib/modules/3.11.0-18-generic/kernel/drivers/net/wireless/rtlwifi/rtl8723ae/rtl8723ae.ko
firmware: rtlwifi/rtl8723fw_B.bin
firmware: rtlwifi/rtl8723fw.bin
description: Realtek 8723E 802.11n PCI wireless
license: GPL
author: Larry Finger <Larry.Finger@lwfinger.net>
author: Realtek WlanFAE <wlanfae@realtek.com>
author: lizhaoming <chaoming_li@realsil.com.cn>
srcversion: B27D28DF892890255CCDDBE
alias: pci:v000010ECd00008723sv*sd*bc*sc*i*
depends: rtlwifi,rtl_pci,mac80211
intree: Y
vermagic: 3.11.0-18-generic SMP mod_unload modversions
parm: swenc:Set to 1 for software crypto (default 0)
(bool)
parm: ips:Set to 0 to not use link power save (default 1)
(bool)
parm: swlps:Set to 1 to use SW control power save (default 0)
(bool)
parm: fwlps:Set to 1 to use FW control power save (default 1)
(bool)
parm: debug:Set debug level (0-5) (default 0) (int)
ドライバ名をキーワードに検索すると、askubuntu.comに以下の投稿が見つかった。
"Wireless card Realtek RTL8723AE-BT is not recognized"
MD5チェックを行った後に解凍
$ echo fd10e9a347c6447f649324d6bdab53de rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012.tar.gz > md5check.txt
$ md5sum --check md5check.txt rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012.tar.gz: OK
$ rm md5check.txt
$ tar zxvf rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012.tar.gz
必要なツールをインストール
$ sudo apt-get install build-essential linux-headers-generic linux-headers-`uname -r`
makeを行うと、"error: ‘struct ieee80211_conf’ has no member named ‘channel’"とメッセージを表示して失敗する。
下記の投稿によると、13.10ではヘッダファイルの構成が変わった為らしい。
上記URLで紹介されているドライバを試したところ、上手くいっている、ように見える。
アクセスポイントは見えていて、WPA認証しても接続に失敗する。
偶に接続状態になっても、実際のデータ通信は行われない。(ゲートウェイへpingを打っても戻ってこない)
かと思うと、ふとした拍子に正常に通信を始めることがある。
Windos7でブートした時は問題なく通信していてハードウェアは正常に見えるので、
ドライバが中途半端に動作しているのでは?と推測する。
PCIバス上のデバイス
$ lspci
【中略】
03:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8723AE PCIe Wireless Network Adapter
【後略】
$ lspci -vnns 03:00.0
03:00.0 Network controller [0280]: Realtek Semiconductor Co., Ltd. RTL8723AE PCIe Wireless Network Adapter [10ec:8723]
Subsystem: Realtek Semiconductor Co., Ltd. Device [10ec:0726]
Flags: bus master, fast devsel, latency 0, IRQ 18
I/O ports at d000 [size=256]
Memory at f7900000 (64-bit, non-prefetchable) [size=16K]
Capabilities: <access denied>
Kernel driver in use: rtl8723ae
$ sudo lshw -C network -numeric
*-network
詳細: 無線インターフェース
製品: RTL8723AE PCIe Wireless Network Adapter [10EC:8723]
ベンダー: Realtek Semiconductor Co., Ltd. [10EC]
物理ID: 0
バス情報: pci@0000:03:00.0
logical name: wlan0
バージョン: 00
シリアル: 2c:d0:5a:61:52:ad
幅: 64 bits
クロック: 33MHz
capabilities: pm msi pciexpress bus_master cap_list __________________ physical wireless
設定: broadcast=yes driver=rtl8723ae driverversion=3.11.0-18-generic firmware=N/A ip=192.168.0.4 latency=0 link=yes multicast=yes wireless=IEEE 802.11bgn
リソース: irq:18 ioport:d000(size=256) メモリー:f7900000-f7903fff
10ecはベンダID、 8723はプロダクトIDらしい。
rtl8723aeというドライバが機能していない可能性が高い。
$ udevadm info -a -p /sys/class/net/wlan0 | grep DRIVER
DRIVER==""
DRIVERS=="rtl8723ae"
DRIVERS=="pcieport"
DRIVERS==""
カーネルに登録されているドライバ情報を確認する
$ modinfo rtl8723ae
filename: /lib/modules/3.11.0-18-generic/kernel/drivers/net/wireless/rtlwifi/rtl8723ae/rtl8723ae.ko
firmware: rtlwifi/rtl8723fw_B.bin
firmware: rtlwifi/rtl8723fw.bin
description: Realtek 8723E 802.11n PCI wireless
license: GPL
author: Larry Finger <Larry.Finger@lwfinger.net>
author: Realtek WlanFAE <wlanfae@realtek.com>
author: lizhaoming <chaoming_li@realsil.com.cn>
srcversion: B27D28DF892890255CCDDBE
alias: pci:v000010ECd00008723sv*sd*bc*sc*i*
depends: rtlwifi,rtl_pci,mac80211
intree: Y
vermagic: 3.11.0-18-generic SMP mod_unload modversions
parm: swenc:Set to 1 for software crypto (default 0)
(bool)
parm: ips:Set to 0 to not use link power save (default 1)
(bool)
parm: swlps:Set to 1 to use SW control power save (default 0)
(bool)
parm: fwlps:Set to 1 to use FW control power save (default 1)
(bool)
parm: debug:Set debug level (0-5) (default 0) (int)
ドライバ名をキーワードに検索すると、askubuntu.comに以下の投稿が見つかった。
"Wireless card Realtek RTL8723AE-BT is not recognized"
- ndiswrapperを試しても上手く行かない
- Realtek社から非公式ながら"92シリーズ"なるドライバ(ソースコード・ファームウェア)を公開している
- 何故かwebではなくDropboxで公開している
MD5チェックを行った後に解凍
$ echo fd10e9a347c6447f649324d6bdab53de rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012.tar.gz > md5check.txt
$ md5sum --check md5check.txt rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012.tar.gz: OK
$ rm md5check.txt
$ tar zxvf rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012.tar.gz
必要なツールをインストール
$ sudo apt-get install build-essential linux-headers-generic linux-headers-`uname -r`
makeを行うと、"error: ‘struct ieee80211_conf’ has no member named ‘channel’"とメッセージを表示して失敗する。
下記の投稿によると、13.10ではヘッダファイルの構成が変わった為らしい。
上記URLで紹介されているドライバを試したところ、上手くいっている、ように見える。
2014年4月3日木曜日
Windowsの共有フォルダにLinuxからアクセスする
Windows側 : Windows XP 32bit
Linux側 : Ubuntu 13.04 64bit
Linux側 : Ubuntu 13.04 64bit
- Windowsに、あらかじめ共有フォルダを作っておく。(※1)
- WindowsマシンのIPアドレス(※2)とワークグループ名をメモしておく
- Linuxにsambaをインストール
- /etc/samba/smb.confをオープンし、以下の編集を行う
workgroup = {Windowsのワークグループ名} - Ubuntuで、「場所 > ネットワーク > サーバーへ接続」を選択し、以下のアドレスを入力
smb://{WindwosのIPアドレス} - 「Windowsネットワークフォルダ > Windowsマシン名 > 共有フォルダ」が見える筈
※1 共有ドキュメントは対象外らしい。
※2 ipconfigコマンドを使用
余談ではあるが、プラネックスコミュニケーションズのUSB無線LANアダプタは、サポート外ながらLinux用ドライバを提供している。素晴らしい。
2014年3月13日木曜日
Qtにおけるビルドファイルの出力先
Qtのmakeファイルの出力先は、プロジェクトモードにして、ビルドディレクトリ欄に記述する。
Debug/Releaseそれぞれについて指定する必要がある。
("ビルド構成を編集"のリストボックスで選択可能)
BBBでQtアプリの自動起動
目的
Qtを使用してBBB上でGUIアプリを動作させる。GUIアプリではKeyPressEventを使用してキーボードの入力値を取得している
GUIアプリはBBBの電源投入で自動起動させる
環境
BeagleBoneBlack + AngStrom(3.8) + Qt(5.1)
# uname -a
Linux beaglebone 3.8.13 #1 SMP Wed Aug 14 16:25:00 CEST 2013 armv7l GNU/Linux
Qt Window Systemを使用する為、XServerを無効化しておく。
Linux beaglebone 3.8.13 #1 SMP Wed Aug 14 16:25:00 CEST 2013 armv7l GNU/Linux
Qt Window Systemを使用する為、XServerを無効化しておく。
# systemctl disable gdm.service
XServerはsystemdで管理されているので、GUIモード中にCUIモードにしたい場合
# systemctl stop gdm.service
Xserverをまた立ち上げたい場合
# systemctl enable gdm.service
オートログイン化の為に、以下のサービスを編集している。
/etc/systemd/system/getty.target.wants/serial-getty@tty1.service
#ExecStart=-/sbin/agetty --noclear %I 38400 linux
ExecStart=-/sbin/agetty -a root %I 38400 linux
試行
【1】telnetでログインしてQt-GUIアプリを起動
・ウィンドウ生成 成功・ログファイル出力 成功
・仮想キーボード・LCD4ボタン共に反応せず
【2】BOOT1時のsystemdによる自動起動
・ウィンドウ生成 成功・ログファイル出力 成功
・仮想キーボード・LCD4ボタン共に反応せず
・init.dによる起動も試みたが同様
【3】USBキーボードを接続してログイン、Qt-GUIアプリを手動起動
・ウィンドウ生成 成功・ログファイル出力 成功
仮想キーボード・LCD4ボタン共に反応せず
考察
BBBに直ログインした場合、端末名はtty1。telnetでログインした場合、端末名はttyO0。
systemdで自動起動した場合、端末名は"?"("ps ax"コマンドで確認)
tty1からアプリを起動しないとキーボードを取得出来ないらしい。
systemdによる起動は、ログインプロンプトに先駆けて行われるので端末と結び付けられていない。
なのでログイン後にアプリを自動起動する必要があるが、.bashrcや.bash_profileはAngstromでは機能しない。
対策
ログインプロンプトはsystemdによって管理されるサービスによって実行され、コマンドはagettyが使用される。agettyは、ログインの方法に標準の"/bin/login"の代わりに独自のプログラムをroot権限で実行する"-l"オプションが存在する。
これを利用して、アプリの起動→終了後に/bin/loginを実行するスクリプトをagettyから読み出す。
/etc/systemd/system/getty.target.wants/serial-getty@tty1.service
ExecStart=-/sbin/agetty -l /home/root/MyApp.sh -a root %I 38400 linux
/home/root/MyApp.sh
#!/bin/bash
/bin/login root
参考文献
man of agettyLinux起動の仕組みを理解しよう[rcスクリプト編]
Automatic login on Angstrom Linux
Systemd入門(1) - Unitの概念を理解する
自作プログラムをデーモンとして起動させる(by init.d)
systemdの*.serviceファイルの書き方
Create Startup Script in Angstrom
Automatic login on Angstrom Linux
BeagleBone Black(Angstrom)にSSHで入れるようにする
Qt4 自前のsignalの作り方
Qt Events
.bashrc と .bash_profile 結局どっちを使えばいい?
2014年3月10日月曜日
【Linux】他のユーザをログアウト
Telnet(ttyO1)からログインして、直接続(tty1)にログインしているユーザをキックする。
# who
01:16:23 up 1:16, 2 users, load average: 0.10, 0.08, 0.05
USER TTY LOGIN@ IDLE JCPU PCPU WHAT
root ttyO0 00:06 7.00s 0.22s 0.04s w
root tty1 00:07 1:08m 0.64s 0.57s ./ViEditView -qws
tty1が関わるプロセスを表示する
# ps ax | grep tty1
185 tty1 Ss 0:00 /bin/login --
410 tty1 S 0:00 -sh
411 tty1 S+ 0:00 ./ViEditView -qws
443 ttyO0 S+ 0:00 grep tty1
ここで、tty1のログインに関わるプロセスIDは410。これにkillシグナルを送る
# kill -9 410
再度whoコマンドを実行し、tty1ユーザがいなくなっている事を確認する
# who
root ttyO0 Jan 1 00:06
■参考文献
不要なユーザを強制ログアウトさせる
【 kill 】 プロセスおよびジョブを強制終了する
【 who 】 現在ログインしているユーザーを表示する
# who
01:16:23 up 1:16, 2 users, load average: 0.10, 0.08, 0.05
USER TTY LOGIN@ IDLE JCPU PCPU WHAT
root ttyO0 00:06 7.00s 0.22s 0.04s w
root tty1 00:07 1:08m 0.64s 0.57s ./ViEditView -qws
tty1が関わるプロセスを表示する
# ps ax | grep tty1
185 tty1 Ss 0:00 /bin/login --
410 tty1 S 0:00 -sh
411 tty1 S+ 0:00 ./ViEditView -qws
443 ttyO0 S+ 0:00 grep tty1
ここで、tty1のログインに関わるプロセスIDは410。これにkillシグナルを送る
# kill -9 410
再度whoコマンドを実行し、tty1ユーザがいなくなっている事を確認する
# who
root ttyO0 Jan 1 00:06
■参考文献
不要なユーザを強制ログアウトさせる
【 kill 】 プロセスおよびジョブを強制終了する
【 who 】 現在ログインしているユーザーを表示する
2014年2月23日日曜日
Update Ubuntu; 12.04(32bit) → 13.10(64bit)
13.10のインストールディスクを作り、12.04の領域にクリーンインストール。
~$ cat /etc/lsb-release
~$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=13.10
DISTRIB_CODENAME=saucy
DISTRIB_DESCRIPTION="Ubuntu 13.10"
~$ uname -a
Linux xxxxxxx 3.11.0-17-generic #31-Ubuntu SMP Mon Feb 3 21:52:43 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
無事にバージョンが上がっている事を確認。
以下、気付いた事
・ブートローダ
12.04ではWindowsのブートローダでLinuxを選択するとgrubが起動して、そこからUbuntuを再度選ぶという二度手間だったが、13.10ではgrubが先に起動し、結果的に一発で起動するようになった。
Windowsのブートローダの方が融通が利かないがトラブル対策で先に起動していたが、当面はこれで良い事とする。
・日本語入力出来ない
12.04ではWindowsと同様に「半角/全角」でASCIIと日本語が切り替えらたが、13.10では反応しない。ツールバーのそれらしいアイコンをクリックして"Anthy"を選択すると出来るようになるが、Anthyは数年前に開発が終了しているらしいので使用したくない。
調べてみると、従来は「半角/全角」で文章入力方式を管理するIBusをON/OFFし、それでASCII・日本語を切り替えていたが、現在はIBusは常時ONに代わり、結果として「半角/全角」が機能していない。
代わりにIBusに入力ソース(英語、Anthyによる日本語、ATOKによる日本語、etc.)等を設定し、それを「ソースの切り替え」に登録したキー入力で切り替える必要がある。
試したところ、「ソースの切り替え」に「Zenkaku Hankaku」や「Super+Space」は登録出来るものの機能しない(SuperはいわゆるWindowsキー)。バグらしい。
入力ソースにはMozc(ibus-mozc)をインストールして「テキスト入力」ダイアログ左下の「+」アイコンから入力ソースに追加、、ソース切り替えは「Command+Space」で事無きを得た。
Ubuntu 13.10と日本語入力
Windowsのブートローダの方が融通が利かないがトラブル対策で先に起動していたが、当面はこれで良い事とする。
・日本語入力出来ない
12.04ではWindowsと同様に「半角/全角」でASCIIと日本語が切り替えらたが、13.10では反応しない。ツールバーのそれらしいアイコンをクリックして"Anthy"を選択すると出来るようになるが、Anthyは数年前に開発が終了しているらしいので使用したくない。
調べてみると、従来は「半角/全角」で文章入力方式を管理するIBusをON/OFFし、それでASCII・日本語を切り替えていたが、現在はIBusは常時ONに代わり、結果として「半角/全角」が機能していない。
代わりにIBusに入力ソース(英語、Anthyによる日本語、ATOKによる日本語、etc.)等を設定し、それを「ソースの切り替え」に登録したキー入力で切り替える必要がある。
試したところ、「ソースの切り替え」に「Zenkaku Hankaku」や「Super+Space」は登録出来るものの機能しない(SuperはいわゆるWindowsキー)。バグらしい。
入力ソースにはMozc(ibus-mozc)をインストールして「テキスト入力」ダイアログ左下の「+」アイコンから入力ソースに追加、、ソース切り替えは「Command+Space」で事無きを得た。
スクリーンショットの「日本語」は、"日本語キーボードのASCII入力"の事。「英語(US)」にすると英語圏のキーボード配列になる。
mozc単体で「全角/半角」によりASCIIと日本語を切り替えてくれるので、「Command+Space」を使うことは無さそうだ。
参考文献
日本語入力をラクにする MozcUbuntu 13.10と日本語入力
2014年2月21日金曜日
BBBのブートイメージを変更する
元ネタ
Beagleboard:Updating_The_SoftwareBeagleboard上のeMMCをflash
4GB以上のuSDカードが必要イメージファイル""をダウンロード
BBB-eMMC-flasher-2013.09.04.img.xz
このファイルはeMMCをフラッシュする"eMMC flasher"であり、uSDカードからbootするものでは無い事に注意する事
現在のバージョンでは、uSDカードをOS起動中に外部ストレージに追加可能。
1) DLしたflash-image-fileを解凍
2) Win32DiskImager(for Windows)を使って解凍したflash-image-fileをuSDカードにコピー。
Win32DiskImagerは以下からDL可能
https://wiki.ubuntu.com/Win32DiskImager
3) コピーが完了したら、BBにuSDカードを挿入(※LANケーブル及びUSBデバイスは抜いておくこと)
4) S2ボタン(Boot Switch)を押し続けた状態でBBに電源を投入。
S2ボタンはUSER-LEDのどれかが点滅するまで押し続ける
5) eMMCのflashが始まるとUSER-LEDが点滅を始める。全てのLEDが点灯したらflash完了
6) uSDカードを抜いて電源を切り、今度はS2ボタンを押さずに電源再投入。正常にBootする事を確認
uSDからBoot
uSDカードから直接Boot出来るイメージが定期的に提供される※強制的にuSDカードからBootさせるには、eMMC上のFATパーテーションにある
MLOファイルを削除する。
ここには、BBをUSBケーブルでPCに接続し、thumbdriveとする事でアクセスできる。
4GB上のuSDカードが必要。
イメージファイルをダウンロード
Angstrom-Cloud9-IDE-GNOME-eglibc-ipk-v2012.12-beaglebone-2013.08.21.img.xz
Win32DiskImagerでuSDカードにコピー。
BBにカードを挿入し、そのまま電源を投入すればuSDからブートする
BBのeMMCをflashする際、uSDカードのフォーマットが不適当な為にトラブルになる場合があり、
これを避ける為に、DiskImagerを使用する前にHP Format Toolを使用する事を推奨
HP USB Disk Storage Format Tool Ver 2.18
FATもしくはFAT32でフォーマットを行う
2014年2月18日火曜日
i300SAのSSDをMZ-7TE250Bに換装
Windows7とUbuntuのデュアルブート構成を構築した際のメモ。
- 最初に、i300SAに付いてくるディスクでWindows7(64bit)をインストール。
パーテーション領域は120GBに設定 - Ubuntu12-04-3をインストール。
この時、[ディスク領域の割り当て] で[UbuntuをWindows 7とは別にインストール]を選んでしまい、全自動でインストールが行われてしまう。
Windowsの「システム回復ディスク」でBootLoaderを元に戻した後、「ディスクの管理」ツールでLinux及びスワップ領域を削除。
その後、再度Ubuntuをインストールし、今度は[ディスク領域の割り当て] で [それ以外]を選択。
スワップ領域は16GBにした結果、作ったパーテーションは以下のようになった。 - [それ以外]のUbuntuインストールではブートローダは変更されないのでUbuntuで起動出来ない。そこで、WindowsのブートローダにUbuntuを選択出来るように仕込む
- grub4dos-0.4.4.zipをDLし、そこに含まれるgrldrとgrldr.mbrをCドライブ直下(C:\)にコピー
- メモ帳で"C:\menu.lst"を作成
title Linux
root (hd0,5)
kernel /boot/grub/core.img - コマンドプロンプトで設定を編集
C:\Windows\system32>bcdedit /create /d "Linux" /application bootsector
エントリ {77647cd5-9861-11e3-a329-ee98fbcc180e} は正常に作成されました。
C:\Windows\system32>bcdedit /set {77647cd5-9861-11e3-a329-ee98fbcc180e} device partition=C:
この操作を正しく終了しました。
C:\Windows\system32>bcdedit /set {77647cd5-9861-11e3-a329-ee98fbcc180e} path \grldr.mbr
この操作を正しく終了しました。
C:\Windows\system32>bcdedit /displayorder {77647cd5-9861-11e3-a329-ee98fbcc180e} /addlast
この操作を正しく終了しました。 - 設定が正しく反映されている事を確認する
C:\Windows\system32>bcdedit
Windows ブート マネージャー
--------------------------------
identifier {bootmgr}
device partition=\Device\HarddiskVolume1
description Windows Boot Manager
locale ja-JP
inherit {globalsettings}
default {current}
resumeobject {77647cd1-9861-11e3-a329-ee98fbcc180e}
displayorder {current}
{77647cd5-9861-11e3-a329-ee98fbcc180e}
toolsdisplayorder {memdiag}
timeout 30
Windows ブート ローダー
--------------------------------
identifier {current}
device partition=C:
path \Windows\system32\winload.exe
description Windows 7
locale ja-JP
inherit {bootloadersettings}
recoverysequence {77647cd3-9861-11e3-a329-ee98fbcc180e}
recoveryenabled Yes
osdevice partition=C:
systemroot \Windows
resumeobject {77647cd1-9861-11e3-a329-ee98fbcc180e}
nx OptIn
リアル モード ブート セクター
--------------------------------
identifier {77647cd5-9861-11e3-a329-ee98fbcc180e}
device partition=C:
path \grldr.mbr
description Linux
2014年2月10日月曜日
「コンピレーションの一部」チェックボックス
iTunesで、「情報を見る」→「情報」で「コンピレーションの一部」にチェックが入っていると、"Compilations"フォルダに曲データが保存される。このチェックを外すと、自動的に"アルバムアーティスト"フォルダに移動される。全曲移動すれば、"Compilations/[アルバム名]"フォルダも削除される。このチェックを外す操作は、何故かアルバム単位で出来ないので、1曲単位で行う必要がある。
2014年2月5日水曜日
PCからUSB経由で端末上のSDカードにデータ転送する
PCとGalaxyNote3をUSB接続すると、PCからはカメラデバイスとして認識され、任意のファイルを転送出来ません。
初代GalaxyNoteの時はマスストレージとして見えて好き勝手出来たのですが。
どうやら専用ドライバを入れる必要があるらしく、Samsungのサイトからドライバだけインストールしてみたところ、ドライバのインストール自体には成功するものの、デバイスを接続するとINFファイルが無いと言われて相変わらず使えません。
仕方なくSamsungの提供しているツールKiesをインストールするとマスストレージとして見えるようになりました。
接続の際にKiesを立ち上げる必要はありません。
■参考文献
GalaxyNote3でスクリーンショットを撮る方法
SAMSUNG Kies
初代GalaxyNoteの時はマスストレージとして見えて好き勝手出来たのですが。
どうやら専用ドライバを入れる必要があるらしく、Samsungのサイトからドライバだけインストールしてみたところ、ドライバのインストール自体には成功するものの、デバイスを接続するとINFファイルが無いと言われて相変わらず使えません。
仕方なくSamsungの提供しているツールKiesをインストールするとマスストレージとして見えるようになりました。
接続の際にKiesを立ち上げる必要はありません。
■参考文献
GalaxyNote3でスクリーンショットを撮る方法
SAMSUNG Kies
ラベル:
Android,
GalaxyNote3
2014年1月28日火曜日
CmakeでStaticライブラリを作る
Linuxにおいて、.aはStaticライブラリ、.soはSharedライブラリ(≒Dynamic Link)。
CmakeでStaticライブラリを作るには、"-DBUILD_SHARED_LIBS=OFF"をオプションに含める。
CmakeでStaticライブラリを作るには、"-DBUILD_SHARED_LIBS=OFF"をオプションに含める。
2014年1月23日木曜日
OS起動時の環境変数設定
従来のLinuxでは"~/.bash_profile"に記述していたが、最近のUbuntuでは"~/.profile"に設定するらしい。
確かに"~/.bash_profile"は存在せず、"~/.profile"は存在する。
"~/.bash_profile"内で実行された"~/.bashrc"も"~/.profile"から実行されている。
■参考文献
・Linux起動時に読みこむスクリプト、環境変数について
・Ubuntu 10.04 で .bash_profile でなくて .profile
↓後で読む
Linux起動の仕組みを理解しよう[init/inittab編]
確かに"~/.bash_profile"は存在せず、"~/.profile"は存在する。
"~/.bash_profile"内で実行された"~/.bashrc"も"~/.profile"から実行されている。
■参考文献
・Linux起動時に読みこむスクリプト、環境変数について
・Ubuntu 10.04 で .bash_profile でなくて .profile
↓後で読む
Linux起動の仕組みを理解しよう[init/inittab編]
GalaxyNote3を日本語化
こちらのサイトの通りにやったら出来ました。(環境はUbuntu12.04.3 32bit)
引っ掛かったのは次の2点くらいです
"{install_dir}/eclipse"に移動してeclipseコマンドを実行したらJREが足りないと言われたので、公式サイトを参考にapt-getでOpenJDK7-JREをインストール。
PATH変数にadbコマンドのパスを追記
$ export PATH=${インストール先}/sdk/platform-tools:$PATH
あとはIMEを設定して完了。
【設定】→【コントロール】→【言語と文字入力】→【キーボードと入力方法】
■参考文献
・Galaxy S4の日本語リソースは入ってます [Galaxy_Report]
→日本語化の実践例
・Setting Up the ADT Bundle
→Android SDKの配布元
・How to download and install prebuilt OpenJDK packages
→OpenJDKの配布元
引っ掛かったのは次の2点くらいです
"{install_dir}/eclipse"に移動してeclipseコマンドを実行したらJREが足りないと言われたので、公式サイトを参考にapt-getでOpenJDK7-JREをインストール。
PATH変数にadbコマンドのパスを追記
$ export PATH=${インストール先}/sdk/platform-tools:$PATH
あとはIMEを設定して完了。
【設定】→【コントロール】→【言語と文字入力】→【キーボードと入力方法】
■参考文献
・Galaxy S4の日本語リソースは入ってます [Galaxy_Report]
→日本語化の実践例
・Setting Up the ADT Bundle
→Android SDKの配布元
・How to download and install prebuilt OpenJDK packages
→OpenJDKの配布元
ラベル:
Android,
GalaxyNote3
GalaxyNote3初期設定
目玉アイコンを消す
目の動きを検出して節電や画面スクリーンを行うスマートスクリーンという機能らしい。
機能している気がしないので消す事にする
【Settings】→【Controls】→【Smart screen】→【Smart stay】
バッテリーの残量をパーセンテージ表示にする
【Settings】→【Device】→【Display】→【Show batery percentage】
コネクタのマージンが狭すぎてSIMが取り外せない
セロテープを使おう
APN選べない
・・・目を凝らすとラジオボタンが薄すぎて見えないだけだった
通信出来ている場合でも、電波強度アイコンが常に圏外表示
データ専用SIMを使用していると、一部の機種ではこのような問題が発生するらしい
root権限を取得すれば解消出来るらしい(SystemUI.apk?)が、取りあえずSignalNotificationのインストールで電波状況が表示できるようになった(常時圏外表示のオリジナルアイコンが残っているのが鬱陶しい)。
目の動きを検出して節電や画面スクリーンを行うスマートスクリーンという機能らしい。
機能している気がしないので消す事にする
【Settings】→【Controls】→【Smart screen】→【Smart stay】
バッテリーの残量をパーセンテージ表示にする
【Settings】→【Device】→【Display】→【Show batery percentage】
コネクタのマージンが狭すぎてSIMが取り外せない
セロテープを使おう
APN選べない
・・・目を凝らすとラジオボタンが薄すぎて見えないだけだった
通信出来ている場合でも、電波強度アイコンが常に圏外表示
データ専用SIMを使用していると、一部の機種ではこのような問題が発生するらしい
root権限を取得すれば解消出来るらしい(SystemUI.apk?)が、取りあえずSignalNotificationのインストールで電波状況が表示できるようになった(常時圏外表示のオリジナルアイコンが残っているのが鬱陶しい)。
CameraZoomFxで設定してもシャッター音が消えない
OS依存の問題なので、rootを取る必要があるとCameraZoomFxのヘルプに書いてあった。
バーストモード(バーストHDはOFF)で撮影すれば1440x1080だけどシャッター音はならないので、屋内ではこれで代用するか。
OS依存の問題なので、rootを取る必要があるとCameraZoomFxのヘルプに書いてあった。
バーストモード(バーストHDはOFF)で撮影すれば1440x1080だけどシャッター音はならないので、屋内ではこれで代用するか。
ラベル:
Android,
GalaxyNote3
2014年1月21日火曜日
登録:
投稿 (Atom)