想知道記憶體的資訊, 所以看了一下/proc/meminfo, 但是不太了解裡面每行的意義, 這邊解釋一下
man proc --> 搜尋meminfo
/proc/meminfo
This is used by free(1) to report the amount of free and used
memory (both physical and swap) on the system as well as the
shared memory and buffers used by the kernel.
It is in the same format as free(1).
man free --> 沒有相關資料, 繼續往回找
dpkg -S /usr/bin/free
procps: /usr/bin/free
dpkg -L procps --> 也沒有可用資訊
Google
http://wiki.debian.org.hk/w/Filesystem:/proc/meminfo
* MemTotal: 可以記憶體大小 (即是實體記憶體大小減去一些保留的位元及作業系統核心)
* MemFree: LowFree + HighFree
* MemShared: 理論上是分享記憶體 (Shared Memory) 的太小,但因為效率原因,永遠都是 0 。
* Buffers: 緩衝區快取 (Buffer Cache, 原始磁碟區塊在記憶體上的暫時寄存位) 記憶體大小,應該不會大過 20MB 。
* Cached: pagecache (由磁盤讀取檔案用的決取記憶體) 減去 SwapCache
* SwapCache: 曾被換出(swap out),但被換回(swap in)而仍留在 swapfile 的記憶體大小 (當系統要求記憶體時,這些記憶體不用經過被換出的工序,因為其內容早已放在 swapfile 中,可以減少I/O。
2009年11月18日 星期三
2009年11月12日 星期四
NFS
Host : Ubuntu 8.10
Target : RSC-W910
Host:
# sudo apt-get install nfs-kernel-server
# sudo vi /etc/exports
/filesystem 10.1.1.0/24(rw,no_root_squash)
/ARM/data 10.1.1.0/24(rw,no_root_squash)
# sudo /etc/init.d/portmap restart
# sudo /etc/init.d/nfs-kernel-server start
Target:
# mount -o nolock (Host'IP):/ARM/data /mnt
用-t nfs 會需要portmap, 這時會有錯誤訊息
----------以上 For RSC-W910設定---------------
----------以下為PC上設定--------------------------
伺服端︰
開啟portmap以及nfs服務
~$ sudo service portmap start
~$ sudo service nfs-kernel-server start
修改/etc/exports,開放nfs folder以及允許存取的位置和權限
客戶端︰
開啟portmap以及nfs
看此ip有開放哪些folder可使用
~$ showmount -e server'ip
掛載nfs folder
~$ mount -t nfs server'ip:folder'path mount'path
ex: mount -t nfs 10.1.1.13:/home/me/nfsfolder /mnt
Target : RSC-W910
Host:
# sudo apt-get install nfs-kernel-server
# sudo vi /etc/exports
/filesystem 10.1.1.0/24(rw,no_root_squash)
/ARM/data 10.1.1.0/24(rw,no_root_squash)
# sudo /etc/init.d/portmap restart
# sudo /etc/init.d/nfs-kernel-server start
Target:
# mount -o nolock (Host'IP):/ARM/data /mnt
用-t nfs 會需要portmap, 這時會有錯誤訊息
----------以上 For RSC-W910設定---------------
----------以下為PC上設定--------------------------
伺服端︰
開啟portmap以及nfs服務
~$ sudo service portmap start
~$ sudo service nfs-kernel-server start
修改/etc/exports,開放nfs folder以及允許存取的位置和權限
客戶端︰
開啟portmap以及nfs
看此ip有開放哪些folder可使用
~$ showmount -e server'ip
掛載nfs folder
~$ mount -t nfs server'ip:folder'path mount'path
ex: mount -t nfs 10.1.1.13:/home/me/nfsfolder /mnt
2009年9月28日 星期一
修改initrd , 使系統能由usb開機
Linux Dist. : Fedora Core4 (kernel 2.6.11)
# cp /boot/initrd.img /tmp/.
# mkdir /tmp/test
# cd /tmp
# mv initrd.img initrd.img.gz
# gunzip initrd.img.gz
# cd test
# cpio -i -I ../initrd.img
由於usb開機 , 需要載入正確的模組 , 才可以讓usb被認出以及被掛載為root filesystem
scsi_mod.ko sd_mod.ko usbcore.ko usb-storage.ko uhci-hcd.ko ohci-hcd.ko ehci-hcd.ko
把這些模組搬到/tmp/test/lib/下 , 然後再修改/tmp/test/init即可
# find . -print | cpio -o -H newc > ../test.ininrd.img
# cd ..
# gzip -9 test.initrd.img
# mv test.initrd.img.gz /boot/test.initrd.img
最後再修改grub/menu.lst就可以了~
# cp /boot/initrd.img /tmp/.
# mkdir /tmp/test
# cd /tmp
# mv initrd.img initrd.img.gz
# gunzip initrd.img.gz
# cd test
# cpio -i -I ../initrd.img
由於usb開機 , 需要載入正確的模組 , 才可以讓usb被認出以及被掛載為root filesystem
scsi_mod.ko sd_mod.ko usbcore.ko usb-storage.ko uhci-hcd.ko ohci-hcd.ko ehci-hcd.ko
把這些模組搬到/tmp/test/lib/下 , 然後再修改/tmp/test/init即可
# find . -print | cpio -o -H newc > ../test.ininrd.img
# cd ..
# gzip -9 test.initrd.img
# mv test.initrd.img.gz /boot/test.initrd.img
最後再修改grub/menu.lst就可以了~
如何看initrd到底在做甚麼
在一些舊版本Kernel(ex:2.4.x)下 , 要用mount去掛載initrd , 就可以觀看initrd在做些甚麼
# mv initrd.img initrd.img.gz
# gunzip initrd.img.gz
# mkdir /mnt/init
# mount -o loop initrd.img /mnt/init
修改好後還原
# umount /mnt/init
# gzip -9 initrd.img
# mv initrd.img.gz initrd.img
新版本的initrd , 是使用cpio來做備份 , 所以要用cpio來還原檔案
# file initrd.img
initrd.img: gzip compressed data, from Unix, last modified: Wed Jul 29 11:21:30 2009
# mv initrd.img initrd.img.gz
# gunzip initrd.img.gz
# file initrd.img
initrd.img: ASCII cpio archive (SVR4 with no CRC)
# mkdir init
# cd init
# cpio -i -I ../initrd.img
修改好後還原
# find . -print | cpio -o -H newc > ../new.initrd.img (用new ASCII格式)
# file ../new.initrd.img
new.initrd.img: ASCII cpio archive (SVR4 with no CRC)
# cd ..
# gzip -9 new.initrd.img
# mv new.initrd.img.gz new.initrd.img
# mv initrd.img initrd.img.gz
# gunzip initrd.img.gz
# mkdir /mnt/init
# mount -o loop initrd.img /mnt/init
修改好後還原
# umount /mnt/init
# gzip -9 initrd.img
# mv initrd.img.gz initrd.img
新版本的initrd , 是使用cpio來做備份 , 所以要用cpio來還原檔案
# file initrd.img
initrd.img: gzip compressed data, from Unix, last modified: Wed Jul 29 11:21:30 2009
# mv initrd.img initrd.img.gz
# gunzip initrd.img.gz
# file initrd.img
initrd.img: ASCII cpio archive (SVR4 with no CRC)
# mkdir init
# cd init
# cpio -i -I ../initrd.img
修改好後還原
# find . -print | cpio -o -H newc > ../new.initrd.img (用new ASCII格式)
# file ../new.initrd.img
new.initrd.img: ASCII cpio archive (SVR4 with no CRC)
# cd ..
# gzip -9 new.initrd.img
# mv new.initrd.img.gz new.initrd.img
2009年9月25日 星期五
如何掛載LVM格式的裝置
由於Fedora Core4使用預設的安裝 , 安裝後的格式為Linux LVM
那我在Ubuntu 8.10下要如何去掛載這個硬碟呢!
# apt-get install lvm2 (這樣才可以使用下面一些的指令)
# modprobe dm-mod
# pvscan (查看VG是哪一個)
ex: PV /dev/sda2 VG VolGroup00 lvm2 [37.16 GB / 32.00 MB free]
Total: 1 [37.16 GB] / in use: 1 [37.16 GB] / in no VG: 0 [0 ]
# vgchange -a y VolGroup00 (-a為active y為yes , 將VolGroup00 enable)
這時 , 在/dev/下 , 就會產生VolGroup00這個裝置
# ls /dev/VolGroup00
LogVol00 LogVol01
再將這個裝置mount起來即可
# mkdir /mnt/fc4
# mount /dev/VolGroup00/LogVol00 /mnt/fc4
收工!!
詳細的LVM介紹 , 請參考下面連結
http://plog.kmjh.tc.edu.tw/post/1/91
那我在Ubuntu 8.10下要如何去掛載這個硬碟呢!
# apt-get install lvm2 (這樣才可以使用下面一些的指令)
# modprobe dm-mod
# pvscan (查看VG是哪一個)
ex: PV /dev/sda2 VG VolGroup00 lvm2 [37.16 GB / 32.00 MB free]
Total: 1 [37.16 GB] / in use: 1 [37.16 GB] / in no VG: 0 [0 ]
# vgchange -a y VolGroup00 (-a為active y為yes , 將VolGroup00 enable)
這時 , 在/dev/下 , 就會產生VolGroup00這個裝置
# ls /dev/VolGroup00
LogVol00 LogVol01
再將這個裝置mount起來即可
# mkdir /mnt/fc4
# mount /dev/VolGroup00/LogVol00 /mnt/fc4
收工!!
詳細的LVM介紹 , 請參考下面連結
http://plog.kmjh.tc.edu.tw/post/1/91
2009年9月22日 星期二
錯誤訊息與可能可以解決的方法
編譯ubuntu 10.04核心時,卻出現下列錯誤。
~$ sudo make -j2
LD [M] ubuntu/omnibook/omnibook.o
ld: /ubuntu/omnibook/sections.lds: No such file: No such file or directory
make[2]: *** [ubuntu/omnibook/omnibook.o] Error 1
make[1]: *** [ubuntu/omnibook] Error 2
make: *** [ubuntu] Error 2
$ sudo vi /usr/src/linux/ubuntu/omnibook/Makefile
160: #EXTRA_LDFLAGS += $(src)/sections.lds
161: EXTRA_LDFLAGS += $(PWD)/ubuntu/omnibook/sections.lds
1. cannot restore segment prot after reloc permission denied
這是我在執行startx IEGD的Driver載入時會出現這個錯誤 , 判斷是Selinux的問題
因此google到一個方法
chcon -t texrel_shlib_t $(FILE)
2. perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LANG = "en_US"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
由於debootstrap會依照目前我電腦的設定去產生filesystem, 所以在幫客人做filesystem時會有這種語言設定的錯誤.
安裝好X server client gnome後, startx會產生的Err Msg
apt-get install fast-user-switch-applet
#### 在Fedora 10上安裝新版intel driver ####
# ./autogen.sh
syntax error near unexpected token xinerama
抓新版的xorg-x11-server-devel
# yum search xorg-x11-server-devel
# yum install xorg-x11-server-devel-i386
#### Nautilus can't be used now ####
在使用embedded debian時, 我手殘的把user加入了gdm群組, 導致重登後出現這個錯誤.
把/etc/group下, gdm後面的user刪掉即可.
Error 16: Inconsistent filesystem structure
還原後的系統, grub時所出現的錯誤, 是他不認得你的裝置格式, 通常是有錯誤才會這樣
# fsck -y -f $DEVICE_NODE
手很賤...將原先編譯的好的kernel make clean又移位,導致我要compile module時出現錯誤。
1. 先出現Module.symvers is missing
那就將module下的Module.symvers貼過去
2. 又出現scripts/mod/modpost: No such file or directory
make scripts就可以解決^_^
3. 可以編譯以及正確動作啦!
手動從console only安裝x windows server & clients後,登入時的錯誤
OAFIID:GNOME_FastUserSwitchApplet panel encountered a problem
sudo apt-get install indicator-applet-session
~$ sudo make -j2
LD [M] ubuntu/omnibook/omnibook.o
ld: /ubuntu/omnibook/sections.lds: No such file: No such file or directory
make[2]: *** [ubuntu/omnibook/omnibook.o] Error 1
make[1]: *** [ubuntu/omnibook] Error 2
make: *** [ubuntu] Error 2
$ sudo vi /usr/src/linux/ubuntu/omnibook/Makefile
160: #EXTRA_LDFLAGS += $(src)/sections.lds
161: EXTRA_LDFLAGS += $(PWD)/ubuntu/omnibook/sections.lds
1. cannot restore segment prot after reloc permission denied
這是我在執行startx IEGD的Driver載入時會出現這個錯誤 , 判斷是Selinux的問題
因此google到一個方法
chcon -t texrel_shlib_t $(FILE)
2. perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LANG = "en_US"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
由於debootstrap會依照目前我電腦的設定去產生filesystem, 所以在幫客人做filesystem時會有這種語言設定的錯誤.
export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
locale-gen en_US.UTF-8
dpkg-reconfigure locales
3.OAFILD:Gnome_FastUserSwitch Applet安裝好X server client gnome後, startx會產生的Err Msg
apt-get install fast-user-switch-applet
#### 在Fedora 10上安裝新版intel driver ####
# ./autogen.sh
syntax error near unexpected token xinerama
抓新版的xorg-x11-server-devel
# yum search xorg-x11-server-devel
# yum install xorg-x11-server-devel-i386
#### Nautilus can't be used now ####
在使用embedded debian時, 我手殘的把user加入了gdm群組, 導致重登後出現這個錯誤.
把/etc/group下, gdm後面的user刪掉即可.
Error 16: Inconsistent filesystem structure
還原後的系統, grub時所出現的錯誤, 是他不認得你的裝置格式, 通常是有錯誤才會這樣
# fsck -y -f $DEVICE_NODE
手很賤...將原先編譯的好的kernel make clean又移位,導致我要compile module時出現錯誤。
1. 先出現Module.symvers is missing
那就將module下的Module.symvers貼過去
2. 又出現scripts/mod/modpost: No such file or directory
make scripts就可以解決^_^
3. 可以編譯以及正確動作啦!
手動從console only安裝x windows server & clients後,登入時的錯誤
OAFIID:GNOME_FastUserSwitchApplet panel encountered a problem
sudo apt-get install indicator-applet-session
2009年9月16日 星期三
VIA CX700M for Kernel 2.6.18
Kernel 2.6.18 無法打開DMA , 因為VIA CX700在Kernel 2.6.18的支援有問題.
這個問題搞了我很久...
我的錯誤決策導致浪費相當多的時間.
一開始我就決定用最省力的方式 , 直接Update Kernel到2.6.27 (Ubuntu8.10的Kernel version) , 想當然爾 , DMA在更新核心後就可以開啟了 . 但是小日本並不想更新核心 . 由於他們是使用CentOS5.3 , 所以並不想冒險去使用較新的核心.
這邊出現了一點小問題...我第一次Update Kernel到2.6.18.8時 , DMA也是可以被開啟的...但是第二次之後 , 卻一直都是失敗...我也還沒搞清楚問題在哪裡.
後來一直圍繞在第一次成功的基準 , 不斷的去更改核心選項 , 認為應該問題是在於我少勾或者是多勾了甚麼功能...所以造成非常多的時間被浪費在編譯核心.
最後更改方向 , 去VIA的論壇去看看這個晶片在2.6.18上是有甚麼問題的. 果然找到了一個可能的解決方案 . 在driver/ide/pci/via82cxxx.c內多加幾行code即可
#define PCI_DEVICE_ID_VIA_CX700 0x8324
#define PCI_DEVICE_ID_VIA_CX700-IDE 0x5324
#define PCI_DEVICE_ID_VIA_8237S 0x3372
{ “cx700”, PCI_DEVICE_ID_VIA_CX700, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST }
{ “vt8237s”, PCI_DEVICE_ID_VIA_8237S, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST }
{ “6410”, PCI_DEVICE_ID_VIA_6410, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST }
static struct pci_device_id via_pci_tbl[] = {
{ PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C576_1, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
{ PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_1, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
{ PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_CX700-IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0,0},
{ PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_6410, PCI_ANY_ID, PCI_ANY_ID, 0, 1, },
修改完後 , 把他編譯進核心 , 不能使用模組的方式 , 因為不知道是哪個模組會去先使用到ide的位置 , 導致這個模組用外掛的方式會失敗
重新開機後即可!!
這個問題搞了我很久...
我的錯誤決策導致浪費相當多的時間.
一開始我就決定用最省力的方式 , 直接Update Kernel到2.6.27 (Ubuntu8.10的Kernel version) , 想當然爾 , DMA在更新核心後就可以開啟了 . 但是小日本並不想更新核心 . 由於他們是使用CentOS5.3 , 所以並不想冒險去使用較新的核心.
這邊出現了一點小問題...我第一次Update Kernel到2.6.18.8時 , DMA也是可以被開啟的...但是第二次之後 , 卻一直都是失敗...我也還沒搞清楚問題在哪裡.
後來一直圍繞在第一次成功的基準 , 不斷的去更改核心選項 , 認為應該問題是在於我少勾或者是多勾了甚麼功能...所以造成非常多的時間被浪費在編譯核心.
最後更改方向 , 去VIA的論壇去看看這個晶片在2.6.18上是有甚麼問題的. 果然找到了一個可能的解決方案 . 在driver/ide/pci/via82cxxx.c內多加幾行code即可
#define PCI_DEVICE_ID_VIA_CX700 0x8324
#define PCI_DEVICE_ID_VIA_CX700-IDE 0x5324
#define PCI_DEVICE_ID_VIA_8237S 0x3372
{ “cx700”, PCI_DEVICE_ID_VIA_CX700, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST }
{ “vt8237s”, PCI_DEVICE_ID_VIA_8237S, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST }
{ “6410”, PCI_DEVICE_ID_VIA_6410, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST }
static struct pci_device_id via_pci_tbl[] = {
{ PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C576_1, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
{ PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_1, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
{ PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_CX700-IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0,0},
{ PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_6410, PCI_ANY_ID, PCI_ANY_ID, 0, 1, },
修改完後 , 把他編譯進核心 , 不能使用模組的方式 , 因為不知道是哪個模組會去先使用到ide的位置 , 導致這個模組用外掛的方式會失敗
重新開機後即可!!