2015/04/28

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

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

ここでは以下の4つのファイルがフォルダ内にあるとして,renameコマンドの例を示す。
(参照:1,2,3)


0. 元のファイル名


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


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


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. 置換  最初の空白をアンダーバー "_" に変換する


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. 置換  すべての空白をアンダーバー "_" に変換する。


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)


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. 置換 大文字を小文字に置換する


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. 削除  最初のドット "." を削除する。


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. 補完  先頭に文字や数字を補完する


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. 補完  最後(拡張子の前)に文字や数字を補完する


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の間)に数字(年号)を補完する


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桁の連番にする。


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. 入れ替え  日付が _日_月_年_ となっているので、_日_月_年_ と並べ替える。


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 のアップデート

 

アップデートのポイント


EeePC 901 の 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 のアップデート (K7S5A)

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)

 

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


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


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


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


 - 後は画面の指示に従う。

 

備考

 

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
で再起動するだけでネットに繋がるようになると思う。


参照

 




2014/08/30

Ubuntu  pciehp Link Training Error occurs Failed to check link status

症状


LinuxBean や WattOS の LiveCD を試しているうちに、OS起動時に

 pciehp 0000:00:1c.5:pcie04: Link Training Error occurs
 pciehp 0000:00:1c.5:pcie04: Failed to check link status

というエラーが出るようになった。このエラーが出るようになってからはハードディスクにインストールしてある Ubuntu12.04 は立ち上がるが,

 - 有線LANが繋がらなくなる。
 - ctrl+alt+F1 で CUI を立ち上げようとすると上記のエラーが出て進まなくなる。
 - LiveCD (LiveDVD) が起動しなくなる。

という状態になった。このエラーについてネット上で以下のような記述を見つけた。

 - why-does-my-kernel-log-file-report-link-training-error-and-failed-to-check-link-status 
 - [SOLVED] pciehp problem 

しかし、どちらも解決には至らなかった。

解決

このエラーはOSが立ち上がる前に出てくる。ということは,このエラーは BIOS レベルで起きているのか…。ならば完全に電源を落としてしまえば何とかなるかも…。
そこで以下のとおりにしてみると

 - PCをシャットダウンする。
 - コンセントから電源ケーブルを抜く。
 - 約20秒以上そのままにしておく。
 - 電源ケーブルをコンセントに差し込んで電源をONにする。

上記のエラーは出なくなりました。有線LANも復活しています。ctrl+alt+F1 でコンソールも立ち上がります。LiveCD も使えるようになりました。 


UI (User Interface) とは、人間がコンピューターを操作するためのソフトウェアです。UI には CUI と GUI があります。
CUI (Character User Interface) とは、キーボードから入力してモニターに文字を出力する UI です。CUI は CLI (Command-Line Interface) とも呼ばれます。
これに対して
GUI とは、キーボードやマウス、スクリーンタッチから入力してモニターから画像や文字を出力する UI です。