存档

2013年8月 的存档

Linuxer 的 Mac 叛逃之路

2013年8月24日 12 条评论

本周入手了一台 Macbook air,正式开始了从 Liunx 到 Mac 的叛逃之路.

概况

我始终相信 *unix 是世界上最好的操作系统, 由于 OSX ∈ *nix, 所以 Mac OS 也是 世界上最好的操作系统之一.

由于之前是一个 linuxer, 且我对游戏没有偏好, 所以用 Mac 之后感觉没有太大的变化, 反而它华丽而不失稳定的 UI, 多达 12 小时的续航, 各种对得起业界良心的硬件设计, 无一不深深的震撼着我.

需要克服的困难

除了 Mac OS 不支持 KVM 之外,我暂时想不到有什么困难需要我去克服的,难道是没有 gnome3 (LOL)。

由于不支持 KVM,意味着我以后得去服务器上去开发调试 KVM 相关的东西了。而对于我, 一个 emacser,变化只不过是从 X 环境下的 emacs 换到 terminal 下的 emacs, 某些冲突的快捷键需要重新定义而已。

Mac 的优点

下面是我用了几天之后感受到:

  • 硬件设计无懈可击,这个不需要解释,业界公认
  • 华丽的操作系统,还记得前几年各大 linux 论坛争相模仿 mac 主题的盛事吗, 还记得 ubuntu 的全局菜单吗,还记得 gnome3 画虎不成反类犬 吗?
  • 系统出奇的稳定,从买来到现在我从来没有关过一次机,没有感觉到到卡顿, 虽然 我的 air 开机只要 10S 不到,但是我就是没有关过机。
  • 超常的续航,12小时!不是盖的。(air)
  • 小巧轻便,随时打开随时工作,这篇 blog 的部分内容就是堵车的时候在同事的车里 完成的(air)。
  • 软件的兼容性。这点对中国用户来说可能很重要,我随手到 App Store 上扫了一眼, 什么迅雷,搜狗输入法,Microsoft office,有道词典,QQ,酷狗音乐,PPVT,PPS, 太多说不过来。
  • 与 大部分 GNU 系统完全兼容,这点对我来说太重要了,感觉除了 linux kernel,几乎 所有 Linux 下能跑的软件跑得很欢。甚至有“丧心病狂”的项目想把 linux 发行版除了 内核之外的所有东西移植到 OSX 中,比如 Gentoo Prefix 这货。这货据说可以在 Windows 下也跑得很欢。//其实我从前是一个 gentooer

常用软件

开发类

  • bash 这个太有用了,系统自带
  • xcode 开发基础包,linuxer 必装
  • emacs 没有你我怎么办
  • pip 很奇怪 Mac 居然默认没有安装这个包
  • homebrew 包管理器 // 下面的工具都是通过 homebrew 安装
  • wget/axel 下载工具
  • automake, libtool 软件编译工具
  • proxychains-ng 翻墙工具

其他

  • Safari 自带的浏览器,通过一些伪装,播放视频的时候能达到最好的效果和性能,以后介绍
  • google-chrome 不解释 //发现解决了翻墙问题后,我都不怎么用 google-chrome 了
  • dropbox 跨平台的 “网盘”
  • 搜狗拼音 输入法,不解释
  • 有道词典 其实用的不多,自带的已经很强大了
  • QQ 和非 geek 交流用
  • iTunes 音乐相关,还没有玩转
  • App Store Mac 自带的软件包管理器,由于上面的软件都是经过审查的,所以质量很高

包管理器

相比于 Windows 上软件管理的混乱,这是所有 *nix 的亮点之一, Mac 上也有同样的机制。 我考察了以下的包管理器,对比了一些各自的优缺点:

  • App Store 这个是 mac 官方自带的,血统最纯的,严格来讲和我相说的包管理器没有 太大关系,只是列出来做个参考
  • Fink 据说是基于 Debian 的 packaging tools 开发的,安装的软件都是预编译好的。 里面的软件都太旧。
  • Macports BSD 的 port 的变种,所有东西源码编译,而且这货完全不考虑系统已有的库, 什么依赖都自己重新来编译一遍,大哥,咱是 Air, 硬盘小啊.
  • Gentoo prefix 基于 gentoo,特点就是恨不得把 gentoo 给移植到 osx 上,和上面的 一路货色,据说连 gcc 都要重编。
  • Homwbrew 新秀级选手,一出现就抢占了无数 macports 的地盘,纯 ruby 打造,纯 git 管理,小巧灵活,能用系统的库尽量用系统的,不求最大,但求最好。

经过一番比较,我做了一个艰难的决定,暂时使用 homebrew,根据这两天的使用来看,完全 满足我的需求。

未来如果在 mac 上要经常编译东西的话,我可能会基于 homebrew 重写一个管理器,把 gentoo portage 好的东西整合近来,因为以前用惯了 gentoo,UES 标记这些东西是在是太好用了。

Emacs 配置

默认情况下 Mac 的按键对 Emacs 有一点不友好,主要在于多了一个奇葩的 ‘command’ 键,在终端模式下 ‘alt’ 键被映射到 ‘option’ 键上。

分别解决如下:

alt 的问题

在 Bash 的偏好设置 -> 设置 -> 键盘 -> 使用 option 键作为 meta 键(勾选)

command 键的问题

把以下 lisp code 加入 emacs 的配置文件中,把 command 作为 alt 键。

(when (eq system-type 'darwin) ;; mac specific settings
  (setq mac-option-modifier 'alt)
  (setq mac-command-modifier 'meta)
  (global-set-key [kp-delete] 'delete-char) ;; sets fn-delete to be right-delete
  )

常用快捷键/多点触摸操作

这几天我最常用到的快捷键/多点触摸操作:

键盘快捷键

全局

  • command + tab: 切换程序,类似于 gnome 的 ctrl + tab
  • command + `: 在同一个程序的多个窗口间切换,比如开了多个终端窗口
  • command + m: 最小化窗口
  • command + w: 关闭窗口/标签
  • command + q: 退出程序
  • command + +/-: 放大/缩小 图片/文字
  • command + t: 新建标签
  • command + r: 刷新
  • ctrl + space: 在 Finder 中搜索,太好用了, 类似于命令行的 locate,但不是一个级别的
  • ctrl + F3: 平铺一个程序的多个窗口,类似于 按下 gnome3 的 win 键
  • ctrl + 左/右键: 切换一般程序和全屏程序,类似 android 的多窗口切换
  • ctrl + 上/下键: 四指上推: 平铺桌面中的程序,或者按 F3
  • command + spice: 输入法切换
  • command + ctrl + f: 全屏
  • emacs keyshort: 另外 emacs 的很多快捷键都可以在任何程序下使用,比如在浏览 器里可以 ctrl + a/e

Safari 或者 bash 等

  • fn + 上/下键: up/down
  • fn + 左右键: home/end

多点触摸

全局

  • 四指分开: 显示桌面
  • 四指上推: 平铺桌面中的程序,或者按 F3
  • 四指并拢: 打开 Launchpad,或者按 F4
  • 四指左右滑动: 切换一般程序和全屏程序,类似 android 的多窗口切换
  • 三指拖动: 拖动窗口
  • 两个指头同时轻点: 触发右键
  • 三个指头同时轻点: 选中文字并唤醒词典,太好用了,结合这个加上 startdict

的词典使我弃用有道词典

  • 双指拖移: 上下翻滚
  • 三指拖动文字: 选中文字
  • 从右方边缘向左轻扫: 查看通知中心

Safari 或者其他浏览器中

  • 双指左/右划: 前进/后退
  • 双指张开/闭合: 放大/缩小网页
  • 双指双击: 智能缩放
  • 双指开合: 查过所有标签页,并双指左右拖动来切换

Tips

解决看视频发热过大的问题

我的 air 在播放在线视频时非常发热量非常大, 原因是 Mac 对 flash 的支持不是 很好(好像 windows, linux 系统也一样), 目前有三种办法可以解决这个问题.

三种方法本质都是一样, 都是利用 html5 来播放, 从而避免 flash 的调用, 实践中我 一直使用第三种方法.

使用支持 html5 的视频网站

比如看优酷的时候, 可以使用以下网址: 猛击我, 这个方法的缺陷是并不是所 有的网站都能找到对应的 html5 的页面。

使用插件把转换当前格式

插件地址在: 猛击我, 我还没有试过,不过貌似比较靠谱。

伪装成 iPad 播放

我现在用的就是这种方式,我现在看的视频都是这种方式,经实践,在我的 air 上, 看视频的时候完全没有发烫的感觉,cpu 温度在 10% 左右。

以下是方法:

打开 Safari 偏好设置 -> 高级 -> 在菜单栏中显示“开发菜单”(勾选), 然后在 开发中选择用户代理 -> iPad.

苹果字符的输入

 这个纯属好玩,方法是:

option + shift + k

分类: Mac 标签:

QEMU CPU Hotplug

2013年8月22日 没有评论

// this post has not be done yet.

In the world of cloud compute, Scaling the compute resources without shutdown the compute instance is important. e.g. Add/Reduce cpu number, memory size, and so on.

In the version 1.5, QEMU has implemented the feature: CPU Hotplug, it allows virtual machine to add cpu core without shutdown.

Below is how to do it:

Before try this feature, please make sure your QEMU version >= 1.5.0, or this feature is not supported.

# ~/usr/bin/qemu-system-x86_64 --version
QEMU emulator version 1.6.50, Copyright (c) 2003-2008 Fabrice Bellard

Use QEMU command directly to enable this feature

# qemu-system-x86_64 -enable-kvm -m 512 -smp 1,maxcpus=4 ArchLinux.raw -serial \
   tcp::3333,nowait,server -qmp tcp::5555,nowait,server -nographic

the maxcpus means the maximum number of hotpluggable CPUs.

[root@myhost ~]# cat /proc/cpuinfo | grep processor
processor       : 0

After active the CPU we just add

# telnet localhost 5555
......
{ "execute": "qmp_capabilities" }  
{"return": {}}
{ "execute": "cpu-add", "arguments": { "id": 1 }}
{"return": {}}

[root@myhost ~]# cat /proc/cpuinfo | grep processor
processor       : 0
processor       : 1

Use libvirt to enable this feature

Make sure the version of libvirt >= 1.1.0, or else it wont work

[root@hdr245 ~]# libvirtd --version
libvirtd (libvirt) 1.1.1

分类: QEMU 标签:

LVM 杂记

2013年8月16日 没有评论

概念

  • PV(Physical Volume) 实际的物理卷轴, 在 LVM 的世界里, 一般是具体的硬盘或者某个硬盘分区
  • VG(Volume Group) 由多个 PV 共同组成一个 VG, 负责以 PE 作为单位来给 LV 分配磁盘资源
  • LV(Logical Volume) 最终用户看到, 能直接读写的设备, 类似于传统的硬盘分区, 只不过这个 LV 的大小可以根据使用自由的扩大和缩小
  • PE(Physical Extend) 是整个 LVM 最小的存储单位, 默认是 4M, 可以在创建 VG 的时候指定

使用流程

LVM 的使用流程很简单:

  • 首先是创建 PV, 根据前面所说的, 就是把硬盘或者硬盘分区编程 LVM 中的 PV
  • 然后是创建 VG, 在创建的时候先得至少指定一个 PV, 后续的可以通过 vgextend 添加
  • 然后再创建 LV, 创建完成后就可以像普通的硬盘分区一样的格式化, 挂载, 使用了

Use case

我有四个硬盘 /dev/vd{b,c,d,e}, 分别用他们作为 PV, 然后再其上创建 VG, 然后在创建 LV, 并使用之.

首先创建 PV:

root@kvm:~# pvcreate /dev/vd{b,c,d,e}
  Writing physical volume data to disk "/dev/vdb"
  Physical volume "/dev/vdb" successfully created
  Writing physical volume data to disk "/dev/vdc"
  Physical volume "/dev/vdc" successfully created
  ......

显示 PV

root@kvm:~# pvscan 
  PV /dev/vdb   VG lvmvg           lvm2 [20.00 GiB / 20.00 GiB free]
  PV /dev/vdc   VG lvmvg           lvm2 [20.00 GiB / 20.00 GiB free]
  PV /dev/vdd                       lvm2 [20.00 GiB]
  PV /dev/vde                       lvm2 [20.00 GiB]
  Total: 4 [79.99 GiB] / in use: 2 [39.99 GiB] / in no VG: 2 [40.00 GiB]

用 vdb 创建 VG(lvmvg)

root@kvm:~# vgcreate lvmvg /dev/vdb
  Volume group "lvmvg" successfully created

把 vdc 加入到 lvmvg

root@kvm:~# vgextend lvmvg /dev/vdc   
  Volume group "lvmvg" successfully extended

创建 LV(lvmlv)

root@kvm:~# vgdisplay | grep Free
  Free  PE / Size       10238 / 39.99 GiB //10238 个 PE, 每个 4M
root@kvm:~# lvcreate -l 2000 -n lvmlv lvmvg // 创建一个 8G(2000x4M) 的 LV
  Logical volume "lvmlv" created
root@kvm:~# lvs
  LV    VG    Attr     LSize Pool Origin Data%  Move Log Copy%  Convert
  lvmlv lvmvg -wi-a--- 7.81g

像普通磁盘分区一样使用这个 LV

root@kvm:~# lvdisplay  | grep Path
  LV Path                /dev/lvmvg/lvmlv
root@kvm:~# mkfs.ext4 /dev/lvmvg/lvmlv 
root@kvm:~# mkdir /mnt/lvm
root@kvm:~# mount /dev/lvmvg/lvmlv /mnt/
root@kvm:~# df -m | grep lvm
/dev/mapper/lvmvg-lvmlv      7747    18      7329   1% /mnt

给这个分区扩容

root@kvm:~# lvextend -l+1000 /dev/lvmvg/lvmlv   //增加 4G(1000 x4) 的容量
  Extending logical volume lvmlv to 11.72 GiB
  Logical volume lvmlv successfully resized
root@kvm:~# resize2fs /dev/lvmvg/lvmlv 
resize2fs 1.42.5 (29-Jul-2012)
Filesystem at /dev/lvmvg/lvmlv is mounted on /mnt; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/lvmvg/lvmlv is now 3072000 blocks long.
 
root@kvm:~# df -m | grep lvm
/dev/mapper/lvmvg-lvmlv     11685    20     11108   1% /mnt

分类: Storage 标签: