在移动硬盘上安装 Arch Linux
起因
对 Ubuntu 频繁的版本升级有点厌倦了,6 个月的更新周期有些短。 不升级吧经不住诱惑, 升级吧往往需要花专门的时间处理,解决或大或小这样那样的问题, (最近几次好多了,出现问题很少,但还是不放心)。 Rpm 系的不喜欢,不考虑。 Debian 吧嫌它有点旧,sid 嫌不稳定。 希望尝试滚动升级的发行版,目前的选择看来看去也就是 Gentoo 和 Arch 了。 Gentoo 需要编译不考虑,Arch 看来不错,但它的追新特性让我比较担心。 我希望即使几个月或者几年不更新,也能够比较顺利的更新到最新版。 除了 Arch,看起来也没有别的更加合适的发行版了, 于是就做了很多功课,发现 Arch 也不是像瓷瓶那样脆弱, 一般只要不是以年为间隔进行升级应该不致命, 实在弄坏了就重装吧,多重装几次就当是复习了。 另外还可以琢磨一些办法快速安装软件,以及有效保存、管理自己的 配置文件 。 于是,下定决心,开始向 Arch Linux 进军。
熟悉 Arch Linux 最好的方式就是经常使用、没事就折腾。 我的 Linux 经验并不算丰富,换 Arch 肯定会遇到很多新问题, 为了不耽误正常使用,不能在正式工作用机上安装(包括公司和家里), 也没有额外的机器,只好选择将其安装在 U盘或者移动硬盘上。
至于服务器,我倒不敢也不推荐轻易更换成 Arch,别说桌面使用还没有熟悉, 就是熟悉了,也没有精力定期去升级服务器。 所以服务器还是用着现在的 Ubuntu 吧,比较省事,也算稳定。 即使是已经不再维护的旧发行版,官方也提供 旧发行版仓库 。 仓库中没有个别新软件,一般也能在网上找到安装方法。 所以,在熟练驾驭 Arch,以及有足够精力定期升级之前, 别乱折腾生产服务器的好,谨慎选择。
基本系统安装
之前已经找了个 2G U盘装过了,精简安装,运行速度还是可观的。 不过 U盘太小,装到能够基本使用的话,用户可用空间只剩 100M 了, 所以只能留着用来应急。 另外操作系统长期在 U盘上运行的话,还会影响闪存使用寿命, 所以这次用移动硬盘来安装,准备较长期的使用。
这个移动硬盘是要拿着到处跑的,所以选择 32 位系统,没办法家里都是老爷机。 分区也保守一点,仍然采用 MBR 而不是 GPT。 安装介质使用 archlinux-2012.11.01-dual.iso 刻录光盘。
使用光盘启动,自动以 root 身份进入系统。
插入移动硬盘,分区,格式化,挂载。
由于不用 GPT 分区,所以 gdisk 和 cgdisk 都不能用, 只能用 fdisk 和 cfdisk。 fdisk 会预留 2048 个扇区,gdisk 却是从 64 扇区开始分。 分区完成后如下:
# fdisk /dev/sdb Disk /dev/sdb: 40.1 GB, 40060403712 bytes, 78242976 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0xb245c8a1 Device Boot Start End Blocks Id System /dev/sdb1 * 2048 20973567 10485760 83 Linux /dev/sdb2 20973568 41945087 10485760 83 Linux /dev/sdb3 41945088 77596671 17825792 7 HPFS/NTFS/exFAT /dev/sdb4 77596672 78242975 323152 82 Linux swap / Solaris
第一个分区 10G,btrfs 格式,作为 Arch Linux 分区; 第二个分区 10G,ext4 格式,作为 $HOME ; 第三个分区 17G,ntfs 格式,用作日常数据存储和交换,偶尔还做移动硬盘用; 第四个分区 300M,做 swap。
格式化分区:
# mkfs.btffs /dev/sdb1 -L f006-a # mkfs.ext4 /dev/sdb2 -L f006-b # mkfs.ntfs -f /dev/sdb3 -L f006-c
没有详细研究 btrfs 分区的管理,就这么抓起来当其它格式一样用了。
挂载分区:
# mount /dev/sdb1 /mnt # mkdir /mnt/home # mount /dev/sdb2 /mnt/home
df -h 看一下:
Filesystem Size Used Avail Use% Mounted on /dev/sdb1 10G 312K 8.0G 1% /mnt /dev/sdb2 9.9G 151M 9.2G 2% /mnt/home
可以看到,btrfs 分区比 ext4 分区自身占用空间要小一点, 但它似乎又保留了 20% 的硬盘空间,作为备用?难怪我那个 U盘空间显得很小。
安装基本系统
家里有无线路由,网络不用配置,已经自动连上了。
编辑 /etc/pacman.d/mirrorlist ,把最快的源放在最上面。 我是把中国区的 4 个源都放上面,163 的挪到最前面。 安装完成后,这个配置文件也会自动拷贝到新系统中。 自带的 vi 真的是比 vim 难用多了,一会儿第一时间换掉。
按照官网说明,用 # pacstrap /mnt base base-devel 安装基本系统, base-devel 也一并装上,迟早会用到 AUR 或 ABS。 提示共 130 个软件包,需要下载 150M 内容,安装完成后是 550M。
安装 grub: # arch-chroot /mnt pacman -S grub-bios 。
生成 fstab: # genfstab -p /mnt >> /mnt/etc/fstab , 然后更改 fstab (U盘一定要作前 3 项优化):
使用 relatime 挂载参数。
以前是推荐增加 noatime 挂载参数,不记录文件读取时间, 但这会导致 Mutt 等需要文件读取时间的软件出错。 现在改为使用 relatime 参数了 (已经默认加上了,Linux 2.6.30 起此参数成为默认值), 只有在文件读取时间早于文件更新时间时,才更新读取时间数据。
使用 discard 挂载参数。
这个参数主要是针对 SSD 硬盘的,普通硬盘也应该有点作用。
把 /tmp 放到 tmpfs 上去。
考虑到数据安全性,没有关闭文件系统的日志, 它的提速效果在日常使用中并不明显。
安装 Grub 引导系统。
仍然在 chroot 环境中操作。 编辑 /etc/mkinitcpio.conf ,在 HOOKS 段增加 usb 参数, 然后 # mkinitcpio -p linux 生成 img 文件。 同时加上了 resume 和 shutdown 参数,作用以后再试。 (注:新版本中 block 参数替代了 usb pata sata scsi 等一众参数)
安装 grub 到 MBR:
# grub-install --target=i386-pc --recheck --boot-directory=/boot --no-floppy /dev/sdb # cp -v /usr/share/grub/{unicode.pf2,ascii.pf2} /boot/grub/ # cp -v /usr/share/locale/en\\@quot/LC_MESSAGES/grub.mo /boot/grub/locale/en.mo
无论是 32 位还是 64 位系统,都是使用 --target=i386-pc 参数, --no-floppy 是不检查软驱(这玩意儿现在应该没人用了)。 后两句不执行也行,还没弄懂是做什么的。
然后,千万不要忘记 生成 grub.cfg 文件 :
# grub-mkconfig -o /boot/grub/grub.cfg # grep \'set=root\' /boot/grub/grub.cfg # blkid /dev/sdb1
现在的 Grub2 使用 UUID 来找硬盘分区, 后两句就是检查新生成的 grub.cfg 使用的分区 UUID 和硬盘是否相符。 如果忘记生成 grub.cfg 了,可以再次用光盘启动进去做。
最后,退出 chroot 环境,umount 移动硬盘,重启。 启动光盘可以收起来了。
由于不会跑什么大应用,为了降低 swap 的使用频率, 修改 /mnt/etc/sysctl.conf :
vm.swappiness = 1 vm.vfs_cache_pressure = 50 |
前一句是尽量不使用 swap,后一句是缓存文件系统信息。
下面的操作可以在 chroot 环境下运行:
# arch-chroot /mnt |
设置 hostname: echo \'f006\' > /etc/hostname 。
设置时区:
# ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime |
新建 /etc/locale.conf 内容为:
LANG=\'en_US.UTF-8\' LC_COLLATE=\'C\' LC_MESSAGES=\'C\' |
编辑 /etc/locale.gen ,取消 en_US.UTF-8, zh_CN.UTF-8, zh_TW.UTF-8 前面的注释,然后执行 locale-gen 命令。
更改 root 密码: passwd root 。
初始设置
如果一切正常,现在可以用 root 登录系统了:
# uname -a Linux f006 3.6.8-1-ARCH #1 SMP PREEMPT Tue Nov 27 07:58:01 CET 2012 i686 GNU/Linux # free -h total used free shared buffers cached Mem: 499M 62M 436M 0B 676K 39M -/+ buffers/cache: 22M 477M Swap: 0B 0B 0B # df -h Filesystem Size Used Avail Use% Mounted on rootfs 10G 814M 7.3G 10% / dev 248M 0 248M 0% /dev run 250M 4.5M 246M 2% /run /dev/sdb1 10G 814M 7.3G 10% / tmpfs 250M 0 250M 0% /dev/shm tmpfs 250M 0 250M 0% /sys/fs/cgroup tmpfs 60M 0 60M 0% /tmp /dev/sdb2 9.9G 151M 9.2G 2% /home |
安装 vim,默认的 vi 实在是用不惯:
# pacman -S vim # pacman -R vi # ln -s /usr/bin/vim /usr/bin/vi
关闭 PC 小喇叭。
这个实在是太烦人了,在启动时就禁用:
# cat /etc/modprobe.d/nopcspkr.conf blacklist pcspkr
这个文件需要自己创建。
配置有线网络。
如果使用 dhcd 动态分配地址:
# dhcpcd # 自动让 eth0 获取 IP # # 或者配置成服务自启动(更加方便) # systemctl enable dhcpcd@eth0 # systemctl start dhcpcd@eth0
如果使用静态地址,一种方法是配置 network 服务,比较麻烦, 我用另外一种方法,ifplugd + netcfg:
# pacman -S ifplugd # systemctl disable dhcpcd@eth0 # systemctl stop dhcpcd@eth0 # 要停掉 DHCP,不然有干扰 # cd /etc/network.d/ # cp examples/ethernet-statuc home # vi home # 设置我的静态 IP 设置 profile # systemctl enable net-auto-wired # systemctl start net-auto-wired
如果要快速切换网络环境, 再在 /etc/network.d/ 下建立一个新的 profile 文件, 用 netcfg -u PROFILE 来进行切换,会自动停掉旧的。
在 /etc/conf.d/netcfg 中配置 NETWORKS=(last) 能够自动记录最后使用的 profile,但只适用于 network 服务方式。 用 net-auto-wired 的话,它是按照文件名排序, 一个一个的试 profile,直到能用的那个, 所以要更改 profile 优先级,更改文件名就行了。
安装 ntp 自动更新时间
# pacman -S ntp libedit # systemctl enable ntpd # systemctl start ntpd
另外,Arch 建议在 /etc/ntp.conf 中添加 iburst 参数,比如:
server 0.pool.ntp.org iburst server 1.pool.ntp.org iburst server 2.pool.ntp.org iburst server 3.pool.ntp.org iburst
检查 ntpd 同步情况:
# ntpq -np
时间同步完成后,用 hwclock -w 写入硬件时钟。
创建普通用户。
# useradd -m fwolf # passwd fwolf
通常,这个用户我们要赋予 sudo 权限:
# pacman -S sudo # cat /etc/sudoers.d/fwolf_sudo_conf Defaults env_reset Defaults secure_path="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin" fwolf ALL=(ALL:ALL) ALL %admin ALL=(ALL) ALL %sudo ALL=(ALL:ALL) ALL # chmod 0440 /etc/sudoers.d/fwolf_sudo_conf
注意, /etc/sudoers.d/ 下的文件,名称带有 ~ 或者 . 的不会生效, 参见 CentOS - 0005017: The #includedir directive in sudoers does not work , 文件属性也必须是 0440 。
图形系统
由于移动硬盘要抱着到处跑,所以图形驱动一定是什么都有。 也不追求多么花哨的界面效果,简洁明快,所以选择 LXDE+Openbox 。
字符界面分辨率
默认进入字符界面后,分辨率是最大分辨率,如果要另行指定, 可以修改 /etc/default/grub :
GRUB_CMDLINE_LINUX_DEFAULT="quiet video-1024x768M@75m"
然后 grub-mkconfig -o /boot/grub/grub.cfg 重新生成 grub 配置文件。
安装 xorg 和显卡驱动
Xorg: xorg-server xorg-xinit xorg-server-utils mesa
显卡驱动:xf86-video-ati xf86-video-intel xf86-video-nouveau nouveau-dri
笔记本触摸板支持:xf86-input-synaptics
测试 X 工作是否正常:xorg-twm xorg-xclock xterm
安装 LXDE
LXDE 组的所有包,然后照官方说明复制 Openbox 的三个配置文件
监测文件系统变化的 Gamin
常用软件:leafpad obconf epdfview
现在可以用 startx 启动 X 看到简陋的图形界面了。 如果想用 Ctrl+Alt+Backspace 关闭 X,需要在 /etc/X11/xorg.conf.d/10-evdev.conf 中增加一段:
Section "InputClass" Identifier "Keyboard Defaults" MatchIsKeyboard "yes" Option "XkbOptions" "terminate:ctrl_alt_bksp" EndSection |
配置一个简单的 $HOME/.xinitrc ,从 /etc/skel/.xinitrc 复制一份, 然后添加:
xrandr -s 1024x768 # 提前指定分辨率 exec startlxde |
至此,一个基本的、具备图形界面的 Arch Linux 就安装完成了, 实际空间占用约 1.4G。
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:Fwolf 来源: Fwolf's Blog
- 标签: Arch 移动硬盘
- 发布时间:2013-01-16 13:54:16
- [40] 界面设计速成
- [35] Oracle MTS模式下 进程地址与会话信
- [32] 如何拿下简短的域名
- [32] IOS安全–浅谈关于IOS加固的几种方法
- [32] 视觉调整-设计师 vs. 逻辑
- [31] 程序员技术练级攻略
- [31] 图书馆的世界纪录
- [30] 【社会化设计】自我(self)部分――欢迎区
- [30] android 开发入门
- [27] 读书笔记-壹百度:百度十年千倍的29条法则