Posts Tagged Ubuntu

ubuntu引导失败

  昨天面试前想进ubuntu复习一下自己写的shell脚本,却发现引导ubuntu失败了。ubuntu的图标出现后就黑屏,按任意键,屏幕上就出现提示:

  1. Gave up waiting for root device.
  2. .
  3. .
  4. .
  5. Alert /dev/disk/by-uuid/... doesn't exist ...
  6.  
  7. BusyBox ....
  8. .
  9. (initramfs)_

  这个问题上学期曾经碰到过的,当时在网上搜索无果,于是重装了系统。但问题是现在我的ubuntu下已经存了很多代码,就算无法修复,我至少也得把代码给备份回来。

  于是就开始在网上瞎逛,关于这个问题众说纷纭,有说内核损坏的,有说系统来不及加载驱动程序的,但是感觉都不靠谱。我用实验室电脑上的ubuntu9.10制作了个启动盘,用Palimpsest磁盘实用工具查看硬盘,发现安装ubuntu那一块分区被标注为“未知、无法辨识”了。这种问题我从没碰到过,上网找了个磁盘修复的命令fsck,检查了一遍这个分区 “/dev/sda6″,接着mount到/foo,发现访问没问题,于是赶紧先备份了代码。

  重新启动以后,ubuntu仍然启动失败,郁闷的是”/dev/sda6″明明可以访问啊……我重新用启动盘挂载了该分区,查看/boot/grub/menu.lst文件,发现有件奇怪的事情,menu.lst中的example的kernel,有一句关于root的信息 “root=/dev/hda2″。而实际启动时,kernel项则把一个很奇怪的叫uuid的字符串给了root。

  我觉得直接用分区路径来启动是肯定可行的,于是把原来的kernel行注释,加了一行

  1. kernel /boot/vmlinuz-2.6.31-14-generic root=/dev/sda6 ro locale=zh_CN quiet single

  重启后,终于进入了9.10的登录界面!
  重新用磁盘实用工具检查,ubuntu所在分区还是未知,用命令

  1. ls -al /dev/disk/by-uuid

查看所有分区的uuid,却发现没有”/dev/sda6″。使用失效的uuid,这就是引导失败的原因所在啊。稍微google了下,据介绍uuid可以不受硬盘中其他分区的变化影响,因此比直接用分区路径安全,但前提是分区大小不能改变。至于怎么把ubuntu所在分区恢复为出问题以前的状态我也不是很清楚,希望能在论坛中尽快找到答案吧。

Update: 在Ubuntu中文社区上找到了答案,用fsck命令扫描并修复文件系统后,ubuntu所在分区就恢复正常了。

, , , ,

No Comments

Ubuntu配置记录-编程环境配置

GVIM在今天早上算是做好了最基本的配置,可以拿来写代码做算法题了。上次说到不知道配色文件在哪里配置=,=, 其实这是个小白问题,就在 /usr/share/vim/vim71/colors下面(vim71需要对你安装的gvim版本)。
Netbeans的中文显示问题,也算解决了,具体见下帖 : 安装日文支持以后NetBeans界面的字符乱码。当然,实际上跟日文支持是没有关系的。Netbeans的中文显示问题有很多解决方案,而且并非全部都很有效,所以碰到的话,还是需要都尝试一下。
尽管搞定了中文显示问题,但是netbeans下面的字体显示仍然非常难看,google了下ubuntu中文社区,据说可以通过修改配置文件完成。目前对linux的文件配置机制还不是很熟悉,而且主要还是用gvim来编码,因此把这个问题先暂且搁下。留下一个链接,方便以后解决:[问题][Netbeans] JRE[英文]字体配置问题
继续转强帖:
makefile编写
两篇很牛的vim使用技巧(1)
两篇很牛的vim使用技巧(2)

最后分享一下我的gvim配置文件和配色文件代码。
Update at 2010.Apr.13: 这两个文件因为会经常修改,我自己使用的最新版本将会放在DropBox上,随时供需要的人下载。也请路过的大牛多多指教。Download via .vimrc ctw.vim

ps. 如果下载后的配置文件中有^M字符,可以在gvim的命令模式下用下面这个命令来清除

  1. :%s/[Ctrl-v][Enter]//g
下载: .vimrc
  1. " $HOME/.vimrc
  2. " Collected and modified by CTW
  3.  
  4. " Basics {
  5.     " 关闭兼容模式
  6.     set nocompatible
  7.    
  8.     " 设定文件浏览器目录为当前目录
  9.     set bsdir=buffer
  10.     set autochdir
  11.    
  12.     " 设置编码
  13.     set enc=utf-8
  14.    
  15.     " 设置文件编码检测类型及支持格式
  16.     set fencs=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
  17.    
  18.     " 指定菜单语言
  19.     set langmenu=zh_CN.UTF-8
  20.     source $VIMRUNTIME/delmenu.vim
  21.     source $VIMRUNTIME/menu.vim
  22.    
  23.     " 与windows共享剪切板
  24.     set clipboard+=unnamed
  25.    
  26.     " 键盘操作
  27.     map <up> gk
  28.     map <down> gj
  29.  
  30.     " 开放光标移动
  31.     set whichwrap=b,s,< ,>,[,]
  32.  
  33.     " 命令行高度
  34.     set cmdheight=1
  35.    
  36.     " 中文帮助
  37.     if version > 603
  38.     set helplang=cn
  39.     endif
  40.  
  41.     " 增强检索功能
  42.     set tags=./tags,./../tags,./**/tags
  43.    
  44.     " 保存文件格式
  45.     set fileformats=unix
  46. " }
  47.  
  48.  
  49. " Visual {
  50.     " 设置配色文件
  51.     colo ctw
  52.  
  53.     " 设置开启语法高亮
  54.     syntax on
  55.  
  56.     " 设置初始窗体行数列数
  57.     set lines=36
  58.     set columns=124
  59.  
  60.     " font
  61.     set guifont=Monaco
  62.  
  63.     " 查找结果高亮度显示
  64.     set hlsearch
  65.    
  66.     " tab宽度
  67.     set tabstop=4
  68.     set cindent shiftwidth=4
  69.     set autoindent shiftwidth=4
  70.     " }
  71.  
  72.     " Autocommands {
  73.     " Enable load plugin files
  74.     filetype plugin on
  75.  
  76.     " 自动补全
  77.     filetype plugin indent on
  78.  
  79.     " 只在下列文件类型被侦测到的时候显示行号,普通文本文件不显示
  80.     if has("autocmd")
  81.        autocmd FileType xml,html,c,cs,java,perl,shell,sh,bash,cpp,python,vim,php,ruby set number
  82.        autocmd FileType xml,html vmap <c -o> <esc>'<i <!--<ESC>o<esc>'>o-->
  83.        autocmd FileType java,c,cpp,cs vmap <c -o> <esc>'<o /*<ESC>'>o*/
  84.        autocmd FileType html,text,php,vim,c,java,xml,bash,shell,perl,python setlocal textwidth=100
  85.        autocmd Filetype html,xml,xsl source $VIMRUNTIME/plugin/closetag.vim
  86.      " Error happend, repair needed
  87.      " autocmd BufReadPost *
  88.      "    \ if line("'\"") > 0 && line("'\"") < = line("$") |
  89.      "    \   exe "normal g`\"" |
  90.      "    \ endif
  91.     endif " has("autocmd")
  92.    
  93.     " 自动完成
  94.     autocmd FileType python set omnifunc=pythoncomplete#Complete
  95.     autocmd FileType javascrīpt set omnifunc=javascrīptcomplete#CompleteJS
  96.     autocmd FileType html set omnifunc=htmlcomplete#CompleteTags
  97.     autocmd FileType css set omnifunc=csscomplete#CompleteCSS
  98.     autocmd FileType xml set omnifunc=xmlcomplete#CompleteTags
  99.     autocmd FileType php set omnifunc=phpcomplete#CompletePHP
  100.     autocmd FileType c set omnifunc=ccomplete#Complete
  101.      autocmd FileType java set omnifunc=javacomplete#Complete
  102.     " auto complete
  103.     " inoremap } }<esc>: <cr>O
  104. " }
  105.  
  106. " C/C++ Programming {
  107.     " C/C++注释
  108.     set comments=://
  109.    
  110.     " Enable OmniCppComplete
  111.     set nocp
  112.     set completeopt=menu
  113.  
  114.     " Config OmniCppComplete
  115.     " autocomplete with .
  116.     let OmniCpp_MayCompleteDot = 1 
  117.     " autocomplete with ->
  118.     let OmniCpp_MayCompleteArrow = 1
  119.     " autocomplete with ::
  120.     let OmniCpp_MayCompleteScope = 1 
  121.     " select first item (but don't insert)
  122.     let OmniCpp_SelectFirstItem = 2
  123.     " search namespaces in this and included files
  124.     let OmniCpp_NamespaceSearch = 2 
  125.     " show function prototype (i.e. parameters) in popup window
  126.     let OmniCpp_ShowPrototypeInAbbr = 1
  127.  
  128.     " Add STL tags
  129.     set tags+=~/.myTags/stl.tags
  130.  
  131.     " 修正自动C式样注释功能 &lt;2005/07/16>
  132.     set comments=s1:/*,mb:*,ex0:/
  133.  
  134.     " 临时:使用pthreadC源代码的编译
  135.     map <f4> :call PTHCompileRunGPP()<cr>
  136.     func! PTHCompileRunGPP()
  137.     exec "w"
  138.     exec "!gcc -D_REENTRANT % -o %< -g -lpthread"
  139.     endfunc
  140.  
  141.     " C的编译和运行
  142.     map <f5> :call CCompileRunGpp()</cr><cr>
  143.     func! CCompileRunGpp()
  144.     exec "w"
  145.     exec "!gcc % -o %< -ansi -g -Wall "
  146.     endfunc
  147.    
  148.     " C++的编译和运行
  149.     map <f6> :call CPPCompileRunGpp()</cr><cr>
  150.     func! CPPCompileRunGpp()
  151.     exec "w"
  152.     exec "!g++ % -o %< -ansi -g -Wall "
  153.     endfunc
  154.  
  155.     " CTags
  156.     set completeopt=longest,menu
  157.  
  158.     " TagList
  159.     " 按照名称排序
  160.     let Tlist_Sort_type = "name"
  161.    
  162.     " 如果只有一个Bufferkill窗口时也killbuffer
  163.     let Tlist_Exit_OnlyWindow = 1
  164.  
  165.     " 只显示一个文件的Tag
  166.     let Tlist_Show_One_File=1
  167.    
  168.     " Tlist Auto Open
  169.     let Tlist_Auto_Open=1
  170.  
  171. " }

Read the rest of this entry »

, , , ,

1 Comment

Ubuntu 8.10 配置记录

前段时间装了Ubuntu玩玩,用wubi装的,只分配了6G的空间,导致最后空间不足,不能更新,FF也出问题,只好重装。每次装Ubuntu都会忘掉怎么配置,然后上Ubuntu中文社区找东西找来找去,想想干脆自己写个具体的记录,免得下次还这么麻烦。
Ubuntu 8.10的镜像我一直存在移动硬盘上,安装用的wubi(大牛BS我吧,只因为这个比较节省时间=,=)。
安装好后第一件要做的事情就是选择软件源。这次我没有去用第三方源,而是在 软件源 里面使用choose best server 选择了一个最快的官方源 : http://mirror.rootguide.org/ubuntu . 这个源我在教学区基本上都能保持200KB/S以上的下载速度,快的时候有2000+KB/S.
接下来就是安装语言支持和更新, 中间为了能使用闪讯安装了build-essential, cvs.
然后是安装显卡驱动,我的本本用的是 NVIDIA G8400S 显卡, 去官网上下载了驱动后, 按照下面这个帖子进行安装:
Nvidia官方最新180.22显卡驱动安装详解 .
有个需要注意的地方是我用

  1. sudo /etc/init.d/gdm stop

以后, x-window虽然关闭,但ubuntu并不会自动进入命令行的终端. 而是需要按 ctrl + alt + f1 组合建, 启动终端. Read the rest of this entry »

No Comments