最近遇到挺多linux配置中的問題,將其匯總,內容雜七雜八,權當亂炖,以飨來者!祝新年快樂!
1.Ubuntu開機出現:
piix4_smbus ****host smbus controller not enabled
解決方法:
執行:lsmod | grep i2c
root@localhost:/dev#lsmod | grep i2c
i2c_piix4 8143 0
root@localhost:/dev# vi /etc/modprobe.d/blacklist.conf
將i2c_piix4列入不加載模塊列表,在blacklist.conf文件末尾添加:
blacklist i2c_piix4
重新生成引導文件/boot/initrd.img:
執行:update-initramfs -u -k all
然後重啟系統即可。
原因:
主機CPU是64位的,但安裝的ubuntu是32位的。
2.編譯gcc出現:
error: call to ‘__open_missing_mode’ declared with attribute error: open with O_CREAT in second argument needs 3 arguments
這是我在gcc-4.4版本下預安裝低版本gcc-3.4.5時出現的現象;
解決方法:
編譯時執行:
make “CFLAGS=-U_FORTIFY_SOURCE”
原因:
從gcc 4.0開始,添加了一些擴展的檢查功能,如buffer overflow,ignoring return value等等,早在feroda core 4中,redhat就已經默認打開了gcc的這個擴展,並在此基礎上編譯了fc4的幾乎所有軟件;ubuntu直到8.10版本才使能這個功能;
但是這個功能打開之後會造成很多程序編譯不過,比如gcc:(,解決方法就是在編譯的時候禁止掉fortify擴展:
3.linux自動掛載共享文件夾(請完整看完本節):
當我在虛擬機中的Ubuntu中的/mnt/hgfs/文件夾中查看之前共享的文件夾時發現該共享的文件夾竟然不不見了。暈...仔細查看了網絡連接狀況,虛擬機和主機相互間都能ping通,並且重新設置更換了文件夾,並給該文件夾較大的訪問權限,都不行,隨後想,既然/mnt/hgfs沒有共享的文件夾,隨性就掛載一個,執行:
mount -t cifs -o username=YOUR_USERNAME,password=YOUR_PASSWORD //HOME_HOST_IP/share /mnt/hgfs/mnt
隨後出現:CIFS VFS: cifs_mount failed w/return code = -22
經查資料原來是samba_client沒有安裝,執行:
apt-get install samba-client
如果你沒有安裝samba還需要安裝:
apt-get install smaba
完後,再次執行上述掛載命令,共享文件夾恢復正常。
但上述操作只是臨時的,重啟後又恢復正常,需在/etc/fstab文件中添加如下行:
//HOME_HOST_IP/share /mnt/hgfs/mnt cifs username=YOUR_USERNAME,password=YOUR_PASSWORD,rw 0 0
據@Aenon,你也可以在~/.bashrc中添加
alias xxx='mount -t smbfs -o username=Administrator.password=*** //HOME_HOST_IP/share /mnt/hgfs/mnt'
這樣當你需要掛載共享文件夾時執行xxx即可,不用每次開機都掛載。
卸載掛載文件夾:umount /mnt/hgfs/mnt/
執行:net share可以查看電腦主機共享的文件夾。
我已經在VM中設置了共享的文件夾,以前都是自動掛載,可以直接在/mnt/hgfs中看到的,不曉得現在是什麼原因。
今天終於找到原因了,是由於VMtools的問題,將VMtools重新安裝了一遍就ok了。無語呀。
進入VM菜單VM/Reinstall VMware tools..
之後會在/dev/cdrom1(具體可查看自己目錄中的名稱)中有該工具的安裝包,將其掛載在/mnt/VMtools/目錄下。
mount /dev/cdrom1 /mnt/VMtools
進入/mnt/VMtools可查看掛載的文件
將VMwareTools-9.2.3-1031360.tar.gz安裝包拷貝到另外一個文件夾內(在掛載的地方是不能解壓的)然後解壓:
tar zxvf VMwareTools-9.2.3-1031360.tar.gz
進入:cd vmware-tools-distrib
執行:
./vmware-install.pl
然後一路ENTER默認安裝即可,隨後你就可以在/mnt/hgfs文件夾下看到你的共享文件夾了。就這麼簡單的事我折騰了這麼長時間。暈...
上面的在/etc/fstab中添加掛載文件的方式我覺得不是一個好方法,一旦你主機使用動態ip,那麼下次開機的時候ip就變了。那麼你虛擬機中的ubuntu就啟動不起來了。它會提示掛載出錯。怎麼搞都起不來,以前用的比較二的辦法是重新安裝,現在學到了新的辦法哈。
4.文件配置出錯 linux啟動不起來
重啟虛擬機系統,在啟動時按著shift不動,此時會彈出類似如下界面,即進入grub:
按“e”鍵進入命令行編輯模式,會彈出如下界面:
在上圖的第二行添加如下:
init=/bin/bash
然後按Ctrl-x繼續啟動,系統會跳過掛載出錯,繼續執行,進入命令行後趕緊修正你的配置信息吧!修復完重啟即可。
5.切換tab鍵提示:
每次執行命令時,按tab鍵使用補全功能,都會彈出類似下面那一段,暈呀。
cd sour-bash: warning: setlocale: LC_CTYPE: cannot change locale (en_US.UTF-8:zh_CN.GB2312)
解決辦法:
apt-get purge locales
apt-get autoclean
apt-get install locales
cd /usr/share/locales
./install-language-pack en_US.UTF-8
dpkg-reconfigure locales
修復完成
運行locale查看相關信息.
感謝:http://www.xdty.org/912
6.scull編譯問題:
LDDR3中使用的內核代碼是2.6.10,現在新的linux已經有了變化,在編譯過程中遇到一些問題,這篇文章中的描述基本都解決了。
A:提示:
問題:scripts/Makefile.build:46:*** CFLAGS was changed in "/home/chenfang/scull/Makefile",Fix it use EXTRA_CFLAGS.Stop.:
解決:將Makefile中的CFLAGS修改為EXTRA_CFLAGS
B:提示:
問題:main.c找不到linux/config.h,
解決:將main.c中的config.h修改為autoconf.h
C:提示:
問題:make[2]: *** [/home/libin/project/ldd3/examples/scull/pipe.o] 錯誤 1
make[1]: *** [_module_/home/libin/project/ldd3/examples/scull] 錯誤 2
解決:在pipe.c中添加#include<linux/sched.h>
D:提示:
問題:make[2]: *** [/home/libin/project/ldd3/examples/scull/access.o] 錯誤 1
make[1]: *** [_module_/home/libin/project/ldd3/examples/scull] 錯誤 2
解決:在access.c添加 <linux/sched.h>
E:提示:
/home/cs/lddr/lddr/scull/access.c: In function 'scull_w_open':
/home/cs/lddr/lddr/scull/access.c:185: error: 'struct task_struct' has no member named 'uid'
make[2]: *** [/home/cs/lddr/lddr/scull/access.o] Error 1
make[1]: *** [_module_/home/cs/lddr/lddr/scull] Error 2
解決:將access.c中的
current->uid 修改為 current->cred->uid
current->euid 修改為 current->cred->euid
然後再編譯即可。
7.ubuntu字體
多謝@Dean Chen的分享。
root@localhost:/home/cs/lddr/lddr/scull#locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US
LANGUAGE=
LC_CTYPE="en_US"
LC_NUMERIC="en_US"
LC_TIME="en_US"
LC_COLLATE="en_US"
LC_MONETARY="en_US"
LC_MESSAGES="en_US"
LC_PAPER="en_US"
LC_NAME="en_US"
LC_ADDRESS="en_US"
LC_TELEPHONE="en_US"
LC_MEASUREMENT="en_US"
LC_IDENTIFICATION="en_US"
LC_ALL=
根據該文的提示,在/etc/profile文件末尾添加:
export LC_ALL=C
執行#source /etc/profile
執行locale查看
即可。
若缺失字體,執行字體安裝命令:
apt-get --reinstall install language-pack-en
字體更新命令:
update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
水平有限,還望多多指教!