2014年12月30日 星期二

[Linux] 簡單安裝 Install tftp server in Linux simply

很久很久以前的 hpa-tftpd 的安裝方法....

實在有點難用又過時了。
2009 年 ~ ---> Ubuntu 都不知道換了幾次臉。

為了讓google 自己方便,下面記載新的方法。


2014年12月15日 星期一

[Linux] lunbuntu + unetbootin + live USB


這超迷你版的USB,哈~ 超無痕的。可惜速度是假USB3.0


unetbootin 用來製作 live USB 這件事情就不用說了,Easy and more in google.


稍微解說一下原理:
載用syslinux 的booting loader 來帶起作業系統,因為是live 每次開機都會洗掉,根據這點很輕易的就可以在
"/xxx/xxx" 發現採用squashfs 一個read-only 壓縮檔案系統,這邊看起來都跟平常工作的嵌入式系統類似,特別的是
unetbootin 是有提供使用者讀寫修改,下次重開機可以記錄保留的效果

何等神奇!!! 馬上下一個 mount & losetup -a 檢查一下

root@lubuntu:~# mount /cow on / type overlayfs (rw) 
/dev/sdb1 on /cdrom type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro) 
/dev/loop0 on /rofs type squashfs (ro,noatime) 
/dev/loop1 on /media/bejo/c698766a-48e2-6d45-81ae-fe5fba3ff6f2 type ext2 (rw,nosuid,nodev,uhelper=udisks2)
root@lubuntu:~# losetup -a 
/dev/loop0: [0811]:35 (/cdrom/casper/filesystem.squashfs) 
/dev/loop1: [0811]:41 (/cdrom/casper-rw) 

loop1 就是那神奇的 casper-w

如果你做一個 mount 動作
mount -o loop casper-rw /mnt/xxx
就會發現長得非常類似(根本一樣 = =) 一個基本的file system 又剛剛好是你改過的檔案

哪有這麼剛好,原來 ...
是 overlap ... mount

原理就是先掛一個static 的image 再把自己可以修改的蓋上去,噹噹  完成檔案系統可以紀錄被修改的樣子
效果就會 ---> 先讀取可讀寫的 如果沒有 ---> 讀取靜態的 ---> 結束這回合

孔明先生,這太妙了。

說一下重點:
1. 從此只要備份好 casper-w 這個檔案,凡是live usb 都可以被還原 (自己還原自己作)
2. 可以加大 casper-w 大小
方法:
(找一台Linux  不是同一台!!!)
#dd if=/dev/zero bs=1M count=1024 >> casper-rw   // 1024MB ---> 自行更改 別超過4G
#e2fsck -f casper-rw
#resize2fs casper-rw

創造一顆新的:
#dd if=/dev/zero of=casper-rw bs=1M count=1024 
#mkfs.ext3 casper-rw

曾經想辦法突破4GB,受限於FAT32大小只能支援到此,
ext3 -> 可booting 更換不了超過4GB 
ext2 -> 開機不能
ext4 -> 開機不能
ntfs -> ... 你在開玩笑嗎?

只好認命了。

這種手法來記錄file system 的修改,印象似乎在OPENWRT也是如此,時光有限,待有緣再分享。

[Linux] dlopen 和 dlsym

我都說這些是放再經書 (C tools) 最末頁妖魔鬼怪API ....

原理網路上很多,這裡簡單筆記就好。

2014年12月3日 星期三

[Bash] bash_completion - 命令強迫補完計畫 (?

沒有計畫~ 只有... 搗蛋

最近幾版的 Ubuntu lubuntu  的兔兔娘... command line 跑起來頗靈異

當發生
make <tab> <tab> 連按很多下會看到

--
root@bbG:~# make 23:set: command not found
23:set: command not found
--
原本是預期看到 /path/to/some/where