Ubuntu 16.04 LTS

[メモ] 昨日の話。けっこう酷い目にあったので、記録。

Windows7とのデュアルブートになっているDell Inspiron 14z 5423 であるが、Ubuntuの方は、14.04LTSにアップしてから、そのままとなっていた。LTSなので、このままでも良いのだが、出たばっかしの16.04LTSにアップしようと思ったのが運の尽きだった。

ターミナルから、普通にupdateしてupgradeしたつもりだが、何かが悪かったのだろうか。アップグレード終了時に、システムの何かがおかしい、というメッセージ。とりあえず再起動してログインしようとすると、パスワードの催促プロンプトが出ない。ゲストとしてならログイン出来るのだが。

いろいろ試して、プロンプトは出ないものの、キーボードからパスワードを入れると、カーソルは無反応ながら、ログインできた。とりあえず一安心。しかし、何かがおかしいようだ。ログイン画面では、依然として14.04LTSと表示されているが、カーネルは16.04になってるみたいだし。

一番困ったのは、ブート時。Windows7の選択肢がgrub2の画面に出ないのだ。Windowsも使えず、Linuxの方も不完全というのでは、ひどい。周囲に詳しい人、居ないしなあ。どうしたもんじゃろなあ。トホホ。

そう言えば、以前にも、Ubuntuアップグレード時にWindowsの選択肢が消えちゃったことがあった。確か、ms-sysというのをソースからコンパイルしたと思う。幸い、それが残っているので、そのときの日記を参考にしたのだが、ms-sys -7 /dev/sda としたら、Windowsだけの起動になってしまった。おそらくは、sdaではなく、sda2にすべきだったのだろう。sdaはパーティション切ってあり、ntfsはsda2の11Gとsda3の380Gの2つだから。

いずれにせよ、Windows復活したので良かった。どうせ、Ubuntuは不完全にインストールされているから、クリーン・インストールするのだ。16.04LTSのディスクイメージをダウンロードして、DVDに焼いて、DVDからブートして、Ubuntuをインストールする、というのを選ぶ。いろんなアプリを再インストールしなくちゃならないというのは、面倒だけど。

pdftkを用いてPDFのページ順を変更する

[備忘録]
[加藤和也・黒川信重・斎藤毅]数論1 Fermatの夢 を裁断,スキャン,加工してiPadで読んでいたのだが,どうもスキャンのときにページ順を間違えたらしく,PDFの73ページから130ページが逆順になっていた。ScanSnapでスキャンするときに,逆さまに置いたらしい。再度スキャンしてもよいのだが,pdftkで何とかなるらしい。

この場合,1-72ページをそのまま印刷し,73-130は逆順で印刷,そして131から後は再びそのまま印刷する,という感じでコマンドを入力すればよいらしい。具体的には次のようになる。

pdftk before.pdf  cat 1-72  130-73  131-end output after.pdf

複数のtiff画像をまとめてPDFにする

裁断・スキャンして加工したTIFF画像たちをまとめてPDFにする方法。Acrobatでも出来るが,かなり時間がかかる。また,Windowsの画像梱包(pic2pdf)でも出来るはずなのだが,上手く行かない場合があり,理由も分からない。Macで一番手っ取り早いのはPreviewで読み込んでPDFで保存するというものだが,これだとファイルサイズが増加してしまう。せっかく1bitのモノクロ2値にしてGroup4 FAXの圧縮でファイルサイズを小さく加工したのが台無しになってしまう。

ということで,適当なツールを探していたのだが,UNIX(LINUX)ツールのtiffcpとtiff2pdfを使えばよいことを知ったので,メモ。

たとえば,あるフォルダーにある image001.tiff, image002.tiff, という複数のTIFFファイルをまとめたいとする。まずは,tiffcpを使って,

tiffcp image*.tiff bundle.tiff

とすれば,マルチページTIFFファイル bundle.tiffが出来る。次に,

tiff2pdf -o output.pdf bundle.tiff

とすれば,それが output.pdf というPDFファイルに変換される。

ターミナルからやってみたのだが,あっという間に変換が終わってしまい,処理が速いのに驚く。ターミナルからコマンドラインで出来るというのも,スクリプトで一括処理させるのに都合がよい。

gsdjvuをビルドしてdjvudigitalを使う

[備忘録]Ubuntu上でgsdjvuを自前ビルド&インストールしたのでメモ。

使いたいのは djvudigital というプログラム。djvudigital hoge.pdf とすれば,hoge.djvu が出来上がるというもの。そのためには,DjvuLibre というものを入れる必要がある。

DjvuLibre自体はSynapticパッケージマネージャーから簡単にインストール出来るのだが,これだけではダメ。djvudigitalを使おうとすると,これこれが必要なので,別途インストールしてね,的なメッセージが出てしまう。どうやらライセンス(GPLとかCPLとか)の関係で,GSDjvuというものが同梱できないらしい。その辺の事情はGSDjvuのページに書いてある。そこでGSDjvuのページをざっと読んで,自前でのビルドを試みた。

まずはGSDjvuをダンロードする。現時点での最新版は gsdjvu-1.6.tar.gz で,これを解凍した gsdjvu-1.6 というフォルダーを適当な場所に移動させる。今回は,/home/foo/gsdjvu-1.6 とした。ちなみに foo の箇所は自分のアカウント名に置き換え。そして,その中に BUILD という名前のフォルダーを作る。/home/foo/gsdjvu-1.6/BUILD となる。他の名前でも良いと思うが,BUILDがビルド用スクリプトでのデフォルト名になっているので,あとで名前を入力する手間が省ける。

次に,READMEに従って ghostscriptとフォント関係をダウンロード。ghostscript-8.64.tar.bz2 と ghostscript-fonts-std-8.11.tar.gz を指定のサイトからダウンロードして,/home/foo/gsdjvu-1.6/BUILD/ に置く。これ以外にオプションで,解凍ツールとかJPEG, PNG関係のライブラリーがダウンロードリストに載っているが,システムにある場合は,そちらが最新版だろうから,それを使った方が良いだろうというような事が書いてある。実際,これらはすでにシステムに入れてあるので,今回はパスした。

では,ビルド開始。シェルから /home/foo/gsdjvu-1.6/build-gsdjvu なるスクリプトを起動させる。途中でいくつか質問されるが,YESとかYを選択すれば良い。警告(Warning)がたくさん出るので一瞬あせるのだが,無事にビルド出来たようだ。

最後に,インストール。Makefile とか無いので,手動にて移動ならびにシンボリック・リンクを張る。READMEにはrootでインストールする方法が書いてあるが,UbuntuとかMacってルートが居ないんじゃなかったんだっけ? ということで,sudo を付けて次のように。

# sudo cp -r /home/foo/gsdjvu-1.6/BUILD/INST/gsdjvu /usr/local/lib
# cd /usr/local/bin
# sudo ln -s ../lib/gsdjvu/gsdjvu gsdjvu

これで終了。試しに,大鏡の文庫本を変換したら,15MBあったのが,5MBくらいになった。

今回は,Ubuntu上でビルドしたが,Macでもやってみたいと思う。djvulibreはhomebrewで入れてあるので。

Ubuntu 13.04 にインストールしたものメモ(1)

[備忘録]
以前、Ubuntuを使っていたときは、8.04とかそんな頃だったと思う。あちこち変わっているので、自分の為にメモ。

開発関係のプログラムをインストールするために、Synaptic Package Manager を使おうと思ったのだが、見当たらない。UbuntuソフトウェアセンターというMac App Storeみたいなものが入っていて、一般的なアプリはここからインストール出来るようになっている。そこで、まずは、Synaptic Package Manager を探してインストール。次に、Cairo-Dockをインストール。これはMacライクなドックを提供するもの。デフォルトのドックが画面左端にあるのだが、あまり使い易くない。これだったら、以前のメニュー形式の方がましだったなあと。ということで、Cairo-Dockなのであるが、OpenGLをオンにすると挙動が少しおかしい気がする。OpenGLはオフにして使うことにした。特に反応が遅いということもないし。

それから、定番のTeX 一式をTeX Liveで入れる。2012版だけど。Dropboxはちょっと迷ったのだが、TeX入れるのであれば、仕事するかもだから。EvernoteはUbuntu Software Center で探した限りではなかった。あと、チェスプログラムとか適当に。

  • Synaptic Package Manager (グラフィカルなパッケージ管理ツール)
  • GLX-Dock(Cairo-Dock with OpenGL)
  • TeX Live 2012
  • Dropbox
  • PyChess (チェス・プログラム)
  • Shutter (スクリーンショットを撮るアプリ)

ソフトウェアセンターを終了させて、Synapticを起動する。ここから以下をインストール。

  • build-essential (GNU C コンパイラーを始めとする基本ツール類。これがないと始まらない。)
  • opencv関係 (python-opencvを含めて)
  • asymptote (MetaPostを拡張した描画ソフト)
  • nkf (ネットワーク漢字コード変換フィルター)
  • p7zip (=7zip) (7-zip アーカイバーのUNIXコマンドラインへの移植版)

とりあえず今回はこんなところ。

UbuntuアップデートしたらWindowsが起動できなくなった話

まあ,何とか解決したから良かったんだけど。備忘録として記録。

DellにUbuntu 13.04をインストールしてから2週間くらいだろうか。システムのアップデートの通知が来たので,ハアと思いつつもアップデートしたら,再起動が必要ですと。再起動すると,あれ?ブートメニュー(Grub)が増えてる。いや,増えてると同時に,Windows7が消えてる!(笑)

まあ,最悪でもインストールDVDからWindows7を起動してシステムの初期化をすればいいのだが,それはできれば避けたい。ということで,あれこれ検索。Ubuntu Windows7 MBR 修復,あたりで検索すると,ms-sys というUbuntu (Linux) のツールが見つかった。LINUX上でMBR(マスターブートレコード)にWindows(互換?)のブートレコードを書き込めるツールらしい。

安定版のms-sys-2.2.1をダウンロードして解凍。サイトの指示に従って,make, sudo make install してインストール完了。使い方は ms-sys –help で分かる。分かるのだが,デバイス名が分からないので,再び検索。ターミナルで parted -l とすれば表示される。/dev/sda だったので,sudo ms-sys -7 /dev/sda とする。これで,Windows7用のブートローダーがMBRに書き込まれたらしい。

さて,Ubuntuを終了して,電源を入れる。おお!メニューの最後に Windows7(/dev/sda2) (正確にはちょっと文言が違うかもだけど) のように表示されて,Windows7が起動できた。

やれやれ。しかし,どうしてアップデートくらいでこんなことになっちゃうのかなあ。いや,原因はアップデートじゃないのかもだけど。

Dell Inspiron 14z 5423 に Ubuntu 13.04 をインストール

ちょっと手こずったので、メモ。

買ったばかりのWindowsマシンなのだが、せっかくなので(?) Ubuntu (Linuxの一種) をインストールすることにした。準備として既にハードディスクの領域を縮小させて、100GBほどを未使用領域にしていた。ここにUbuntuをインストールして、デュアル・ブートにしようというもの。

今回購入したのはWindows7がプレインストールされた機種なので、Windows8になってからのUEFIによるSecure Bootがらみのトラブルはなかった。その代わりというわけじゃないが、キャッシュ用32GBのmSATA SSDのRAIDによるトラブルを経験した。

まずは最新のUbuntu 13.04の日本語Remix版のISOファイルをダウンロード。Windows7では特別なプログラムを使わなくても、ISOファイルを右クリックすれば、ディスクに焼くというメニューが既にあるので、DVD-Rに焼く。このDVD-RからUbuntuを起動する。DVDから起動するには、F12を押しながら電源を入れればよい。

とりあえずUbuntuをお試しで使うというのを選択。無線LANもマウスも普通に使えた。そこで、インストールしようとするのだが、インストールの種類の選択肢がまったく出ずにブランクのまま。あれこれ調べると、どうも32GBのSSDとHDDがRAID0になっていて、それをUbuntuが認識できないらしい。

解決策は幾つかあるようだが、今回行ったのは、Windowsに戻ってIntel Smart Responce Technology (ISRT) というのをオフにすること。要するにRAIDを解除したわけだ。そうすると、普通にHDDが認識された。あとは手順通り。HDDのパーティションは、4Gほどをswap用にして、残りはext4でフォーマットしてマウント位置はルートの / に設定。あとはしばらく待つのみ。

再起動させると、ブートローダーのGrub2が起動。何もしないとUbuntuが起動する。これで、UbuntuとWindows7のデュアル・ブート環境が出来た。

さっそくUbuntu上のFirefoxでこれを書いているが、日本語の変換もまずまずだし、日本語と欧文の切り替えキーのカスタマイズなども自由にできて、快適である。

ImageMagickのmogrifyコマンドを使う

[備忘録] 以前 The Internet Archive からダウンロードしておいた E. Cahen の Theorie des nombre, tome 2 (整数論,第2巻)。サイズも小さくで良いのだが,何故かMacのプレビュー.appで見ると,ものすごく動作が遅くてスクロールもままならないという状況だった。それで,放っておいたのだった。そのときは対処法など分からなかったのだが,業者に依頼した自炊(?)PDFが時々同じようにスクロールが重たいという経験を経て,どうすれば良いかが自分なりに少し分かってきたので,それを試してみることにした。

処理対象は,thoriedesnombr02caheuoft_bw.pdf というファイル。サイズは27.2MBほど。このままでも良いが,これを cahen2.pdf として保存。Acrobatで開き,jpegにバラして保存。cahen2_Page_001.jpg から cahen2_Page_762.jpg までの762個のjpegファイルが出来る。これらはモノクロの画像なのだが,サイズは500KBないし900KBもあり,かなり大きい。762個で520MBくらいになっている。グレースケールなのかもだが,拡大した様子では,文字部分は2値のようにも感じる。ともかく,これが27MBに圧縮されていたのだから,すごい圧縮率ではある。

さて,これを ImageMagick で白黒2値のtiffに変換して,CCITT Group4の圧縮をかけることにする。ついでに,広すぎる余白を少し削ってみた。iPhoneで見るときは余白ないほうが見やすいから。

ImageMagickのconvertでは多数のファイルを処理させると,ウソみたいに大量のメモリーを消費してしまうので,今回は mogrify というコマンドを使ってみた。convertとほとんど同じ処理が出来る。

mogrify -shave 100x200 -threshold 80% -compress Group4 -format tiff cahen*.jpg
mogrify -format pdf cahen*.tiff
pdftk cahen*.pdf cat output cahen2mono.pdf

作業内容は次の通り。mogrify コマンドで,まず, -shave 100×200 として,左右100ピクセル,上下200ピクセルずつを削除。次に,-threshold 80% で2値化。さらに, -compress Group4 でFAX G4での圧縮,最後に -format tiff でファイル・フォーマットをTIFFにする。これらを cahen*.jpg すべてに適用する。次に,生成されたtiffファイルをpdfに変換し,pdftkによって,これらのpdfを結合して,cahen2mono.pdf にする。最終的なファイルサイズは,25MBくらいになり,Macのプレビューでも,iPhone4Sの i文庫S でも,スムーズにスクロールして,すこぶる快適になった。

最初のページは次のような感じ。

Cahen "Theorie des Nombres" tome 2

iPhone 4Sでのスクリーンショットは大体こんな感じ。

Cahen "Theorie des nombres" on iPhone4S

iPhoneではさすがに文字が小さく,老眼にはつらいのだが,メガネ外すと,それでも何とか読める。何よりも,750ページもあるのに25MBに収まり,動作も軽くなったので,大満足である。

外付けHDDのUbuntu9.04用のブートCD

[ 備忘録 ] 結論。Ubuntuを8.04から9.04にアップするのに合わせて,ブート用のCDも作り直せばよい。ブート用CDにもカーネルコードが入っているのか,これがマッチしないと,一見ブートしているように見えても,かな漢字変換が起動しないとか,不具合が出てくる。ブート用CDを作るためのスクリプトは以前のもので良かった。9.04を外付けのUSB HDDにインストールしたら,9.04のライブCDで起動したあと,次のスクリプト(boot-hdd.sh という名前で保存したとして)を置いたディレクトリーに移動して,

sh ./boot-hdd.sh sdb*

などとする。sdb* の部分は,自分の環境に応じて変更のこと。ワタシの場合,sdb1 だった。このスクリプトは前に8.04用のブートCDを作るときに,Ubuntuのフォーラムでもらってきたもの。どういうわけか,元のページはなくなっているみたいだ。

#!/bin/sh

mkdir usb
sudo mount /dev/$1 usb
sudo sync

pn=`echo $1 | cut -c4-`
upn=`expr $pn - 1`
uid=`sudo vol_id --export /dev/$1 | grep UUID= | cut -c12-`

cat > menu.org < scripts/local-bottom/02xconfig < /root/etc/X11/xorg/pcid
sleep 0.2
num=0
for file in \`chroot /root /bin/ls /etc/X11/xorg | chroot /root /bin/grep pcid-\`; do
    dpc=\`chroot /root /usr/bin/diff -q /etc/X11/xorg/\$file /etc/X11/xorg/pcid\`    
    if [ -z "\$dpc" ]; then
          num=\`echo "\$file" | cut -c 6-\`
    fi
done

if [ \$num -gt 0 ]; then
    chroot /root /bin/cp -f /etc/X11/xorg/xoc-\$num /etc/X11/xorg.conf
else
    mount -n -o bind /sys /root/sys;    mount -n -o bind /proc /root/proc;    mount -n -o bind /dev /root/dev
    DEBUG_XORG_PACKAGE=1 DEBUG_XORG_DEBCONF=1 chroot /root /usr/sbin/dpkg-reconfigure -fnoninteractive --no-reload xserver-xorg
    umount /root/sys;    umount /root/proc;    umount /root/dev
fi
chroot /root sed -i -e 's/pc105/jp106/' -e 's/"us"/"jp"\n\tOption\t\t"XkbOptions"\t"lv3:ralt_switch"/' /etc/X11/xorg.conf  
exit

exit 0
EOF

sudo chmod +x scripts/local-bottom/02xconfig
mv scripts/local-bottom/ntfs_3g scripts/local-bottom/01ntfs_3g
find . | cpio  -o -H newc | gzip > ../initrd.img-$knv-modif
cd ..
sudo cp -f initrd.img*modif usb/boot/
sudo sync

mkdir -p bootcd/boot/grub
cp usb/boot/vmlinuz-* bootcd/boot/
cp initrd.img*modif bootcd/boot/
cp usb/boot/grub/* /usr/lib/grub/i386-pc/stage2_eltorito bootcd/boot/grub/
sed -i -e 's/hd0,[0-9]/cd/' -e 's|/boot|\(cd\)/boot|' bootcd/boot/grub/menu.lst
sudo genisoimage -R -U -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -o hdd-boot.iso bootcd

sudo mkdir usb/etc/X11/xorg
sudo chmod -R 755 usb/etc/X11/xorg
sudo sed -i -e '/^xres/d' -e '/^yres/d' usb/etc/usplash.conf
cp usb/etc/init.d/rc.local ./
echo ' ' >> rc.local
echo 'rm -f /etc/X11/xorg.conf.20*' >> rc.local
sudo cp -f rc.local usb/etc/init.d/
sudo sync

cat > xorg-edit.sh < xorg-save.sh <

これを実行すると,boot-hdd.iso ができるので,これをCDに焼けば良い。これで,ブート用のCDが出来た。

Mac OS X上のVirtualBoxにUbuntuをインストールしてみた

Sunが、個人使用に限ってではあるが、無料でPCの仮想環境である VirtualBox を公開している。バージョンも上がってきて、完成度も高くなっているようだ。Mac OS X がそもそもUNIXなので、その上に同じUNIXである Ubuntu を入れる必然性がやや疑問だが(笑)、MacはUNIXとしては少々異端で、UNIXのソフトをコンパイルするのに苦労することも多いから、ごく普通のUNIXとして、Ubuntuを入れておいても良いだろうと思った。以下、再びインストールするときの為の、最小限のメモ。

まずは、Sunのサイトから最新版のVirtualBoxを落としてインストールする。VirtualBoxとは良く言ったもので、マシンの電源を入れるところから仮想化されている。新たな仮想マシンを作り、これにUbuntuをインストールする。作業は、一般のIBM PC (=Windowsマシン)にUbuntuをインストールする手順と同じ。それがVirtualBox内でシミュレーションされることだけが異なる。

新しく作った仮想マシンの設定としては、とりあえず実メモリーを1Gバイト、ハードディスクを最大で20Gバイトとした。ハードディスクの容量は必要に応じて増やしていくので、最初から20Gが消費されるわけではない。設定するのは最大のサイズということ。音楽とかそういうことはMac側でやるから20Gもあれば十分だと思う。

次にUbuntuをインストールするために、Ubuntu日本語版のCDイメージ (拡張子 iso のファイル)をダウンロードして適当な場所に置く。仮想マシンの電源を入れて、CDイメージをマウントする。実機で言えば、CDを差し込むことに対応する。そうすると、実機と同様に Ubuntu が Live モードで起動する。あとは、ハードディスク(仮想マシン上に設定したもの)にインストールすることを選ぶだけ。これで、Ubuntuのインストールは終了。

このあと、Guest Additions をインストールする。これをやっとかないと、ファイル共有とか様々なことで不便。ここまで自動でやってくれれば言うことないのだが。

以上で基本設定は終わりだが、実は日本語入力ではまった。かな、英数のキーが全然反応しないのである。調べた結果、日本語IMであるSCIM/Anthyの起動・終了は、コントロール・スペースで行うことが分かった。日本語・英語の切り替えはコントロール J で行う。これを、かな・英数のキーに変更することを試みたが、キー自体を認識してないようで、あきらめた。まあ、しかし、この程度なら許容範囲だ。

Macとファイル共有する方法。Macの側で、適当なフォルダーを作り、共有フォルダーにしておく。次に、VirtualBox上のUbuntuに移り、VirtualBoxフレームの右下にあるアイコンから、ファイル共有のアイコンをクリックする。共有したいフォルダーを選ぶ。マックのファイルシステムが見えるので、そこから、先ほど作った共有フォルダーを選ぶ。その際、フォルダーの名前を覚えておく。ここでは、それを sharedfolder とする。

Ubuntuからそのsharedfolderをマウントするには、次のようにする。まず、Ubuntuのファイルシステム内に、対応するフォルダーを作る。名前は同じでなくても良いが、今回は /home/hoge(ここは自分のアカウント)/sharedfolder と同じ名前のフォルダーを自分のホーム直下に作った。これをUbuntuからマウントするには、mount.vboxsf なるコマンドを使う。ターミナルを起動して、

sudo mount.vboxsf sharedfolder /home/hoge/sharedfolder

と打ち込む。これで、sharedfolderを通してファイルの交換が出来る。ログアウトすると、この設定は失われてしまうので、/etc/rc.local に書き込んでおく。このファイルはroot権限がないと編集できないので、

sudo gedit /etc/rc.local

として編集し、exit 0 の直前に、

mount.vboxsf sharedfolder /home/hoge/sharedfolder

という行を書き込む。これで、ログイン時にこのコマンドが実行されて、共有フォルダーがマウントされるはず。

とりあえずは、こんなところかな。