2018年3月23日 星期五

2016年9月29日 星期四

Laptop with Ubuntu and bumblebee to setup the dual sreen

這是我在想讓Ubutnu用dual screen時所遇到的問題(Laptop主螢幕,)。
NB/Laptop: HP Pavilion 15 bc026tx
Display card: Intel HD Graphic 530(NB embedded screen) | NVidia GeForce GTX 960M(HDMI port)

OS: Ubuntu 14.04
Windows Manager: lightdm

好了,主要就是這兩個折磨人的小妖精顯卡了
內建螢幕的輸出是使用intel HD graphic 530這張卡,而HDMI輸出則是靠NVidia GTX 960M

這對Windows 10是沒甚麼問題,但是對ubuntu的lightdm(Xorg)來說就是搞死人的問題了。

因為Xorg的輸出只認一張顯卡,所以要不,全讓Intel去弄,或是全讓NVidia去弄,一人分一半好像是不成啊~~

好在,NVidia被Linux的老大Linus靠北之下,就推了一個Bumblebee(for Laptop)| Optimus(for Desktop)

這些主要是讓Desktop| Laptop可以全靠一張卡(Intel內顯或是NVidia獨顯)來處理視訊輸出。

在這過程有遇到PCI bus error的問題,所以就從這個東西先開始。
PCI error通常是你裝了NVidia顯卡的driver後(用Synaptic裝)
大概會像這樣的訊息:

0000:00:1c.5: PCIe Bus Error: severity=Corrected, type=Physical Layer, id=00e5(Receiver ID)

這個解法先從grub去解決,重點就是boot with pci=nomsi 這個參數做起

sudo cp /etc/default/grub /etc/default/grub.bak  //備份grub設定

sudo vim /etc/default/grub //編輯grub設定檔

grub檔案裡面有一行
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
改成
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash pci=nomsi"

最後一定要下
sudo update-grub 
這樣grub的設定才會吃進系統
之後重開機
sudo reboot

好,開始進入重頭戲。
1. 先安裝bumblebee(用synaptic安裝bumblebee-nvidia),它會自動幫你裝其他dependency
    裝完後記得把你的user id加到bumblebee的user group裡面
    sudo gpasswd -a YOUR_USER_ID bumblebee
2. 使用Additional driver來確認目前Ubuntu在你機器上使用的NVidia driver的版本,像我的就是nvidia-352,一樣用synaptic去裝driver,用additional driver選你剛剛裝的driver,然後重開機

3. 沒意外筆電螢幕在進入lightdm後會一片黑(因為這時候輸出會切到HDMI),這時候就用Ctrl+ALT+F1切到terminal登入,修改
/etc/bumblebee/bumblebee.conf
改下列幾行設定(請記住,driver版本不一定是352請確認自己的版本修改)
Driver=nvidia
KernelDriver=nvidia-352

XorgModulePath=/usr/lib/nvidia-352/xorg,/usr/lib/xorg/modules

4. 修改 /etc/modprobe.d/bumblebee.conf
加入這行
blacklist nvidia-352

5. 修改/etc/bumblebee/xorg.conf.nvidia,改兩行
    Option "UseEDID" "true" //本來是false
把Option "UseDisplayDevice" "none"加#號註解掉
6. 重開機

7. 進入桌面後,下指令(先確定HDMI接到外接螢幕了)
sudo intel-virtual-output(適用於HDMI主要由NVidia顯卡輸出的NB)

8. 使用xradr確認顯示裝置狀態,如果有VIRTUAL1 connected的話,沒意外就是成功了,看一下你的外接螢幕吧!


**例外處理: 要是不幸,進入lightdm登入畫面,而你NB螢幕沒畫面,外接螢幕也沒畫面,莫急莫慌莫害怕,你需要:

1. Ctrl+ALT+F1(F2 or F3)進入其他terminal介面,登入帳號
2. 移除有NVidia driver
    sudo apt-get purge $(dpkg -l | awk '$2~/nvidia/ {print $2}')
3. 重開機
參考資料:
https://wiki.archlinux.org/index.php/Bumblebee
http://askubuntu.com/questions/748078/nvidia-geforce-930m-driver-and-pci-bus-error
https://wiki.ubuntu.com/Bumblebee
http://askubuntu.com/questions/452556/how-to-set-up-nvidia-optimus-bumblebee-in-14-04

2016年8月24日 星期三

2015年10月20日 星期二

Ctags && Taglist

Ref/copy source: http://abirdnoob.blogspot.tw/2013/03/linux-vim-ctagcodetrace-code.html

在Ubuntu的安裝過程如下

1. 首先安裝exuberant-ctags 
 $ sudo apt-get install exuberant-ctags
2. 之後再裝vim plugin:taglist
taglist下載頁面下載taglist.vim,有許多版本可以選擇,今天我們下載taglist_4.6.zip
此為一個打包好的zip壓所檔,所以要先將之解壓縮: 
 $ unzip taglist_46.zip
解壓縮後會出現兩個資料夾,一個是放說明文件taglist.txtdoc與放taglist.vim本身的plugin
這些檔案要放在HOME目錄底下的.vim目錄,vim本身不會自動創這個目錄,因此我們自己創並且把東西放進: 
 $ mkdir -p ~/.vim
 $ mv doc ~/.vim && mv plugin ~/.vim
如此一來就大功告成! 安裝完後,如果要開起tag list功能,只要在vim中輸入command: 
:TlistToggle
就會出現啦!再輸入同樣的一次就會關閉
如果覺得每次都要輸入麻煩,可以自己做shortcut,另外也有一些客製化選項供我們使用,可以參考Taglist Manual
編輯~/.vimrc,加入以下幾行: 
""" taglist plugin                                                                                                                                                              
nnoremap <silent> <F2> :TlistToggle<CR>                                                                                                                                         
let Tlist_WinWidth = 30                 " the taglist width                                                                                                                     
let Tlist_WinHeight = 100               " the taglist height                                                                                                                    
let Tlist_Enable_Fold_Column = 1        " dispaly the fold column                                                                                                               
let Tlist_Display_Prototype = 1         " show the prototype                                                                                                                    
let Tlist_Auto_HighLight_Tag = 1        " automatically highlight the current tag in the taglist                                                                                
let Tlist_Exit_OnlyWindow = 1           " close vim if the taglist the only window                                                                                              
let Tlist_File_Fold_Auto_Close = 1      " close tag folds for inactive buffers


---
http://cscope.sourceforge.net/cscope_maps.vim
去http://cscope.sourceforge.net/cscope_maps.vim,把cscope_maps.vim抓下來放到/etc/vim/下, 再去修改/etc/vim/vimrc, 多加一行 source /etc/vim/cscope_maps.vim。例 :
# cd /usr/src/linux
# ctag -R *
# cscope -R
# vi init/main.c, 就可以使用ctags以及cscope的功能

進入vim畫面,輸入:cs show,就可以看到你剛產生的cscope已經跟你的檔案連結。
c: Find functions calling this function (找出使用這個函式的函式)
d: Find functions called by this function (找出這個函式所使用到的函式)
e: Find this egrep pattern
f: Find this file
g: Find this definition (找出定義處, 同ctags的ctrl+])
i: Find files #including this file (列出include此檔案的檔案)
s: Find this C symbol (Symbol, 以此字串當作識別子, 可以搜尋到定義以及引用處 )
t: Find assignments to (找出有包含這個字串的地方)

2015年9月16日 星期三

[Lunux]Update new python through make/make install

自行把build server python版本已經從2.7.3升級到2.7.6(要build新平台的關係)

需要修好build出來的python libreadline沒有importissue以及 build image會沒有bz2 module,趁這個機會分享一下。
前提:
如果你python並不是使用apt-get install去升級的,而是使用
./configure
sudo make
sudo make install
去安裝的人
首先,先把你之前build好的python make clean
        sudo make clean
第二,安裝libreadline, bz2
        sudo apt-get install libreadline-dev
        sudo apt-get install libbz2-dev
第三,去2.7.6make folder下修改Modules/Setup裡面的一行
        #readline readline.c -lreadline –ltermcap
        把這一行unmark
第四,重新configure編譯與安裝
./configure
sudo make
sudo make install



這樣應該就可以了。

2013年11月25日 星期一

如何清除COM PORT記錄

開啟命令提示視窗
執行指令:set devmgr_show_nonpresent_devices=1
同視窗繼續執行指令:devmgmt.msc
選擇 "檢視"->"顯示隱藏裝置"
可以看到平時看不見的設備
呈現淡灰色的就是離線設備,原則上可以刪掉

Vim的自動完成功能

Source: https://www.simplified.guide/vim/enable-auto-complete 在未完成的文字上 1. 在Vim Insert mode 2. Ctrl + n 就會自動出現候選的字串讓人選擇。