熟练 vim 操作是在 Linux 下生存的先决条件!
1. 切换 root 身份
$ sudo passwd root # 修改 root 密码
$ su # 切换到 root 身份
# exit # 回到用户身份
2. 挂载分区
Linux 将硬盘各分区看作 /dev 下的设备文件,形如 sda1, sda7, sdb1 等。
$ sudo mount /dev/sda1 /mnt # 将硬盘第一个分区挂载到 /mnt 目录下
$ sudo mount -t smbfs -o user=edelweiss //x.x.x.x/backup /mnt # 将另一台ip为 x.x.x.x 的电脑中的共享文件夹 backup 挂载到 /mnt 目录下
3. 命令行配置网络
$ sudo vi /etc/network/interfaces # 编辑网络接口配置文件
添加如下内容:
auto eth0
iface eth0 inet static
address x.x.x.x # ip地址
netmask x.x.x.x # 子网掩码
gateway x.x.x.x # 网关
$ sudo vi /etc/resolv.conf # 如果该文件不存在就创建一个
添加如下内容:
nameserver x.x.x.x # DNS
$ sudo /etc/init.d/networking restart # 重启网络
这样做的好处是摆脱了 NetworkManager 的控制,登录后系统自动连网。
4. apt 包管理器
$ sudo vi /etc/apt/sources.list # 编辑源
$ sudo apt-get update # 更新包信息
$ sudo apt-get upgrade # 升级包
$ sudo apt-get install PACKAGE # 安装PACKAGE包
$ sudo apt-get remove PACKAGE # 卸载PACKAGE包
常用的包有:build-essential, stardict, kchmviewer, vim, vim-gnome & vim-gtk (gvim), pidgin, ...
5. 磁盘备份
$ dd if=/dev/sdb of=backup_usb # 将整个U盘备份成backup_usb文件
6. 查看磁盘空间
$ df -ah
7. 设置输入法
$ im-switch -s ibus # 将ibus设置为默认输入法
8. 在U盘中安装Ubuntu(以8.10为例)
首先从 Ubuntu 官网下载镜像文件 ubuntu-8.10-desktop-i386.iso,刻录到光盘上并用它将 Ubuntu 装到U盘中(可用 Windows 下的 Nero 或者 Ubuntu 下自带的刻录工具)。接下来就要解决面临的两个问题:
(1) 拔下U盘后本地系统无法启动
插上U盘启动本地系统,下载“一键GHOST v2010.01.02”,安装后重启进入GHOST的DOS命令行界面,输入“fdisk /mbr”,本地 Windows 即可正常启动。
(2) 本地 Ubuntu 无法启动
重装GRUB:进入 Windows,下载“grub4dos
0.4.4”,解压后将这三个文件“grldr、grub.exe、menu.lst”拷贝到 C
盘根目录下。右键单击“我的电脑”,选择“属性”->“高级”->“设置(启动和故障恢复)”->“编辑”,在最后添加
“C:\GRLDR=grub4dos”,保存后重启电脑,进入grub4dos,输入“find
/boot/grub/stage1”,记住返回的结果(形如(hdx,y)),这时会出现死机,重启再进入grub4dos,输入“root
(hdx,y)”,x、y为刚才记住的结果,最后“setup (hd0)”,重启后GRUB恢复正常。
至于 wubi 方式的安装,它只是把整个 Ubuntu 当成一个 root.disk 文件,是 Windows 的一个附属品,仍然不算彻底摆脱 Windows,只推荐新手试用 Ubuntu 时使用。
9. 安装 Adobe Reader 8.1.7
从adobe官网上下载AdobeReader_enu-8.1.7-1.i386.deb
$ sudo dpkg -i AdobeReader_enu-8.1.7-1.i386.deb # 安装 Adobe Reader 8,默认装到 /opt 目录下
下载中文语言包支持:
得到FontPack81_chs_i486-linux.tar.gz
$ tar xzf FontPack81_chs_i486-linux.tar.gz # 解压
$ cd CHSKIT # 进入解压后的目录
# ./INSTALL # 开始安装,默认装到 /opt 目录下
10. 安装星际译王词典
$ sudo apt-get install stardict # 安装 stardict 包
从 下载所需词典文件(.deb),我常用的三个词典是:
1. 朗道英汉字典 (stardict-langdao-ec-gb_2.4.2-2_all.deb)
2. 朗道汉英字典 (stardict-langdao-ce-gb_2.4.2-2_all.deb)
3. 牛津现代英汉双解词典 (stardict-oxford-gb_2.4.2-2_all.deb)
$ sudo dpkg -i stardict-langdao-ec-gb_2.4.2-2_all.deb # 安装朗道英汉字典
$ sudo dpkg -i stardict-langdao-ce-gb_2.4.2-2_all.deb # 安装朗道汉英字典
$ sudo dpkg -i stardict-oxford-gb_2.4.2-2_all.deb # 安装牛津现代英汉双解词典
11. 格式化成 ntfs 格式
$ sudo apt-get install ntfsprogs # 安装ntfs程序包
# mkfs.ntfs DEVICE # 格式化DEVICE设备,要快速格式化就加 -f
12. 修改 initrd 文件
$ mv initrd.img initrd.img.gz # 将 initrd.img 更名为 initrd.img.gz
$ gunzip initrd.img.gz # 将其解压为 cpio 文档
$ cpio -i < initrd.img # 解包,将产生许多文件,可根据需要进行修改
$ rm initrd.img # 删掉旧的 initrd.img 文件
$ find . | cpio -o -H newc | gzip -9 > /boot/initrd.img # 重新打包
13. 用 wubi 安装的系统更新后没有原来的GRUB启动栏了,出现的是:
GNU GRUB version 1.97~beta4
[ Minimal Bash-like line editing is
suppored. For the first word, TAB lists possible command completions.
Anywhere else TAB lists the possible completions of a device/filename. ]
sh:grub>_
依次输入下列命令:
> ls # 列出若干形如 (hd0,x) 的信息
> ls (hd0,x) # 依次尝试每个列出的 x 值,找到自己 ubuntu 的所在分区,假设为 (hd0,7)
> insmod ntfs # 加载 ntfs 模块,因为 wubi 将 ubuntu 装到了 ntfs 盘上
> set root=(hd0,7) # 这里 (hd0,7) 就是刚才找到的 ubuntu 所在的分区
> ls $Boot # 找到 boot 分区的 uuid,下一步要用到
> search --no-floppy --fs-uuid --set UUID # 这里 UUID 就是上一步找到的值
> loopback loop0 /ubuntu/disks/root.disk # 设 loop0,wubi 将 ubuntu 安装成一个 root.disk 文件
> set root=(loop0) # 重设 root
> linux /boot/vmlinuz-2.6.xxxxxx (tab补全) root=/dev/sda7 loop=/ubuntu/disks/root.disk ro quiet splash # 加载内核
> initrd /boot/initrd.img-2.6.xxxxxx (tab补全)
> boot
这样就可以成功进入系统了,打开终端输入:
$ sudo update-grub2
这样下次启动就恢复正常的GRUB启动栏了
14. 开启SSH服务并远程登录或拷贝文件
服务器端:
$ sudo apt-get install ssh # 安装ssh及openssh-server
$ sudo /etc/init.d/ssh restart # 启动SSH服务
客户端:
$ ssh edelweiss@x.x.x.x # 远程登录到 ip 为x.x.x.x的edelweiss用户
$ exit # 退出登录
$ scp /home/edelweiss/a.cpp edelweiss@x.x.x.x:/home/edelweiss # 将本地的a.cpp拷贝到远端服务器
$ scp edelweiss@x.x.x.x:/etc/ssh/sshd_config /home/edelweiss/tmp # 将远端服务器中的sshd_config文件拷贝到本地
# 有时会出现登不进去的情况,只需删掉下面这个文件就可以了:
$ rm ~/.ssh/known_hosts
15. NBD(Network Block Device) 使用方法
服务器端:
$ sudo apt-get install nbd-server # 安装nbd服务器端
$ nbd-server 2000 /home/edelweiss/img.dom
客户端:
$ sudo apt-get install nbd-client # 安装nbd客户端
# modprobe nbd # 加载nbd模块
# nbd-client x.x.x.x 2000 /dev/nbd0 # x.x.x.x 为服务器端ip,2000为相应的端口,挂载到 /dev/nbd0 设备上
# mkfs.ext3 /dev/nbd0 # 用之前要先格式化
# mkdir /mnt/nbd0 # 创建一个用于挂载nbd设备的目录
# mount /dev/nbd0 /mnt/nbd0 # 挂载这个设备
# 现在就可以对这个设备进行操作了
# umount /mnt/nbd0 # 卸载这个设备
# nbd-client -d /dev/nbd0 # 断开连接
16. 修改主机名
$ hostname # 显示当前主机名
$ sudo hostname HOSTNAME # 临时修改主机名为 HOSTNAME 而不写入配置文件,下次启动仍然是修改前的主机名
$ sudo vi /etc/hostname # 永久修改主机名,将文件中原来的主机名更改为自己想要的,保存退出
$ sudo vi /etc/hosts # 还要将这个文件中 127.0.1.1 后的名字也改为自己想要的主机名,否则 sudo 操作会一直提示:unable to resolve host xxx
17. 在终端中听音乐
$ sudo apt-get install moc # 安装 MOC 播放器,默认只能播放 mp3 格式
$ sudo apt-get install moc-ffmpeg-plugin # 添加 wma 格式支持
$ mocp # 打开播放器
解决中文歌名乱码:
$ vi ~/.moc/config
添加:
ReadTags=no
保存退出
18. 安装 NVIDIA 显卡驱动后开关机花屏且分辨率过低
$ sudo apt-get install v86d hwinfo # 安装所需包
$ sudo hwinfo --framebuffer # 查看 framebuffer
$ sudo vi /etc/default/grub # 修改 grub 文件中的如下两行:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset video=uvesafb:mode_option=1280x800-24,mtrr=3,scroll=ywrap"
GRUB_GFXMODE=1280x800
$ sudo vi /etc/initramfs-tools/modules # 修改 initramfs,在最后添加如下内容:
uvesafb mode_option=1280x800-24 mtrr=3 scroll=ywrap
$ echo FRAMBUFFER=y | sudo tee /etc/initramfs-tools/conf.d/splash # 强制使用 framebuffer
$ sudo update-grub2 # 更新 grub
$ sudo update-initramfs -u # 更新 initramfs
$ sudo reboot # 重启后生效
19. 解压缩文件
$ tar zxf xxx.tar.gz # 解压缩 gzip 文件
$ tar jxf xxx.tar.bz2 # 解压缩 bzip2 文件
20. 下载 glib 库
ftp://ftp.gtk.org/pub/glib/
源码编译安装 nbd-2.9.15 时需要 glib 库
glib-2.24.1 版本是目前最佳选择,但安装它还需要装 zlib 库:
$ sudo apt-get install zlib1g-dev
21. 修改 ext2/ext3/ext4/FAT32/NTFS 磁盘分区卷标
1. FAT32
$ sudo apt-get install mtools # 安装 mtools 软件包
$ cp /etc/mtools.conf ~/.mtoolsrc
$ vi ~/.mtoolsrc
添加如下一行:
drive i: file="/dev/sdb1" # sdb1 可以是任何想要修改的分区对应的设备名
$ mcd i: # 更改命令提示符路径到 i: 盘
$ sudo mlabel -s i: # 查看 i: 当前的卷标
$ sudo mlabel i:NEW_LABEL # NEW_LABEL 即为新的卷标名
$ sudo mlabel -s i: # 检查是否修改成功
2. NTFS
$ sudo apt-get install ntfsprogs # 安装 ntfsprogs 软件包
$ sudo ntfslabel /dev/sda1 NEW_LABEL # NEW_LABEL 即为新的卷标名
重新挂载这个分区或设备以检查是否修改成功
3. ext2/ext3/ext4
$ sudo e2label /dev/sda7 NEW_LABEL # NEW_LABEL 即为新的卷标名
重新挂载这个分区或设备以检查是否修改成功
22. 系统完整备份与恢复
将 / 目录下除 /proc、/mnt、/media 和 /tmp 以外的其他内容备份到 Data 盘中,命名为 linux.tgz:
# tar --exclude /proc --exclude /mnt --exclude /media --exclude /tmp -zcvpf /media/Data/linux.tgz /
用 linux.tgz 备份文件恢复系统,将它拷贝到 / 目录下,并在 / 目录下执行:
# tar -zxvf linux.tgz
# mkdir proc
# mkdir mnt
# mkdir media
# mkdir tmp
23. 源码安装/卸载软件
如果安装包中有 configure 文件,则进入到安装目录,然后输入:
# ./configure # 检查安装环境,生成 Makefile
# make # 编译
# make install # 安装
# make uninstall # 卸载
如果安装包中有 INSTALL 文件,则进入到安装目录,然后输入:
# ./INSTALL # 安装
进入软件安装的总目录下含有 UNINSTALL 文件的目录,然后输入:
# ./UNINSTALL # 卸载
24. 编译内核模块之 Makefile 简单写法
obj-m := nbd.o
KERNELBUILD := /lib/modules/`uname -r`/build
default:
make -C $(KERNELBUILD) M=$(shell pwd) modules
clean:
rm -rf *.o *.ko *.mod.c .*.cmd .tmp_versions
(注意 Makefile 里面要求的 tab)
25. 磁盘分区
cfdisk 是个不错的磁盘分区工具,用法很简单,只需要输入:
$ cfdisk /dev/sdb
就可以给 sdb 这个设备进行分区了
确定要保存就输入大写的W将当前分区表写入到硬盘
26. 关闭蜂鸣器
$ sudo rmmod pcspkr # 立即生效,但重启后恢复蜂鸣器
$ sudo echo "blacklist pcspkr" >> /etc/modprobe.d/blacklist # 资料上说该方法永久有效,但尚未成功
27. root 权限下 tab 补全不好用
总觉得在 root 权限下,tab 补全不如普通帐户的好用,比如输入下列这个命令时:
# apt-get install xxx
输入“apt-g“后,按 tab 可以补全“apt-get“;但之后输入”i“,按 tab 无法补全“install“,而普通帐户下就可以。
在网上搜到解决方案,通过对比 /root/.bashrc 和 /home/edelweiss/.bashrc 这两个文件,发现以下几行二者是不同的:
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
. /etc/bash_completion
fi
在 /root/.bashrc 文件中,后三行被注释掉了,难怪 tab 补全会出问题…… -_-#