Linux 迁移

由于一些现代系统的变化,我一直不是很敢在这个 Win8 上加入 Linux,不过几经调查后发现似乎现在 Linux 对 UEFI 的支持已经不错了,于是昨天开始了第一轮的迁移。我还是选择 debian。

操作系统

我本来有一个 i386 的启动 U 盘,那是作为我的 rescue 盘,原先的 T60 出了问题就靠它启动系统,然后 chroot 到我的硬盘上做一些调整和修复。不知道为什么 T430s 不能 boot 这个 U 盘,而我现在双硬盘的配置使得试图使用光盘启动安装盘的想法不能实现(另外,我也没有 CD-R),于是问题绕了一圈,如何使用 U 盘启动安装盘。实际上 debian 这些年的发展还是很大的,早些看到了一个和 ubuntu wubi 类似的工具(允许在 Windows 分区里面创建一个磁盘文件,通过 loopback device 作为 Linux 的分区),现在的 debian 的 netinst ISO 里面的 setup 就是这个工具最新的版本。不过似乎这玩意还是不能写到新分区里面去,略感遗憾。

不过 debian 现在已经将自己的 netinst ISO 做成了双引导形式,既可以直接写到光盘上 boot 也可以写到 USB key 上。那么你其实只要一个 256Mb 的 U 盘就能安装 debian 了,注意选对 arch,看起来比较像的有 i386、IA64 和 amd64,我们一般的机器可以用 i386,但是现在都 64bit 了,所以我这次选了 amd64,IA64 是给 itanium 系列的芯片用的,似乎不是很常见。我们来打算用自己的 Linux 的 dd 写入 U 盘,但是写的时候发生了一些神奇的问题,比如 fdsik 说无法 seek,连分区表都列不出来(但是可以 mount…)换了 gpart 或者 cfdisk 也没啥用。后来跑到 Windows 里面总算将它分区删掉重新格式化了一次,这下 Linux 还是能 mount 而不能 dd。很悲催…

之后想到要不到 Windows 里面找个类似 dd 的工具来干活吧。这不有不少,试下来,还是这个命令行的好用。找到 cmd 并 run as administrator,之后用 dd 写入到 U 盘,如果写入时说有什么程序访问 U 盘而失败的话,可以尝试先 eject 然后插入再试(我第一次什么都没干硬说有程序访问,第二次似乎就没这个问题了)。比较有用的是先 dd –list 显示有多少分区和 device,之后记得命令加上 –size 和 –progress 的 options。

有了这个 U 盘,我们就可以安装 debian 了,这次我也大胆的尝试了直接用图形界面,以往我都是使用 text-mode,这次的感觉是界面是从 text-mode 照搬过去的,很多地方看起来就是文本截图… 这个方面别的发行版似乎做得好多了,不过能装上就是好的 installer。既然是 netinst,一般还是期望能连上网络的,当时懒得去找网线,结果无线网卡需要 firmware 我也没准备好,于是只好就装了个 minimum 系统,本以为会问我 grub 的事情,天晓得怎么回事 grub 最后就自动的安装了。不过看到一些提示,似乎安装比较成功,UEFI 也认出来了,于是寻思着兴许一些 ok 吧。重启后出现了 grub2 那个很土的界面(debian 果然是懒得配置软件啊!),里面居然有 Win8,一阵激动要求 boot 进入结果失败了 Orz 吓得我一身冷汗,这下好了要看看怎么让 Win8 接管 MBR… 简单的看了一下 debian(因为什么都没装,启动那个快呀…),回到这个问题上,一阵搜索后似乎得到的说法似乎是其实什么都没弄坏,只是 grub2 没配置好!?

嗯,是更新自己对这些东西认识的时候了… 下面开始一些理论学习。

UEFI

传统的设计是有 BIOS,我们知道计算机 boot 的时候某个阶段的 OS 尚无法控制计算机,这个阶段完全依赖 BIOS 的功能,它完成 POST 之后寻找含有 bootable 信息的设备,从上面读取一些东西,然后将执行权力交接给该程序,这往往是一个 boot loader(不排除某些 kernel 自己也能作为引导的可能),这个阶段 boot loader 干的所有事情实际上无法依赖操作系统,还是得通过 BIOS 来载入一些东西,帮助 OS 启动。OS 内核进入内存并控制实权以后还需要通过 BIOS 加载各种 OS 相关的驱动,之后 OS 才真正意义上控制了所有的硬件,并脱离对 BIOS 的依赖。

UEFI 是针对 BIOS 的设计过于简单的情形而设计的,它就是为替代 BIOS 而设计,因此以上 use case 它也得处理。但是 UEFI 的设计并不一样。BIOS 一般作为 firmware 烧在芯片里面,额外的一些参数放在 CMOS 里面用户可以更改。UEFI 还需要一个自己的分区(FAT 系),这里面存放一些 UEFI 的应用程序。UEFI 有自己的分区形式,称为 GPT,这与传统的 MBR 不同,MBR有一个缺陷是不能处理 >2Tb 的硬盘。MBR 一般位于第一扇区的 512bytes,其中 446 个字节为引导代码,后面 66 字节包括分区表,4 个分区 16byte 地址,两个 byte 的 flag。GPT 则抛弃了 CHS 那种硬盘的表示,使用 LBA,常见的都是 4Kb 的大小,LBA0 保留下来对应原先的 MBR 避免被老 fdisk 弄错,之后使用 GUID 存放分区信息,到 LBA 34 开始第一个分区。但实际上为了效率会从更后面开始,如 LBA 2048 开始实际的分区(空出来 1Mb 的空隙)。现在多数操作系统已经支持 GPT。

UEFI 提供一些 service,如访问变量,时间;定义了 protocol 供不同的模块通信,提供 device driver、图形的基本支持,连 bootloader 也是作为 UEFI 的一个应用程序,多系统时就会有多个 boot loader,而 UEFI 提供了选择他们的机制。也有人用 UEFI 干坏事,如 secure boot(不签名的 bootloader 不让用),还可以做虚拟化。在我的 T430s 上存在一个 UEFI 专用的分区。

lenovo 在硬盘上第一个分区用来恢复(那为啥还要恢复盘?不知道能不能删掉),占了 1Gb 的样子但是只写了 300Mb,为 NTFS 分区。第二个分区是 UEFI 的分区是 FAT 里面东西不多如下:

/boot/efi/
└── EFI
    ├── Boot
    │   └── bootx64.efi
    ├── debian
    │   └── grubx64.efi
    └── Microsoft
        └── Boot
            ├── BCD
            ├── BCD.LOG
            ├── BCD.LOG1
            ├── BCD.LOG2
            ├── bg-BG
            │   ├── bootmgfw.efi.mui
            │   └── bootmgr.efi.mui
            ├── bootmgfw.efi
            ├── bootmgr.efi
            ├── BOOTSTAT.DAT
            ├── boot.stl
            ├── ...

200Mb+ 只用了 20+Mb… 之后居然还有一个 reserved 分区占了 134Mb… 话说这是什么情况,为啥这么浪费我的硬盘!!!

系统微调

下面是一些有用的 tips:

  • mount ssd 分区建议使用的参数有 noatime、commit=600
  • 建立 cronjob 定期执行 fstrim
  • 使用 deadline scheduler,安装 sysfs,在 /etc/sysfs.conf 里面加入 /sys/block/sdX/queue/scheduler = deadline,其中 X 为 SSD 分区
  • 使用 tmpfs,在 /etc/default/tmpfs 里面把那几个都打开,享受飞一样的 tmp 吧

驱动程序

现在开源的东西里面的驱动程序看起来挺齐全,debian 装好以后似乎也没干啥,显卡正常(默认用了 Intel 的集显,不晓得这个显卡将来能切换不),播放的出声音,似乎也不怎么需要操心了。网卡什么的都没啥问题。看起来 debian 也成熟了很多了啊… 刚说完,audacious 声音一卡,死机了… 强烈怀疑是 iceweasel 的问题。感觉上网速度还是很慢的,不晓得是不是无线网卡驱动比较老。后面再看了…

应用程序

这次直接装了 ibus 和 gnome,似乎启动之后一切都很正常,我甚至都没进行任何的配置,想当年折腾个输入法也要搞半天的… 无线网络现在都用 NetworkManager 了的确挺方便的,这一来就忘记了传说中的 guessnet 和 ifplugd 的神器了。唯一让人觉得奇怪的是 iceweasel 的版本居然是 10(后来发现是 branch 用错了,赶紧换到 experimental…),有没有错 =.=b ibus 配上了 sun 拼音感觉还不错。

下面是一些有用的 tips,

  • 我现在装的是 64bit 的系统,不少东西可能只能在 32bit 里面使用,为此我们使用 dpkg –add-architecture 添加 i386,这样就能为 skype/acroread 等进行对应的安装了(参看这里

后面直接把 home 里面的东西 copy 到这台机器上估计就 ok 了。

—————–
These are the sons of Ishmael, and these are their names, by their towns, and by their castles; twelve princes according to their nations.

Advertisements
Linux 迁移

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s