2014/12/10

mount partitions from disk dd image 掛載影像檔中的 硬碟分割區

假設,有一顆硬碟,利用 ddrescue 或 dd 做出一個 disk.dd
想要掛載它的話,可以利用 mount -o loop,offset=xxx  這樣的語法來掛載
比較麻煩的是要計算它的位移量,我在早前的文章有提到計算方法,
底下是利用 kpartx 來對應:
$ sudo kpartx -v -a disk.dd

add map loop0p1 (252:0): 0 204800 linear /dev/loop0 2048
add map loop0p2 (252:1): 0 180807680 linear /dev/loop0 206848
add map loop0p3 (252:2): 0 2 linear /dev/loop0 181016574
add map loop0p5 : 0 37748047 linear /dev/loop0 181016576
add map loop0p6 : 0 138412110 linear /dev/loop0 218767360
add map loop0p7 : 0 643033776 linear /dev/loop0 357181440

接下來就可以掛載它了,都不必計算
$ sudo mount /dev/mapper/loop0p5 /tmp/5 -o ro

後面的 -o ro 是掛載成唯讀的,視自己的需求決定要不要加

用完之後通常就要拔除或是 卸載,你會發現光 umount 還不夠,
必須再利用 kpartx 來解除影像檔的對應

$ sudo kpartx -v -d disk.dd

批次處理照片

有一批照片要旋轉90度,原名稱副檔名是大寫,處理後也想順便改成小寫,語法如下,必須安裝 imagemagick 套件:

for i in `ls *JPG`; do F=${i%%.JPG}; convert $F.JPG -rotate 90 $F-v1.jpg; done

其他如放大縮小也是可以查閱 convert 指令取得

2014/11/17

UTF8 remove BOM, 移除 BOM 檔頭

awk '{ if (NR==1) sub(/^\xef\xbb\xbf/,""); print }' INFILE > OUTFILE

2014/08/19

簡繁轉換 iconv, cconv, opencc,

這篇文章整理並比較了幾個簡繁轉換的工具
我拿來試了下 xml 檔的轉換,iconv 確實一直存在著字元集問題,使用 cconv 就沒有這個問題,語法範例如下:
for i in *xml; do echo $i; cconv -f UTF8-TW -t UTF8-CN -o out/$i $i; done
可以很簡單的將 utf8 的繁體轉換成 utf8 的簡體

等效的 iconv 大致如下:

for i in *xml; do echo $i; iconv -f utf8 -t big5 $i | iconv -f big5 -t gb2312 | iconv -f gb2312 -t utf8 -o out/${i}; done

iconv 除了不直接外,還無法轉換 BOM xml file, 有些字元也會出錯

可惜的是,我不會使用 opencc....不知道怎麼從繁體轉成簡體

2014/08/04

ubuntu 如何重新啟動 usb?

我的筆電怪怪的,有時開機后,一開始還可以用 usb, 例如 usb mouse, 可是開完機不久它就失效了,重新拔插也沒有用

老實講我不知道是什麼原因造成的,但是底下的方法可以讓它重新啟動:

for u in uhci_hcd xhci_hcd; do
  for i in $( ls /sys/bus/pci/drivers/$u/ | grep : ); do
    echo -n "unbind $u... ";echo $i | sudo tee /sys/bus/pci/drivers/$u/unbind;
    echo -n "bind.. $u... ";echo $i | sudo tee /sys/bus/pci/drivers/$u/bind;
  done

done

同樣道理,如果想重新啟動其他裝置也可以比照辦理。
其他相關的指令如:
lspci
lsusb
lshw

2014/05/19

ubuntu ffmpeg 不見了,替代方案?

太久沒用了,竟然突然找不到  ffmpeg, 連套件都沒了。
其實啊,用  avconv, 算是完整的替代方案,語法基本差不多,而且更簡潔,例如,不必再指定格式。
譬如原來的語法 ffmpeg -i $1 -ss $2 -t $3 -f image2 $4
現在只需要 avconv -i $1 -ss $2 -t $3 $4
甚至,可以直接從 m4v 切割一段,直接輸出成 mp3
avconv -i $1 -ss $2 -t $3 $4.mp3

其他我就不多說了喔,好用啊!

2014/04/16

android-x86 調整 data.img 大小

預設是 512M, 說真的是小了點,若要大一點的話,當然在安裝時請不要用預設的 512, 可以改用 8192 之類的

但是若已經安裝好的話呢?是有 windows 工具,這邊要講的是 ubuntu 下的工具, 怎樣不破壞原來的資料讓它變大呢?

三個動作:
# 先修復檔案系統的錯誤
$ e2fsck -fyc /media/wade/DATA/data.img

# 因為原來有 512M, 加上 7.5G, 也就是 7680 * 1M 就會變成 8G
$ dd if=/dev/zero of=/media/wade/DATA/data.img oflag=append conv=notrunc bs=1M count=7680

# 再來就是 resize...
$ resize2fs /media/wade/DATA/data.img

2014/04/09

ubuntu 更新後,選單/工具列 不見了

可以試試底下三種方法(擇一):
一、
  $ sudo dpkg-reconfigure unity
  $ sudo dpkg --configure -a

二、
  $ dconf reset -f /org/compiz/
  $ unity --reset-icons &disown

三、
  $ sudo apt-get install compizconfig-settings-manager 
  $ export DISPLAY=:0
  $ ccsm


install adobe air on ubuntu 64

請參考這兒 http://www.tkalin.com/blog_posts/installing-adobe-air-and-elance-tracker-on-ubuntu-13-10-saucy-salamander-64-bit

$ sudo apt-get install libxt6:i386 libnspr4-0d:i386 libgtk2.0-0:i386 libstdc++6:i386 libnss3-1d:i386 lib32nss-mdns libxml2:i386 libxslt1.1:i386 libcanberra-gtk-module:i386 gtk2-engines-murrine:i386    

sudo apt-get install libgnome-keyring0:i386

$ sudo ln -s /usr/lib/i386-linux-gnu/libgnome-keyring.so.0 /usr/lib/libgnome-keyring.so.0

$ sudo ln -s /usr/lib/i386-linux-gnu/libgnome-keyring.so.0.2.0 /usr/lib/libgnome-keyring.so.0.2.0

接下來就是去 adobe 下載來安裝,就不寫了

2014/03/21

哇,好快

新北市因為某些原因,不肯付錢給微軟,因此採購電腦時,不再使用微軟,而是採用 ezGO, 並要求學校開課教授 ezGO, 我想,這也算是我身邊發生的第一起微軟敗退案。當然,我知道很多熱心人士致力推廣自由軟體,至少,浪潮已經湧到我身邊來了。

言歸正傳,小羊小肯早就知道多重開機,早就知道 ubuntu, 也聽我念了很多次微軟怎樣怎樣不好,現在終於正式要學 ezGO 了,剛開學那陣子非常興奮,我就做了隨身碟開機給他們,結果一直到昨天,小羊才正式跟老師提,老師還真的說「你可以用隨身碟開機」,我都很懷疑他這個美術老師兼課的電腦老師到底懂不懂隨身碟開機啊!

其實,小羊小肯愛上 ezGO 是因為,上面有一個賽車遊戲,剛開學那週就看到了,隔週終於在課堂上玩,回家就很努力要玩,也因此更加遵守媽媽的約定,總之就是變更乖了。因為之前都是用媽媽的筆電,就算隨身碟開機很慢,但是他們沒感覺,原因就是跟學校比起來快多了。我在猜,學校的新電腦不應該比我家的慢,想必是學校是因為怕每次上課前要還原電腦麻煩,採用雲端安裝的方式吧,我猜。剛剛上網體驗了下,果然雲端啊!

小羊小肯在上了幾次課後,老是抱怨學校的開機很慢,平常在家,都是哥哥先拿我的筆電開機去玩, 話說這款賽車遊戲叫 supertuxkart, 我的 ubuntu 當然也可以安裝,但是他們喜歡用自己的帳號,喜歡用 ezGO, 所以才有先前的幾篇文章。總之,我的筆電現在可以讓他們用自己的隨身碟開機,也可以用我電腦裡的 ezGO iso 開機,也燒了光碟給他們光碟開機,當然也有 ezGO 硬碟版本的開機,花樣百出。昨天,小肯終於第一次用我的電腦「關機」,結果他發出驚嘆的口氣說,『哇,關機好快喔』。

話說,這款 supertuxkart 支援搖桿,我還特地去買了兩支,不知道這樣可不可以取代 WII? 想必還是差很遠吧,但是至少目前他們是真的玩的超開心的啊!

2014/03/14

淺談虛擬機、多重開機、多重編譯環境

好像上一篇也是相關文章?
最近需要 windows, ubuntu, 各種版本的 ubuntu, ezGO....
之前我是做在一支 8G usb disk 中含有 ubuntu, GeeXboX, tiny linux,....
最近因為需要 windows, 所以用虛擬機,譬如用 vmware player for ubuntu, 或是 virtualbox....
後來又需要 ezGO, 這個超肥的 kubuntu
工作上又需要舊版的 ubuntu 來保證編譯 各種晶片的 Android, (TI, MTK, BCM...),這個有的輕易就整合在同一個開發環境中,有的沒辦法

所以啦,也是以虛擬機的方式存在。當然,我的筆電算是相當高檔就是了。
還有一種方法,就是切割多個硬碟分割區,只是不見得有辦法做到這一點,或是拿 usb 3.0 的外接 usb disk, 只是這樣的速度怎麼也快不起來,效能或許也不輸虛擬機,但是虛擬機的好處是可以多個工作環境同時存在。

有一個非常古老的方法,叫做 chroot / debootstrap ....這邊不多說,有興趣的可以上網查。
chroot 不會像虛擬機那樣占用虛擬機的資源,環境也可以自行切開,相當好用。而且硬碟空間也少非常非常多。這邊只提醒一下:
在 chroot 之前,我是這樣下命令:
cd $CHROOT_DIR
for i in dev proc srv sys tmp dev/pts ; do echo $i;sudo mount --bind /$i $i; done
chroot . /bin/bash

不用的時候,重開機是個方法,不然就是反過來 umount
當然,若要非 debian/ubuntu 的系統,還是得虛擬機或多重開機囉!

2014/03/04

各種虛擬機的檔案轉換


轉自 http://blog.sleeplessbeastie.eu/2012/04/29/virtualbox-convert-raw-image-to-vdi-and-otherwise/


VirtualBox - convert RAW image to VDI and otherwise


VirtualBox command-line interface (VBoxManage) provides an easy way to convert raw disk image to the VDI/VMDK format and otherwise.
Let's assume that we have raw image of the sdb device:
$ sudo dd if=/dev/sdb of=./sdb.raw
To use it with VirtualBox we need to convert it to the VDI format:
$ VBoxManage convertdd sdb.raw sdb.vdi --format VDI
To use it with VMware we need to convert it to the VMDK format:
$ VBoxManage convertdd sdb.raw sdb.vmdk --format VMDK
Convert between VDI/VMDK formats:
$ VBoxManage clonehd sdb.vdi sdb.vmdk --format VMDK
$ VBoxManage clonehd sdb.vmdk sdb.vdi --format VDI
Convert to the RAW image:
$ VBoxManage clonehd sdb.vdi sdb.raw --format RAW
Alternative solution to get back raw image after applying modifications is to use qemu-img command from qemu package:
$ qemu-img convert -f vmdk sdb.vmdk -O raw sdb.raw
Now we can write image to the device:
$ sudo dd if=./sdb.raw of=/dev/sdb