2015/06/30

Ubuntu  Grub を Grub2 にアップグレード

前回にも書いた通り、1号機に HDD を1台増設した。元からある HDD (マスター) には Lubuntu 15.04 がインストールしてあり、sda として認識されている。増設した HDD (スレイブ) には増設前に Ubuntu 12.04 をインストールしてあり、sdb として認識されている。あとは Grub2 を編集すればデュアルブートとして使える。

ところが sda にあるはずの /boot/grub/grub.cfg が存在せず、/boot/grub/menu.lst があった。つまり、ブートローダ*は Grub (Legacy) のままだ。Lubuntu 15.04 は Xubuntu 8.04 からデスクトップ環境を代えながら設定を変更せずにアップグレードしてきたので、 Grub (Legacy) のままだったのだろう。そこでここを Grub2 にアップグレードする。

Grub から Grub2 へのアップグレード



1. 以下のコマンドで Lubuntu 15.04 のレポジトリ情報を最新の状態にする。
 sudo apt-get update 

2. 以下のコマンドで grub-pc をインストールする。
 sudo apt-get install grub-pc 

3. インストールが始まると以下のような画面が現れるので、画面に従って設定していく。
   (Lubuntu 15.04 では既に日本語で表示されていた。)  
3-1. 書いてあることを読んでから、タブキーを使って<OK>へ移動し、Enterキーを押す。


3-2. 次の画面で Yes を押すと,以下の画面になる。
3-3. 特にしていしたいことがなければタブキーを使って<OK>へ移動し、Enterキーを押す。


3-4. UP/DOWNキーで移動して Grub2 をインストールする場所をスペースキーを押して選択する。


3-5. 再起動した時に以下のようにバージョンが上がっていればOK。



*ブートローダとは
ブートローダとはMBRに保存されているプログラムで、OSがインストールされているパーテーションを探し出す。もしOSがインストールされているパーテーションが一つならばそのパーテーション内のPBRをロードする。もし,複数あるならばそれらをユーザーに表示し,選択されるのを待つ。ここでユーザーがパーテーションを選択すると,そのパーテーション内のPBRをロードする。PBRに保存されているプログラムはIPLInitial Program Loader)と呼ばれるもので、OSを起動させるためのブートローダの残りの機能を呼び出す機能を持っている。(参照:ブートローダ

2015/06/28

Ubuntu  1号機のグレードアップ。

1年ほど前に友人から譲り受けたB機から256MBのメモリーを抜き取って1号機に増設し、HDDも40GBから80GBに増やした。OSもLubuntu 13.04 にアップグレードした。主なスペックは以下の通りになった。

システム要件
    CPU AMD Athlon 1.0 GHz
    motherboard   K7S5A
    memory 768 MHz
    HDD 80 GB

これでだいぶスムーズに動くようになった。しかし、Lubuntu 14.04 にアップグレードした頃から,CPUの使用率が100%を越えることが多くなり、反応も鈍くなる。改善するにははCPUを交換する他ない。しかし今となっては新たにAMD Athlon系のCPUをさがす気になれない。そのまま Lubuntu 15.04 までアップグレードを続ける。

CPUのアップグレード


そこへ今回 Fujitsu-Siemens の SCENIC N600 の中古が手に入った。


主なスペックは以下の通り。

システム要件
    CPU Intel Pentium® 4 2.4 GHz
    motherboard   D1562
    memory 2 GHz
    HDD 40 GB

これを1号機の代わりに使ってもよかった。しかし,

    - 写真のように寝かして使えるスペースがない
    - 拡張スペースが限られている
    - CPU冷却用ファンがなく、薄いファンでないと取り付けられない

という問題があった。ならばCPUを motherboard ごと1号機のそれと交換出来ないかと思いつく。(CPUだけの交換はソケットが合わないので不可能)

motherboard ごと交換するには電源のコネクタが対応するか調べなくてはならない。
幸い両方共ATXメインコネクタは20pinだし、1号機の電源にもATX12Vコネクタがある。D1562 には平型8pin の電源供給用のソケットがあるが、これはファンコントロールやディスプレイ表示用の電源なので、1号機では使わなくともよい。よって電源の問題はクリア。

HDDも両方共パラレルATA接続、DVDドライブも両方共パラレルATA接続なのでそのまま使える。FDDも同様だった。

よって交換は無事終了、CPU冷却用ファンも取り付けた。

1号機の新しいスペックは以下の通り。

システム要件
    CPU Intel Pentium® 4 2.4 GHz
    motherboard   D1562
    memory 2 GHz
    HDD 80 GB + 40 GB

これで1号機で Lubuntu 15.04 が普通に使えるようになった。

2015/06/01

Ubuntu 14.04  gscan2pdf で白紙のOCR出力

gscan2pdf とは


gscan2pdf は様々なファイルを読み込んでPDFファイルを生成するプログラムだ。このプログラムは tesseract-ocr や cuneiform-Linuxと組み合わせて、画像データから文字を認識 (OCR機能)し、結果を出力することが出来る。これらは全てソフトウェアセンター、またはパッケージマネージャーからインストール出来る。Ubuntu 14.04 でインストールされるこれらのプログラムのバージョンは
       プログラム バージョン
    gscan2pdf   1.2.3
    tesseract-ocr   3.0.3
    cuneiform-Linux   1.1.0
となっている。



gscan2pdf を使うと OCR出力が白紙

この gscan2pdf 1.2.3 から tesseract-ocr 3.0.3 を使ってOCRにかけると白紙が出力される。しかし、 gscan2pdf を使わずに tesseract-ocr 3.0.3 からOCRにかけると認識された内容が出力される。



原因はバグ

これは tesseract-ocr 3.0.3 がこのバージョンからOCRの結果を gocr形式で出力するのに対して、gscan2pdf 1.2.3 の側では html形式の出力を受け取る設定になっているためだ。(参照:ここ) このバグは既知の問題で gscan2pdf 1.2.4 ではパッチファイルが存在し, gscan2pdf 1.2.5以降のバージョンでは修正されている。(参照:ここ)


  

解決方法

その 1 Tesseract.pm を編集する。(参照:ここ)

1. 端末を起動し、以下のコマンドで Tesseract.pm が存在するフォルダに移動する。
    cd /usr/share/perl5/Gscan2pdf/
2. ルート権限 (sudo) でテキストエディタ (ここでは gedit) から Tesseract.pm を開く。
    sudo gedit Tesseract.pm 
3. ファイルの189行目の ".html" を ".hocr" に書き換える。 
      version->parse("v$version") >= version->parse("v3") ? '.html' : '.txt';
      --->
      version->parse("v$version") >= version->parse("v3") ? '.hocr' : '.txt';
4. ファイルを保存して閉じる。
 
その 2 gscan2pdf 1.2.3 を最新バージョンにアップグレードする。(参照:ここ)
 
その 3 パッチファイルを適用する。(参照:ここ)
この解決方法を紹介しているHPは多い。しかし、このパッチファイルは gscan2pdf 1.2.4 用であり、Ubuntu 14.04 でソフトウェアセンターなどからインストール出来るのは gscan2pdf 1.2.3 である。従って現在では何か理由があってPPAなどの外部から gscan2pdf 1.2.4 をダウンロードして、インストールし,アップグレードしないで使い続ける場合のみに有効な解決方法となる。


2015/05/27

Keine Ausgabe der Texterkennung bei gscan2pdf unter Ubuntu 14.04

Texterkennungsproblem unter Ubuntu 14.04


Nachdem man Ubuntu 12.04 LTS auf 14.04 LTS aktualisiert hat, wurde gscan2pdf 0.9.32 auf 1.2.3 aktualisiert. gscan2pdf kann mit zusätzlichen  Programme wie tesseract-ocr, cuneiform-Linux, GOCR usw. Texte erkennen. Bei der Texterkennung mit gscan2pdf 1.2.3 unter Ubuntu 14.04 tritt zwar das Problem wie mit gscan2pdf 0.9.32 unter Ubuntu 12.04 nicht auf. Aber ein anders Problem; Bei der Texterkennung gibt gscan2pdf 1.2.3 keine Ausgabe aus, wenn er mit tesseract-ocr oder mit cuneiform-Linux arbeitet.



Woran liegt es?


Es liegt die Dateinamenserweiterung. Tesseract-ocr verwendet in Version 3.0.3 als Dateinamenserweiterung .hocr, wobei gscan2pdf sie .html erwartet.(Siehe hier) Das Problem ist schon bekannt und ab gscan2pdf 1.2.5 wurde es fixiert.(Siehe hier)



Die Lösungen


Lösung 1
Modifiziere die Datei Tesseract.pm.(Siehe hier)
  1. öffne ein Terminal und gehe in den Ordner Gscan2pdf, wo die Datei Tesseract.pm liegt.
  cd /usr/share/perl5/Gscan2pdf/
  2. Öffne diese Datei in einem Editor (z. B. gedit) mit Rootrechten.
  sudo gedit Tesseract.pm 
  3. ersetze in Zeile 189 das ".html" durch ".hocr".
  4. Speichere die Datei Tesseract.pm und schließe den Editor.
 
Lösung 2
Aktualisiere den gscan2pdf von 1.2.3 auf neueste.(Siehe hier)
 
Lösung 3 (nur für gscan2pdf 1.2.4 Benutzer)
Wende den Patch (den Bugfix) Tesseract.pm.patch an.(Siehe hier)
Das ist die Lösung für gscan2pdf 1.2.4. Jedoch liegt unter Ubuntu 14.04 gscan2pdf in Version 1.2.3 in den offiziellen Paketquellen vor. Wer gscan2pdf 1.2.4 aus einer PPA herunterladet hat, installiert hat und nicht aktualisieren will, wäre diese Lösung anwendbar.



Was ist eigentlich gscan2pdf?


gscan2pdf ist ein Programm zu scannen und PDF-Dokumenten aus eingescannte Vorlagen zu erstellen. Viele weiteren Formaten z. B. DjVu-Dokumente sind erstellbar. Es können eine Texterkennung verwendet werden. Eine ausführliche Beschreibung liefert gscan2pdf.



Ist eine eingescannte Datei keine Text-Datei?


Generell nicht. Allgemein ist eine eingescannte Datei eine Bild-Datei. Deshalb obwohl sie lesbar ist, erkennt ein PC kein Zeichen drauf und funktioniert "Copy and Paste" nicht. Um Zeichen aus einer eingescannten Datei zu extrahieren, braucht man ein weiteres Programm sogenannten OCR (optical character recognition). 



Texterkennungsprogramme z.B.


GOCR, tesseract-ocr, ocropus, cuneiform-Linux, Ocrad, suw... Eine ausführliche Beschreibung liefert Texterkennung


2015/05/21

Fehlermeldung "Error during device I/O" beim gscan2pdf unter Ubuntu 12.04

Gscan2pdf unter Ubuntu 12.04 lässt sich nicht mehr scannen.



Eines Tages erschien die Fehlermeldung "Error opening device: Error during device I/O" bei der Scannererkennung mit gscan2pdf und danach erkennt PC mit gscan2pdf keinen Drucker/Scanner mehr und erscheint immer diese Meldung.
 


Wann tritt das Problem auf?


Wer entweder einen Drucker oder einen Scanner hat, tritt das Problem nicht auf.
Es tritt auf, wenn man
  - mehrere Drucker/Scanner zur Verfügung stellt,
  - den default Drucker/Scanner nicht angeschlossen (oder nicht eingeschaltet) hat und
  - von gscan2pdf ihn aufruft, um einzuscannen.


Wie kann man das Problem lösen?


Das ist ein Bug des gscan2pdf 0.9.32 und der Bug wurde schon fixiert. Aber der gscan2pdf 0.9.32 ist die neueste Version unter Ubuntu 12.04. (Siehe auch Bug report)
Dafür gibt es mehrere Lösungen;
Lösung 1 : Aktualisiere das BS von Unbuntu 12.04 auf 14.04.
Unter Ubuntu 14.04 liegt gscan2pdf in Version 1.2.4 in den offiziellen Paketquellen von Ubuntu vor. (Siehe Upgrade auf Trusty)
 
Lösung 2 : Aktualisiere den gscan2pdf von 0.9.32 auf neueste.
Wer noch Ubuntu 12.04 weiter benutzt, unter dem gscan2pdf in Version 0.9.32 in den offiziellen Quellen vorliegt, kann gscan2pdf von 0.9.32 auf die neueste Version aus einem PPA aktualisieren. (Siehe Aus einem PPA)
 
Lösung 3 : modifiziere die versteckten Datei .gscan2pdf.
Wenn man noch Ubuntu 12.04 mit gscan2pdf 0.9.32 weiter benutzen möchte, kann man die versteckten Datei .gscan2pdf ändern, um das Problem zu lösen;

    1. schließe gscan2pdf.
    2. aktiviere die Anzeige von versteckten Dateien in den persönlichen Ordner.
        (Siehe versteckte Dateien)
    3. Öffne die versteckten Datei .gscan2pdf.
    4. Lösche den eingetragene Wert von device.
        Ähnlich wie;
            device = hpaio:/net/Deskjet_3520_series?ip=192.168.xxx.xxx
            --->
            device =
    5. Speichere .gscan2pdf.
 
Lösung 4 : lösche die versteckten Datei .gscan2pdf.
Wenn man noch Ubuntu 12.04 mit gscan2pdf 0.9.32 weiter benutzen möchte, und auf persönliche Einstellungen verzichten kann, ist diese Lösung einfacher als andere.

    1. schließe gscan2pdf.
    2. aktiviere die Anzeige von versteckten Dateien in den persönlichen Ordner.
        (Siehe versteckte Dateien)
    3. Lösche die versteckten Datei .gscan2pdf in den persönlichen Ordner.

2015/05/17

Ubuntu  gscan2pdf で Error opening device: Error during device I/O 解決方法 その4

前回、gscan2pdf で Error opening device: Error during device I/O というエラーメッセージが出たときの解決について3通りの方法を書いた。

要約すると,
gscan2pdf 0.9.32 を使ってUSB接続のスキャナー機能付き All in One プリンターからスキャンした後,誤ってこのプリンターのUSBケーブルを接続していない状態でスキャンしようとすると下記のエラーメッセージが出る。

その後、接続してスキャンしようとしてもこのメッセージは消えず,スキャンできない。
解決方法は
その1 Ubuntu 12.04 を 14.04 にアップグレードする
その2 gscan2pdf 0.9.32 を最新ヴァージョンにアップグレードする。
その3 .gscan2pdf を編集する。

今回は4番目の解決としてもっとも簡単な方法を紹介する。ただし、この方法では設定が全てデフォルトに戻ってしまうので,個人の設定を残しておきたい場合は "その3" の方法がいいだろう。 


解決方法


その4 .gscan2pdf を削除する。

4-1. gscan2pdf を終了させる。(これをしないと4-2. で行う変更が反映されない。)
4-2. .gscan2pdf を削除する。
       方法1 - Launcher のホームフォルダをクリック。
         - "表示" -> "隠しファイルを表示する" とクリックする。(参照:前回
         - .gscan2pdf を選択し,削除する。
       方法2  端末を起動させて以下のコマンドを入力する。

 rm .gscan2pdf

2015/05/16

Ubuntu  gscan2pdf で Error opening device: Error during device I/O

gscan2pdf を使ってUSB接続のプリンター (スキャナー機能付き All in One プリンター) からスキャンした後,誤ってプリンターのUSBケーブルを接続していない状態でスキャンしようとすると下記のエラーメッセージが出る。


その後,ケーブルをつないでスキャンしようとしても上記のエラーメッセージが出てスキャンできない。また、一度 gscan2pdf を閉じて再起動した後でもこのメッセージが出てスキャンできない。

動作環境

    OS Ubuntu 12.04
    ソフトウェア gscan2pdf 0.9.32
    プリンター HP PSC 1400 Series (USB接続)
     HP Deskjet 3520 Series (無線LAN接続)

原因

これは gscan2pdf 0.9.32 のバグで,使用可能なスキャナー(またはスキャナー機能付きプリンター)が2台以上ある場合に起こりうる。gscan2pdf 0.9.32 は最初に選択したスキャナーを .gscan2pdf にデフォルトのスキャナーとして登録し,別途 "device" にもこのスキャナーを登録する。この双方の登録情報は一致していなければならない。ところが、次回以降デフォルトに設定したスキャナーが見つからないと、使用可能なスキャナーを "device" に登録する。この時デフォルトのスキャナーは変更されない。従って,双方の情報が一致しないために入出力エラーとなって gscan2pdf 0.9.32 からスキャナーを使用出来なくなる。尚,このバグは 0.9.32 以降のバージョンでは修正されている。

解決方法

その1 Ubuntu 12.04 を 14.04 にアップグレードする。

"ソフトウェアの更新" を起動させて最新の状態にアップデート後,”アップグレード” をクリックする。

その2 gscan2pdf 0.9.32 を最新のバージョンにアップグレードする。

端末を起動させて,以下のコマンドを1行ずつ実行する。(1行入力して ”エンターキー" を押す。)

sudo add-apt-repository ppa:jeffreyratcliffe/ppa
sudo apt-get update
sudo apt-get install gscan2pdf

元のバージョンに戻すには

sudo apt-get install ppa-purge
sudo ppa-purge ppa:jeffreyratcliffe/ppa

その3 .gscan2pdf を編集する。

3-1. gscan2pdf を終了させる。(これをしないと3-2. で行う変更が反映されない。) 
3-2. .gscan2pdf を開く。
       方法1 .gscan2pdf はホームフォルダー内にある隠しファイルなので、デフォルトの状態で
           は表示されない。これを表示させるには Launcher のホームフォルダをクリックし、


           "表示" -> "隠しファイルを表示する" とクリックする。


       方法2 端末を起動させて以下のコマンドを入力する。

gedit .gscan2pdf

3-3. 開いたファイルの下の方の "device" で始まる行の値を空欄にする。


…
version = 0.9.32
device = hpaio:/net/Deskjet_3520_series?ip=192.168.xxx.xxx  (x は数字)
unsharp threshold = 0.05
…


…
version = 0.9.32
device =
unsharp threshold = 0.05
…

3-4. 修正したらファイルを保存して閉じる。 


備考

解決方法 "その1" を実行すれば,gscan2pdf もアップグレードされるので、バグは修正されることになる。"その2" の方法でも gscan2pdf はアップグレードされるので、バグは修正されるはずだ。しかし、私の環境ではアップグレードされた gscan2pdf は起動しなかった。ただ、なぜ起動しないのかは調べていない。現在は "その3" の方法でバグを回避している。

 

 参考

1. gscan2pdf cannot be started again after it crashed
2. 第337回 12.04から14.04へアップグレードする際に気をつけるべきこと
3. How To Install Gscan2PDF 1.2.4 On All The Supported Ubuntu, Linux Mint, Elementary OS And Their Derivative Systems

2015/05/06

Ubuntu  rename を使ったファイル名の一括変換 2


前回 rename を使ったファイル名の一括変換の例を書いた。その時にいくつかの renameコマンドについて書かれたHPを参考にさせていただいたが,変換規則で利用するperl言語の正規表現まで踏み込んで書かれたHPは見つけられなかった。そこで renameコマンドについてと、renameコマンドでよく使われるであろうperl言語の正規表現についてを含めてまとめておいた。ただし、ファイル名の変換規則ではperl言語を利用できるが,ここではperl言語の文法については今回は触れていない。perl言語を使用した例は前回書いてあるので,そちらを参考にしていただきたい。

 

書式: rename [ -option ] 'perlexpr' [ files ] 

 

option 


   option は指定しなくてもよい。指定する場合には以下の3通りがある。

    -v リネームしたファイル名を表示する。
    -n リネーム後の名前を表示のみする。
    -f リネームを実行し,ファイル名が重複する場合には元からあるファイルを上書きする。

files


   files は指定しなくてもよい。
   指定する場合には変換したいファイル名を書くファイル名にはワイルドカードが使える
   例えば
    *.txt フォルダ内のすべてのファイル
    file.* フォルダ内で同じファイル名で拡張子がことなるファイル。。
    *.* フォルダ内のすべてのファイル。(単に * だけでもよい。)

   ファイル名を指定しない場合には標準入力 (キーボード) からの入力待ちになる。
   この場合,ファイル名にワイルドカードは使えない
   入力は renameコマンドを入力した後,(ここで入力待ちになる。)

   1. 変換したいファイル名が一つの場合
      1-1  ファイル名を入力して、
      1-2  エンターキー「⏎」をおす。
      1-3  「ctrl」と「D」を同時におす。

   2. 変換したいファイルが複数ある場合
      2-1  ファイル名を入力して、
      2-2  エンターキー「⏎」をおす。
      2-3  2-1, 2-1 をファイルの数だけ繰り返す。
      2-4  「ctrl」と「D」を同時におす。

perlexpr

   Perlexpr の書式  (変換の仕方を perl言語の正規表現に従って記す。)

   (s|y)/expr1/[expr2]/[Modifier]

   (s|y)
     s か y のどちらか一方を指定しなければならない。単語や数字などの
       文字を変換したい場合には y 例:ここの 1-5
       文字を変換したい場合には s 例:ここの 1-1, 1-2
     を指定する。

   expr1
     変換したい単語や数字などの文字列,または文字を指定する。

   expr2
     変換後に示されるべき単語や数字などの文字列,または文字を指定する。
     expr2 は指定しなくてもよい。指定しない時は expr1 の内容を削除する。(例:ここの 2-1)

   Modifier
     Modifier は指定しなくてもよい。Modifier には以下の3通りがある。
       e perl言語を使用する 例:ここの 1-4, 4-1
       g expr1 で指定した内容を繰り返し変換する 例:ここの 1-3, 1-4
       i 大文字、小文字の区別をしない

   expr1, expr2 で使用できる表現 (正規表現) 

     文字
       - メタ文字; \, ^, ., $, |, (, ), [, ], ?, *, + 
           後述の選択子、量化子、グループ化で使用する特別な文字

      - アルファベット数字記号それらを組み合わせた文字列
          ただし、メタ文字を記号として使用する場合には
             \\, \^, \., \$, \|, \(, \), \[, \], \?, \*, \+
          と記す。
      文字の例:ここの 1-1, 1-2, 3-2

     選択子 (selector)
      - [ ] の中の1文字
            例 [aD3] a または D または 3
[a-h] a から h までの1文字
[0-5] 0 から 5 までの数字
[^c-j] c から j まで以外の1文字
      - \d 0から9までの任意の数字
      - \w アルファベット1文字、 0から9までの任意の数字、またはアンダーバー "_"
      - . アルファベット1文字、 0から9までの任意の数字、または空白以外の記号一つ。
      - ^ ファイル名の先頭
      - $ ファイル名の最後
       選択子の例:ここの 1-1, 3-1

     量化子(quantifier)
      - {m,n} m文字以上n文字以下
      - {m,} m文字以上
      - {,n} n文字以下
      - {n} n文字
      - ? 1文字または0文字 ({0,1} と同じ意味)
      - * 0文字以上 ({0,} と同じ意味)
      - + 1文字以上 ({1,} と同じ意味)
      量化子の例 \w{5} 5文字以下の文字列

\d{3} 3桁の数字

\d{+} 1桁以上の数字
                          ここの 1-4, 3-3, 4-1, 5-1

     グループ化(Grouping)
      - ( ) グループ化記号 expr1 の中の文字列を一つのかたまりとみなす記号。
      - | 選択記号 文字列を選択する記号
              例 (desktop | laptop) desktop または laptop
(desktop | laptop | tabletPC) desktop または laptop または tabletPC
      - $n expr2でexpr1 の中のn番目のグループを指定する記号

       グループ化の例:ここの 3-3, 5-1


 参考

1. rename command
2. Bulk renaming files in Ubuntu
3. rename
4. Linux and Unix rename command
5. Perl 正規表現のクイックスタート
6. Perl 正規表現
7. 標準入出力

2015/04/28

Ubuntu  remane を使ったファイル名の一括変換 1

写真などを整理するときに大量に名前を書き換えたい場合がある。そんな時には Ubuntu ならスクリプトを書けば一括変換できる。しかし、Linux には rename というコマンドがあり,簡単にファイル名を一括変換できる。(参照:1,2,3)


ここではホームフォルダ内のフォルダ "work" の中に以下の4つのファイルがあるとして,renameコマンドの例を示す。

"42. Protokoll_01_07.pdf"
"43. Protokoll 2 September 2014.pdf"
"44. Protokoll 09 09.pdf"
"45. Protokoll FSMa 16 September.pdf"

0. 元のファイル名

まず、ターミナルを立ち上げる。
次にコマンド cd workで workフォルダ内に移動する。
ここで コマンド ls を入力すると,フォルダ内にどんなファイルがあるか確認出来る。

xxx@yyyy:~$ cd work
xxx@yyyy:~/work$ ls
42. Protokoll_01_07.pdf
43. Protokoll 2 September 2014.pdf
44. Protokoll 09 09.pdf
45. Protokoll FSMa 16 September.pdf
xxx@yyyy:~/work$ 


1-1. 置換  文字 "September" を数字 "9" に変換する


$ sudo rename 's/September/9/' *.pdf

ここで、*.pdf はフォルダ内のすべての PDFファイルという意味。
's/September/9/' で "September" を "9" に置換するという意味。

置換後

42. Protokoll_01_07.pdf
43. Protokoll 2 9 2014.pdf
44. Protokoll 09 09.pdf
45. Protokoll FSMa 16 9.pdf


1-2. 置換  最初の空白をアンダーバー "_" に変換する


$ sudo rename 's/ /_/' *.pdf


空白はそのまま空白にしておけばいい。空白には \s と入力するらしいが、空白でも大丈夫。

置換後

42._Protokoll_01_07.pdf
43._Protokoll 2 9 2014.pdf
44._Protokoll 09 09.pdf
45._Protokoll FSMa 16 9.pdf


1-3. 置換  すべての空白をアンダーバー "_" に変換する。


$ sudo rename 's/ /_/g' *.pdf


上のコマンドとほぼ同じだが,最後に g が入る。これですべての空白が "_" に置換される。

置換後

42._Protokoll_01_07.pdf
43._Protokoll_2_9_2014.pdf
44._Protokoll_09_09.pdf
45._Protokoll_FSMa_16_9.pdf


1-4. 置換  1桁の数字を0をつけて2桁の数字に変換する。(例 2 -> 02)


$ sudo rename 's/\d+/sprintf("%02d", $&)/eg' *.pdf


ここで、\d+ で数字を取得し,その数時が1桁なら sprintf("%02d", $&) を使って十の位に "0" を補う。sprintf("%02d", $&) は文字や数字を返す perl の関数。$& には \d+ で取得した数字が入る。(参照:6)
また、perl の関数 (コマンド) を利用する時には最後に e が入る。(参照:4,5)

置換後

42._Protokoll_01_07.pdf
43._Protokoll_02_09_2014.pdf
44._Protokoll_09_09.pdf
45._Protokoll_FSMa_16_09.pdf


1-5. 置換 大文字を小文字に置換する


$ sudo rename 'y/A-Z/a-z/' *.pdf


文字を置換するときには 'y/before/after/' とする。

置換後

42._protokoll_01_07.pdf
43._protokoll_02_09_2014.pdf
44._protokoll_09_09.pdf
45._protokoll_fsma_16_09.pdf


2-1. 削除  最初のドット "." を削除する。


$ sudo rename 's/.//' *.pdf


単に削除する時には何も書かず,空欄も入れない。

削除後

42_protokoll_01_07.pdf
43_protokoll_02_09_2014.pdf
44_protokoll_09_09.pdf
45_protokoll_fsma_16_09.pdf


3-1. 補完  先頭に文字や数字を補完する


$ sudo rename 's/^/0/' *.pdf


^ でファイル名の先頭を指定している。

補完後

042_protokoll_01_07.pdf
043_protokoll_02_09_2014.pdf
044_protokoll_09_09.pdf
045_protokoll_fsma_16_09.pdf


3-2. 補完  最後(拡張子の前)に文字や数字を補完する


$ sudo rename 's/.pdf/_tokyo.pdf/' *.pdf


拡張子がない場合には 's/$/補完する文字列/' とすればよい。

補完後

042_protokoll_01_07_tokyo.pdf
043_protokoll_02_09_2014_tokyo.pdf
044_protokoll_09_09_tokyo.pdf
045_protokoll_fsma_16_09_tokyo.pdf


3-3. 補完  中間(月とtokyoの間)に数字(年号)を補完する


$ sudo rename 's/(_\d{2})(_tokyo)/$1_2014$2/' *.pdf

文字列をカッコでくくると一つのグループとみなされ,$1 には1番目の、$2 には2番目のグループが対応する。

補完後

042_protokoll_01_07_2014_tokyo.pdf
043_protokoll_02_09_2014_tokyo.pdf
044_protokoll_09_09_2014_tokyo.pdf
045_protokoll_fsma_16_09_2014_tokyo.pdf


4-1. 連番  先頭の3桁の数字を 01 から始まる2桁の連番にする。


$ sudo rename 's/\d{3}/our $i; sprintf("%02d", 1+$i++)/e' *.pdf

our $i; で連番に使う変数を定義し、1+$i++ で 1,2,3, ... となるように指定している。
そして、関数 sprintf で連番が 01, 02, 03, ... となるように指定している。(参照:6,7)

変更後

01_protokoll_01_07_2014_tokyo.pdf
02_protokoll_02_09_2014_tokyo.pdf
03_protokoll_09_09_2014_tokyo.pdf
04_protokoll_fsma_16_09_2014_tokyo.pdf


5-1. 入れ替え  日付が _日_月_年_ となっているので、_日_月_年_ と並べ替える。


$ sudo rename 's/(_\d{2})(_\d{2})(_\d{4})/$3$2$1/' *.pdf 

3-3. の応用例、$1=(_\d{2})、$2=(_\d{2})、$3=(_\d{4}) となっている。

変更後

01_protokoll_2014_07_01_tokyo.pdf
02_protokoll_2014_09_02_tokyo.pdf
03_protokoll_2014_09_09_tokyo.pdf
04_protokoll_fsma_2014_09_16_tokyo.pdf


参照

1. rename command
2. Bulk renaming files in Ubuntu
3. rename
4. Perl 正規表現のクイックスタート (評価修飾子について)
5. Reguläre Ausdrücke (Modifeier について)
6. 関数 sprintf について
7. our $i; について

2015/04/18

EeePC 901  BIOS のアップデート (OS を使わない方法)

 

アップデートのポイント


EeePC 901 の BIOSアップデートは直接 BIOS からアップデートするので簡単で確実だ。ただ、いくつかのポイントがある。

BIOS のダウンロード
EeePC 901 の BIOS をアップデートを解説するホームページは多い。しかし、BIOS のダウンロードのリンク先が切れている。(2015.04.18 現在)現在のダウンロード元は

Driver & Tools, Eee PC 901/Linux, Eee PC, 901 Series.

ファイルをリネームする
ダウンロードして解凍したファイルを [Modelname].ROM とリネームする。例えば EssPC 701SD なら 701SD.ROM、EeePC 901 なら 901.ROM とする。

USBスティックのフォーマットとパーテーションサイズ
BIOS のアップデートにSDカードを使う方法もあるが、USBスティックを使ったほうが簡単。(参照:4) その際

 - ファイル形式ははFAT16
 - パーテーションサイズは100MB前後

で、フォーマットする。USBスティックはファイル形式が FAT32 か、NTFS でフォーマットでされていることが多い。これを FAT16 に変換する。そしてパーテーションサイズを 100MB 前後に設定する。私の場合は 4GB の USBスティックを使って全体を FAT16 にフォーマットしら、

 Reading file "901.rom" _

で止まった。(アップデートは始まっていない。)また、パーテーションサイズを 16~20MB に設定してフォーマットした場合も同様だった。
パーテーションサイズを 100MB にしたら、

 Reading file "901.rom" _

で、一時止まった後,ピープ音がしてアップデートが始まった。

アップデートは中断してはならない。
PCの電源が入れられた後、OS を起動させるのが BIOS の役目だ。だからアップデートを途中で中断すると,OSを起動できなくなり、使用不能になってしまう。(参照:5)

 

アップデート



 1. 最新の BIOS をここからダウンロードする。
 2. ダウンロードしたファイル(ZIP形式)を解凍する。(参照:5)
 3. 解凍したファイル 901-ASUS-2103.ROM を 901.ROM とリネームする。
 4. USBスティックをファイル形式 FAT16, パーテーションサイズを 100MB でフォーマット
  する。(参照:7)  
 5. 901.ROM をフォーマットしたUSBスティックにコピーする。
 6. コピーしたUSBスティックを EeePC 901 に差して電源を入れる。
 7. BIOS が起動したら(ASUS のロゴが出てきたら)すぐに「alt」と「F2」を同時に押す。
 8. すると以下のような画面が出てくる。(出てこないときは電源を切って 6 からやり直す。)


 9. その後ピープ音がして画面 "Completed" と出てくればアップデートが始まる。


 10. 画面に
    The BIOS Update ist finnished.
    Please press power butten to shut down the system.
   と,出てくれば終了。シャットダウンして再起動する。


 12. 再起動すると以下のような画面が出てくるので、「F1」を押す。


 13. 以下のような画面が出て来たら「F10」を押して OS を立ち上げる。



参考


1. Upgrading the BIOS (Firmware) of your Eee
2. ASUS eeePC BIOS-Update unter Linux und Windows
3. Neue BIOS-Updates verfügbar
4. ASUS EeePC
5. Ubuntu  File Roller - ファイルの圧縮、解凍
6. BIOS について
7. HDDをフォーマットする 

2015/03/28

Ubuntu  BIOS のアップデート (FreeDOS 使用)

Lubuntu がインストールされている PC のマザーボード K7S5A の BIOS を FreeDOS* を利用してアップデートする。

 

アップデート方法

 

DVDドライブとフロッピーディスクドライブ(FDD)があるので、
 - CD から FreeDos を立ち上げ
 - フロッピーディスクにコピーしたファイルを使って
アップデートする。

 

準備

 

- ここから FreeDOS 1.0 のISOイメージファイルをダウンロードする。(参照:1)
 - ダウンロードしたISOイメージファイルを DC-ROM に焼く。(参照:6)

 - ここから BIOS のアップデートファイル(k7s5a030811.zip)をダウンロードする。
 - ダウンロードしたら解凍して、 ファイル 030811.rom を取り出す。
 - BIOS のアップデートに必要なソフトウェア aminf342.exe はこちらからダウンロードする。

 - フロッピーディスクを用意し、FAT32 というファイル形式でフォーマットしておく。
 - ダウンロードした2つのファイル 030811.rom と aminf342.exe をフロッピーディスクにコピーする。

 - CD にある OS を起動出来るように BIOS の設定を変更する。

 

BIOS のアップデート(参照:3)

 

   1. FreeDOS を焼いた CD をDVDドライブに挿入し、PCを再起動する。
   2. すると以下の画面が現れるので、”enter” を押す。


   3. 次に現れた画面の中から、カーソル期キー "↑","↓" を使って "5" を選択し、 "enter" を押す。


   4. すると以下の画面が現れ、カーソルが点滅して "入力待ち" の状態になる。


   5. フロッピーディスクドライブにフロッピーを挿入する。
   6. (私の環境では) b: と入力して "enter" を押す。(フロッピーディスク内に移動)
   7. dir と入力して "enter" を押す。(aminf342.exe と 030811.rom があることを確認する。)
   8. aminf342 030811.rom と、入力して "enter" を押す。(参照:2)


   9. 後は画面の指示に従う。

 

備考

 

FreeeDOS とは DOS と互換性のある CUI を使う OSのひとつだ。これは Microsoft の MS-DOS のようなOSで、起動すると黒い画面上にカーソルが点滅して入力待ち状態になる。MS-DOS よりも高機能である。(参考:5)

FreeDOS を使って BIOS をアップデートする方法のメリットは、
 - 使用している OS が Windows でも Linux でも同じようにアップデートできる
 - Windows用のアップデート用ソフトウェアを使ってアップデートできる
 - Windows のコマンドを使える
ことだ。

マザーボードが USB-boot に対応している場合
Fat32にフォーマットした USBスティックに FreeDOS をインストールして、アップデートファイルとアップデート用ソフトウェアをコピーしてアップデートできる。

BIOS のアップデートには他にもいろいろな方法がある。(参照:4)

 

参考

 

1. FreeDos

2. AMI-Dos.pdf

3. BIOS-Update Anleitung: 3. Starten des Updates

4. BIOS-Update Anleitung: 2. Update-Methode wählen

5. FreeDos-Wiki
6. BurningIsoHowto 

2015/03/21

Linux  PCの高速化

PCを高速化するにはいろいろなほうほうがある。一般的には
 - CPUの交換
 - メモリーの増設
 - HDDをSSDに交換
といったところだろう。

CPUの交換


PCはCPUでデータを処理している。だからCPUの性能が上がればそれだけデータ処理が速くなるので、それだけPCが高速に作動する。

CPUを取り替えるときには、以下の2点に注意する。
 - 取り替えたいCPUがマザーボードのCPUソケットの形状一致するか
 - 取り替えたいCPUをマザーボードがサポートしているか

上記の2点については、マザーボードの製品名から簡単に知ることが出来る。製品名で検索すればすぐに見つかる。

ソケットの形状が違うと物理的に接続できない。この方の一致は必須だ。ソケットの形状はマザーボードの種類から調べるのが簡単だ。また、ソケットの形状が一致してもマザーボードがそのCPUをサポートしていないと動かない。しかし、サポートしていなくてもマザーボードのBIOSのアップデートでサポートされることがある。ただし、BIOSのアップデートに失敗するとPCが起動できなくなるので、アップデートするなら慎重するべきだろう。


メモリーの増設



CPUはメモリーに保存されているデータを順に処理していくので、メモリーが多いほどデータの移動が少なくなり、PCがより高速に作動する。

メモリーを増設するときには、以下の2点に注意する。
 - マザーボードがそのメモリーをサポートしているか
 - 増設したいメモリの容量がマザーボードのサポート範囲内か

上記の2点についてもCPUと同様、マザーボードの製品名から簡単に知ることが出来る。製品名で検索すればすぐに見つかる。

メモリーはその種類によってソケットの形状が異なるので、マザーボードがサポートしているメモリーは1種類あるいは2種類に限られる。また、メモリーの種類が一致してもマザーボードのサポートする範囲を越えてしまうと使うことが出来ない。(この場合にはPCが起動しない。)

HDDをSSDに交換


メモリー上のデータはPCの電源をきると消えてしまうので、データの保存には主にHDDが使われている。つまり、必要データはHDDなどからにメモリー上にコピーしてきて使い、使い終わったらまたHDDなどに戻しておくようになってきる。

このHDDの中では円盤状の磁気記憶媒体(ディスク)が高速で回転しており、必要に応じて読み出される。これに対して、SSDはUSBメモリーのように電気的に保存され、読み出される。だからだからデータのやりとりはHDDよりSSDの方がずっと速い。

HDDをSSDに交換する時には、マザーボードにSSDを接続するソケットがあるかどうかを確認する必要がある。しかし、
 - 最近のマザーボードにはほとんどそのソケットがある
 - ソケットが無くても変換プラグが存在する
ので、あまり心配しなくていいだろう。

Bodhi Linux  ISY IWL 2000 で無線LANに接続

ISY IWL 2000 認識されても接続できず


一応無線LAN(Buffalo WLI-U2-KG54L)でインターネットに接続できるようになった Bodhi linux だが、接続が安定しない。そこで ISY IWL 2000 で接続しようとした。しかし、Network Manager は起動して接続しようとするが、いつまでたっても繰り返しパスワードを聞かれるだけで、ネットに接続できない。

無線LANチップの確認


端末から以下のコマンドでデバイス情報を調べる。

$ lsusb

Bus 001 Device 006: ID 050d:11f2 Belkin Components  

無線LANチップの情報が無い。
LANケーブルでインターネットに接続してから,以下のコマンドで無線LANチップのデータベースのアップデートをする。(参考:1)

$ sudo update-usbids

そしてもう一度 "lsusb"

$ lsusb

Bus 001 Device 004: ID 050d:11f2 Belkin Components ISY Wireless Micro Adapter IWL 2000 [RTL8188CUS]

これで無線LANチップは RTL8188CUS が使われていることが判る。(参考:2)

Module の確認 


次に以下のコマンドでロードされている Module を調べる。

$ modprobe -c | grep -i "050d.*11f2"

alias usb:v050dp11f2d*dc*dsc*dp*ic*isc*ip rtl8192cu


ここで 050d と 11f2 は lsusb で調べた Device-ID 050d:11f2 である。この ID から Module (ドライバー)に rtl8192cu が使用されていることがわかった。(参考:3) この Module は対応する Kernel が version 3.0.2 までだ。version 3.2.14 以降を採用している Ubuntu 12.04 をベースに開発されている Bodhi Linux 2.4.0 には対応していないのではないか。 (参考:4) 

ドライバーのインストールの準備


まず、起動時に rtl8192cu がロードされないようにする。(参考:5)
以下のコマンドで blacklist.conf を開き

$ sudo leafpad /etc/modprobe.d/blacklist.conf

ファイルの最後に以下の3行を書き加える。

blacklist rtl8192cu
blacklist rtl8192c_common
blacklist rtlwifi

次に以下のコマンドでドライバーのインストールに必要なパッケージ dkms をインストールする。

$ sudo apt-get install dkms

ここから新しいドライバーをダウンロードする。

インストール


以下のコマンドでダウンロードしたファイルを解凍する。(参考:6)

$unzip 0001-RTL8188C_8192C_USB_linux_v4.0.2_9000.20130911.zip

解凍されたファイルのフォルダ内に移動する。


$cd 0001-RTL8188C_8192C_USB_linux_v4.0.2_9000.20130911

install.sh というファイルがあるのでこれを実行してドライバーをインストールする。


$ sudo sh install.sh


ドライバーの設定


インストールしただけでドライバーの設定をしなければ、PCを再起動しても無線LANアダプターを認識してくれない。ドライバーの設定の仕方は色々ある。例えば
 - ndiswrapperを使う、
 - ソースを変更してカーネルモジュールを作る
などなど…。それらに比べて以下の方法はもっと簡単である。(参照:7)
以下のコマンドを1行ずつ実行する。

sudo su                                                                                        #ここまで1行
echo "8192cu" >> /etc/modules                                                        #ここまで1行
echo 'install 8192cu /sbin/modprobe --ignore-install 8192cu;                #ここまで1行
/bin/echo "050d 11f2" > /sys/bus/usb/drivers/rtl8192cu/new_id' > /etc/modprobe.d/8192cu.conf                                                                                   #ここまで1行 
modprobe 8192cu                                                                            #ここまで1行
exit                                                                                                 #ここまで1行

これで再起動する。

参考




3. WLAN

2015/03/09

Bodhi Linux  Buffalo WLI-U2-KG54L で無線LANに接続

network disabled

 

WLI-U2-KG54L でインターネットに接続しようとしたら Network Manager が network disabled となっていて繋がらない。

WLI-U2-KG54L はUSB接続の無線LAN子機で、Ubuntu 12.04 ではUSBポートにさすだけで認識される。Bodhi Linux 2.4.0 は Ubuntu 12.04 がベースになっているから、接続するのはそんなに難しくないだろう。

解決

 

その1 ファイルの削除

 

端末から以下のコマンドで NetworkManager.state を削除する。(参照:1,2)

  sudo service network-manager stop                                        # Network Manager を stop
  sudo rm /var/lib/NetworkManager/NetworkManager.state          # ファイルの削除
  sudo service network-manager start                                        # Network Manager を start

これで再起動後も自動で繋がるようになった。


その2 NetworkingEnabled=true そして再起動

 

NetworkManager.state の中の "NetworkingEnabled" の値が "false" になっている場合には、この値を "true" にしてから Network Manager を再起動する。(参照:3,4)
すなわち、
 端末から
    sudo gedit /var/lib/NetworkManager/NetworkManager.state
  で、ファイルを開き,
    NetworkingEnabled=false
  を
    NetworkingEnabled=true
  と書き換える。
 そして,Network Manager を以下のコマンドで再起動する。
    sudo service network-manager restart


その3 サービスの再スタート

 

NetworkManager.state の中の "NetworkingEnabled" の値が "true" になっている場合には、解決1のやり方でインターネットに接続出来るようになる。

ただ、この場合には単に端末から以下のコマンド
   sudo service network-manager restart
で再起動するだけでネットに繋がるようになると思う。


参照