windows 7 64bit と ubuntu 12.04LTS のデュアルブート環境の構築

 お仕事の環境のノートPC (UEFI BIOSThinkPad) を,"Windows7 64bit" と "ubuntu 12.04 LTS" のデュアルブートにしようとした話の顛末。

 

 まずは,windows を何も考えることなくクリーンインストール。この段階では legacy biosuefi の違いに無頓着だったため「デバイスのブートオーダーリストの順番を変えてUSB-CDを一番にしてもUSBにつないだDVDドライブからブートしねぇ」問題を試行錯誤的に(結果的に正しく)回避。

◎ 正解は,BIOSで boot を both (legacy デバイスからでも uefi デバイスからでもOK)とした上で,boot order を "legacy first" とすること

 はじめは全パーティションを window 7 で使うつもりだったので,ウィンドウズ上の「管理ツール」から「ディスクの管理」を選択し,パーティションを縮小。

◎ これもできることを知らなかった。便利になりましたねぇ…

 そして本題の ubuntu のインストールに移ろうとするが,ubuntuインストーラーからはインストール済みのwindowsはおろか,ディスクのパーティションが全く見えない状況が発生。ここで丸2日ほど停滞。

 これはどうも,windows の GPT ディスクが,MBRなディスク管理プログラムとの互換性を保つために protective MBR という領域をディスク先頭に書くことが理由のよう。それにより,ubuntu インストーラーで動作する gparted などでは本当はあるはずのuefiパーティション(この言葉遣いが正しいのか確信なし)が見えず,全体が1個のMBRパーティションとして見える(MSのドキュメントを見ると,そのMBRパーティションは使用済みマークがつくので「よくわからないまま既存のパーティション情報を消してしまうヒューマンエラーが回避できる」という主張のよう)ので,???となったということらしい。

 その回避策は,ubuntuforum.org にて発見した方法で,GPT対応のgdiskというユーティリティーを ubuntu においてインストールし,

> expert mode に変更(x を選択)

> GPT のテーブルをクリアするため,z を選択し,「最初の質問には Y,次の質問 (MBRの情報を消し去るか?)には N」を選ぶ

ことでwindowsインストール時に作ったパーティションが見えるようになる。

 後の手順はサクサクで,grubのインストールも問題ありませんでした。ただしデフォルトだと後入れした ubuntu が優先OSとなるので,windows メインの ubuntu サブとして使いたい場合はちょっと細工が必要だが,それは別稿にて。

cygwin で alternative ?

 諸事情で cygwin x86 を(ほぼ)フルインストール。見たことの無いものに戸惑うこと少々。editorのカテゴリを選別せずカテゴリごと "install" してしまうと,X11, nox, w32 の3種類の emacs がインストールされる模様。

 手元の環境だとデフォルトが x11 版になるが,X が重いのでできれば w32 にしたい。けど /usr/bin/emacs のリンク先が /etc/alternatives/emacs となっていて???と思っていたのだが,

 

/usr/sbin/alternatives --config emacs

 

とすると,パッケージを選択できることを google 先生に教わる。しかし,落ち着いて

/etc/alternatives/emacs を見たら /usr/bin/emacs-X11.exe へのリンクだったので,このコマンドによらずとも /etc/alternatives/emacs のリンク先を変えればいいのか?などと思案。

 

# 実験してませんので試される方は自己責任でお願いします。

MySQL バックアップ

WordPress とかのCMSで利用する MySQL の「既存DB」をネットワーク越しにバックアップするお話.

 

リモートホスト上にあるDB一覧を見る>

mysqlshow -h hostname_or_ip -u user_id -p

<名前が my_db であるデータベースの中身をバックアップ>

mysqldump -h hostname_or_ip -u user_id -p my_db > my_db.sql

 (*要は,標準出力への垂れ流し出力をリダイレクトでファイルに落とすだけ)

 

リモートホストのDBをターゲットにするなら,当たり前だがローカルに MySQLサーバーなぞ走らせる必要はない。

gnupack

これまで「windows 上の emacs と言えば meadow を指すもの」とばかりmeadowを使い続けさせてもらっていたが,どうも開発が止まってしまって久しい模様。そこでいろいろ物色していると,gnupack がコンパクトにまとまっていて良さそう。

  • インストールと言っても,展開するだけ。
  • 基本的設定は配布パックのトップレベルフォルダの config.ini をいぢるだけ

と,大変ありがたい仕組みになっている。とは言うものの,少々設定を加えないといけないところがあるので,忘れないようにメモしておく。

1) apt-cyg における proxy の設定

 apt-cyg はパッケージマネージャ。ローカルにないソフトパッケージの追加や,各種メンテ作業などを行える。apt-cygは内部的に wget (http / ftp 経由でファイル取得するユーティリティ)を呼び出す形でファイルのダウンロードを行う模様。しかしPCのネットワーク接続が proxy 経由だとうまく動かないらしい。そこで /etc/wgetrc を /home/.wgetrc として保存した上で http_proxy と ftp_proxy のコメントを外し,かつ内容を適切に変更する必要がある.

2) apt-cyg におけるミラーサイトを国内サイトに設定

 デフォルトではファイルを求めて高飛びする模様。初回だけ

 apt-cyg --mirror http://aaa.bbb.ccc.jp/pub/cygwin

のようにして,ミラーサイトを aaa.bbb.ccc.jp とする。

png / jpeg → eps

TeX で文書作成をしようとすると,図は eps フォーマットがやりやすい。

んでも,例えば PPT などでポンチ絵を描いたものを図として保存すると (office 201x picture managerなど),png や bmp などになってしまう。それを eps にコンバートするには,EPS-conv を使えば手軽にできるが,なぜかネガポジがおかしくなったりして,今一つな感じ(windows 8.x だからか?)

 

で,Image Magick の convert コマンド(コマンドラインツール)の出番となるが,圧縮オプションを付けないと,たかが 30KB くらいの原画像が 2MB 以上に巨大化するため好ましくない。そこで、以下のようにしてこれを回避。

 

convert -compress lzw hoge.png eps3:hoge.eps

 

色を変えた部分が重要と思われ。

Eclipse で外部プログラムを呼び出す (nxtOSEK)

8月にある summer school の関係で eclipse を試す。もともと,開発環境のセットアップ情報を説明してくれているサイトが良く書けていて,eclipse & eclipse IDE for C/C++ の導入で困ることはほとんどなかったのだが,一つだけ。

ビルドして完成したイメージを NXT に転送するときには,John Hansen さんの nexttool を利用する。それを eclipse から呼び出して機能するように設定するわけだが,その設定で「作業対象の場所を環境変数を使って ${project_loc} と指定しろ」とあるのでその通りにしたのだが,実行時に ${project_loc} なんて場所知らないよぉ~(意訳)というエラーが出る。

ちょっと google ってみたところ,ある海外サイトにこんな情報が

★ Variable reference empty selection ${project_loc} 

If you get this problem in Eclipse while running your launch configuration, then your launch configuration depends on the project location. So before you run your launch configuration you need to have your project selected in the project explorer so that Eclipse can know which project’s location you want to refer to.

この赤字部分,eclipse 左側の project explorer でプロジェクト名をクリックして選択された状態にしておくことと対応している。実際クリックすると,文字列の背景が変化して「選択された感」が出るようになっている。

IEEE PDF eXpress compliant な PDF の作成 (初稿を改編)

どんな問題?

 w32tex を利用して dvipdfmx により pdf をつくると,出来上がった pdf には欧文の基本14フォントが埋め込まれないのだそうです。それを忘れたまま IEEE PDF eXpress のチェックを受けると

Error :  Font xxxxx is not embedded 

というエラーメッセージが出ます。これは,w32tex でインストールされる dvipdfmx の pdf 変換設定が,デフォルトで

Courier,  Courier-Bold, Courier-Oblique, Courier-BoldOblique, Helvetica, Helvetica-Bold, Helvetica-Oblique, Helvetica-BoldOblique, Times-Roman, Times-Bold, Times-Italic, Times-BoldItalic, Symbol, ZapfDingbats

 の欧文14フォントを埋め込まない設定となっていることが原因のようでした。

解決策(1)

 web 上の情報として,dvi ファイルから pdf を作成するときに,上記14フォントのmap 情報を指定した dlbase14.map ファイルを, -f オプションの引数として指定して

  dvipdfmx -f dlbase14.map hogehoge.dvi

 とすれば良いと書いてあったのですが... bunta の手元の環境ではなぜか symbol フォントだけがこの方法で埋め込めませんでした。

 

 慌てたbuntaは,adobe acrobat で解決しようとしましたが,acrobat の pdf 印刷機能の設定を「プレス設定」として作ったファイルには確かに symbol フォントも埋め込まれるものの,今度はその symbol フォントが使われている元凶?と思われるグラフ(MATLABで eps に export したもの)が原稿の中でずれてしまい,状況は余計悪化・・・。

 

最終解決策

 で,最終的な解決策ですが,以下の2つのことを行いました。備忘録Mさまのブログと奥村先生の TeXFaq を参考にさせて頂きました。

1)c:/Program Files (x86)/gs/gs9.0x/Resource/Init/gs_pdfwr.ps の頭の方,/.standardfonts[ から始まる部分のフォント14個の指定を以下のようにコメントアウト。

/.standardfonts [

%  /Courier /Courier-Bold /Courier-Oblique /Courier-BoldOblique

%  /Helvetica /Helvetica-Bold /Helvetica-Oblique /Helvetica-BoldOblique

%  /Times-Roman /Times-Bold /Times-Italic /Times-BoldItalic

%  /Symbol /ZapfDingbats

] readonly def

 

2)c:\w32tex\share\texmf\dvipdfmx\config\dvipdfmx.cfg の内容変更

このファイルの中ほどにある,gs を用いて pdf を出力する configuration を指定している記述があります(下記参照)が,そこに以下の赤字で書いた内容を追加。

%% GhostScript (Windows):

D "gswin32c -q -dSAFER -dNOPAUSE -dBATCH -sPAPERSIZE=a0 -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dAutoFilterGrayImages=false -dAutoFilterColorImages=false -dGrayImageFilter=/FlateEncode -dColorImageFilter=/FlateEncode -dUseFlateCompression=true -sOutputFile=%o -c .setpdfwrite << /NeverEmbed [] >> -f %i -c quit"

また,同じファイルの下の方にある,font map file の読み込み指定で,デフォルトだとdlbase14.map がコメントアウトされているので,先頭の % を削除して dlbase14.map が読み込まれるようにする(これは解決策(1)に書いた -f オプションによる指定と同じ意味だと思いますが,cfg ファイルに書いておけばコマンドラインでいちいち指定しなくていいので、ずぼらな私にはこちらが合ってます)

 

dvipdfmx のバージョンによっては,.setpdfwrite のあとにもともと << /NeverEmbed [...] >> の記述があり,... の部分に1)の欧文14フォントが指定されているものもあるということで,「その場合は記載されていたフォントを消して、それらのフォントが埋め込まれるようにする必要がある」という web 情報を参考にしたのですが,私の dvipdfmx.cfg では /NeverEmbed 自体がもともと存在していなかったので,もしかしたら新しい dvipdfmx ではこれはしなくていいのかもしれません。

 

 ただ、bunta の手元ではこれで symbol フォントも含めフォントが pdf に埋め込まれるようになりました。

 

(bunta未解決疑問)文字コードからfontの対応関係を与える cmap ファイルと,*.map は別物?