首页 > 系统 > Linux > 正文

详解在移动硬盘上安装 ArchLinux 教程

2024-08-27 23:58:56
字体:
来源:转载
供稿:网友

Linux有两个发行版:PLD和CRUX。PLD采用的是apt-get作为rpm系统的前端,便于系统的升级,CRUX的软件包的打包方式十分简单,就是最简单的tar.gz包,更易于管理和维护,Archlinux对这两个发行版进行特性的综合,扬长避短,现在我们来讲讲如何在移动硬盘上安装ArchLinux.

熟悉 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 扇区开始分,分区完成后如下:

  1. # fdisk /dev/sdb 
  2.   
  3. Disk /dev/sdb: 40.1 GB, 40060403712 bytes, 78242976 sectors 
  4. Units = sectors of 1 * 512 = 512 bytes 
  5. Sector size (logical/physical): 512 bytes / 512 bytes 
  6. I/O size (minimum/optimal): 512 bytes / 512 bytes 
  7. Disk identifier: 0xb245c8a1 
  8.   
  9. Device      Boot    Start       End         Blocks      Id      System 
  10. /dev/sdb1   *       2048        20973567    10485760    83      Linux 
  11. /dev/sdb2           20973568    41945087    10485760    83      Linux 
  12. /dev/sdb3           41945088    77596671    17825792    7       HPFS/NTFS/exFAT 
  13. /dev/sdb4           77596672    78242975    323152      82      Linux swap / Solaris 

第一个分区 10G,btrfs 格式,作为 Arch Linux 分区,第二个分区 10G,ext4 格式,作为 $HOME,第三个分区 17G,ntfs 格式,用作日常数据存储和交换,偶尔还做移动硬盘用,第四个分区 300M,做 swap.

格式化分区:

  1. # mkfs.btffs /dev/sdb1 -L f006-a 
  2. # mkfs.ext4 /dev/sdb2 -L f006-b 
  3. # mkfs.ntfs -f /dev/sdb3 -L f006-c 

没有详细研究 btrfs 分区的管理,就这么抓起来当其它格式一样用了.

挂载分区:

  1. # mount /dev/sdb1 /mnt 
  2. # mkdir /mnt/home 
  3. # mount /dev/sdb2 /mnt/home 

df -h 看一下:

  1. Filesystem  Size    Used    Avail   Use%    Mounted on 
  2. /dev/sdb1   10G     312K    8.0G    1%      /mnt 
  3. /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 上去,考虑到数据安全性,没有关闭文件系统的日志,它的提速效果在日常使用中并不明显.

由于不会跑什么大应用,为了降低 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 内容为:

  1. LANG='en_US.UTF-8' 
  2. LC_COLLATE='C' 
  3. LC_MESSAGES='C' 

编辑 /etc/locale.gen,取消 en_US.UTF-8,zh_CN.UTF-8, zh_TW.UTF-8 前面的注释,然后执行 locale-gen 命令.

更改 root 密码:passwd root

安装 Grub 引导系统

仍然在 chroot 环境中操作,编辑 /etc/mkinitcpio.conf,在 HOOKS 段增加 usb 参数,然后 # mkinitcpio -p linux 生成 img 文件,同时加上了 resume 和 shutdown 参数,作用以后再试,注:新版本中 block 参数替代了 usb pata sata scsi 等一众参数.

安装 grub 到 MBR:

  1. # grub-install --target=i386-pc --recheck --boot-directory=/boot --no-floppy /dev/sdb 
  2. # cp -v /usr/share/grub/{unicode.pf2,ascii.pf2} /boot/grub/ 
  3. # 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 文件:

  1. # grub-mkconfig -o /boot/grub/grub.cfg 
  2. # grep 'set=root' /boot/grub/grub.cfg 
  3. # blkid /dev/sdb1  --Vevb.com 

现在的 Grub2 使用 UUID 来找硬盘分区,后两句就是检查新生成的 grub.cfg 使用的分区 UUID 和硬盘是否相符,如果忘记生成 grub.cfg 了,可以再次用光盘启动进去做.

最后,退出 chroot 环境,umount 移动硬盘,重启,启动光盘可以收起来了.

初始设置:如果一切正常,现在可以用 root 登录系统了:

  1. # uname -a 
  2. Linux f006 3.6.8-1-ARCH #1 SMP PREEMPT Tue Nov 27 07:58:01 CET 2012 i686 GNU/Linux 
  3.  
  4. # free -h 
  5.             total   used    free    shared  buffers cached 
  6. Mem:        499M    62M     436M    0B      676K        39M 
  7. -/+ buffers/cache:  22M     477M 
  8. Swap:       0B      0B      0B 
  9.  
  10. # df -h 
  11. Filesystem      Size    Used    Avail   Use%    Mounted on 
  12. rootfs          10G     814M    7.3G    10%     / 
  13. dev             248M    0       248M    0%      /dev 
  14. run             250M    4.5M    246M    2%      /run 
  15. /dev/sdb1       10G     814M    7.3G    10%     / 
  16. tmpfs           250M    0       250M    0%      /dev/shm 
  17. tmpfs           250M    0       250M    0%      /sys/fs/cgroup 
  18. tmpfs           60M     0       60M     0%      /tmp 
  19. /dev/sdb2       9.9G    151M    9.2G    2%      /home 

安装 vim,默认的 vi 实在是用不惯:

  1. # pacman -S vim 
  2. # pacman -R vi 
  3. # ln -s /usr/bin/vim /usr/bin/vi 

关闭 PC 小喇叭,这个实在是太烦人了,在启动时就禁用:

  1. # cat /etc/modprobe.d/nopcspkr.conf 
  2. blacklist pcspkr 

这个文件需要自己创建.

配置有线网络,如果使用 dhcd 动态分配地址:

  1. # dhcpcd        # 自动让 eth0 获取 IP 
  2. #               # 或者配置成服务自启动(更加方便) 
  3. # systemctl enable dhcpcd@eth0 
  4. # systemctl start dhcpcd@eth0 

如果使用静态地址,一种方法是配置 network 服务,比较麻烦,我用另外一种方法,ifplugd + netcfg:

  1. # pacman -S ifplugd 
  2. # systemctl disable dhcpcd@eth0 
  3. # systemctl stop dhcpcd@eth0    # 要停掉 DHCP,不然有干扰 
  4. # cd /etc/network.d/ 
  5. # cp examples/ethernet-static home 
  6. # vi home           # 设置我的静态 IP 设置 profile 
  7. # systemctl enable net-auto-wired 
  8. # 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 自动更新时间

  1. # pacman -S ntp libedit 
  2. # systemctl enable ntpd 
  3. # systemctl start ntpd 

另外,Arch 建议在 /etc/ntp.conf 中添加 iburst 参数,比如:

  1. server 0.pool.ntp.org iburst 
  2. server 1.pool.ntp.org iburst 
  3. server 2.pool.ntp.org iburst 
  4. server 3.pool.ntp.org iburst 

检查 ntpd 同步情况:# ntpq -np,时间同步完成后,用 hwclock -w 写入硬件时钟.

创建普通用户:

  1. # useradd -m fwolf 
  2. # passwd fwolf 

通常,这个用户我们要赋予 sudo 权限:

  1. # pacman -S sudo 
  2. # cat /etc/sudoers.d/fwolf_sudo_conf 
  3. Defaults    env_reset 
  4. Defaults    secure_path="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin" 
  5. fwolf   ALL=(ALL:ALL) ALL 
  6. %admin  ALL=(ALL) ALL 
  7. %sudo   ALL=(ALL:ALL) ALL 
  8. # chmod 0440 /etc/sudoers.d/fwolf_sudo_conf 

注意: /etc/sudoers.d/ 下的文件,名称带有 ~ 或者 . 的不会生效,参见 CentOS – 0005017:The #includedir directive in sudoers does not work,文件属性也必须是 0440

安装其他常用工具:bash-completion htop

图形系统

由于移动硬盘要抱着到处跑,所以图形驱动一定是什么都有,也不追求多么花哨的界面效果,简洁明快,所以选择 LXDE+Openbox.

字符界面分辨率

默认进入字符界面后,分辨率是最大分辨率,如果要另行指定,可以修改 /etc/default/grub:

GRUB_CMDLINE_LINUX_DEFAULT="quiet video-1024x768M@75m"

然后 grub-mkconfig -o /boot/grub/grub.cfg 重新生成 grub 配置文件,默认点亮 Numlock,需要用到两个命令:系统自带的 setleds 和 通过 pacman 安装的 numlockx.

要在字符界面下打开 Numlock,可以在 $HOME/.bashrc 中添加:

  1. # Numlock 
  2. if [ -x /usr/bin/setleds ]; then 
  3.     for tty in /dev/tty{1..6}; do 
  4.         /usr/bin/setleds -D +num < /dev/tty > /dev/null 2>&1 
  5.     done 
  6. fi 

这样设置会在登录之后自动打开 Numlock,若要登录之前就打开,可以参照 Arch Wiki 将上述内容添加到 /etc/rc.local 或者 /etc/inittab,但不如跟着用户配置容易备份.

要在 X 下打开 Numlock,可以在 $HOME/.xinitrc 中添加:

  1. # Set numlock 
  2. if [ -x /usr/bin/numlockx ]; then 
  3.     /usr/bin/numlockx on 
  4. fi 

安装 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

现在可以用 startx 启动 X 看到简陋的图形界面了,如果想用 Ctrl+Alt+Backspace 关闭 X,需要在 /etc/X11/xorg.conf.d/10-evdev.conf 中增加一段:

  1. Section "InputClass" 
  2.     Identifier "Keyboard Defaults" 
  3.     MatchIsKeyboard "yes" 
  4.     Option "XkbOptions" "terminate:ctrl_alt_bksp" 
  5. EndSection 

安装 LXDE

LXDE 组的所有包,然后照官方说明复制 Openbox 的三个配置文件,监测文件系统变化的 Gamin,常用软件:leafpad obconf epdfview,显示管理器(图形登录界面)Slim,并且 sudo systemctl enable slim.

配置一个简单的 $HOME/.xinitrc,从 /etc/skel/.xinitrc 复制一份, 然后添加:

  1. xrandr -s 1024x768  # 提前指定分辨率 
  2. exec startlxde 

安装启动管理器 SLiM

这个很好装,默认也能用,但就是分辨率和刷新率有问题,我的旧电脑最佳分辨率为 1024×768@85Hz,LXDE 里很容易就设置了,但 SLiM 没有直接的可设置方法,只能自建一个 /etc/X11/xorg.conf 如下:

  1. Section "Monitor" 
  2.     Identifier  "Monitor0" 
  3.     VertRefresh 60.0 - 85.0 
  4.     UseModes    "Modes1024x768@85" 
  5. EndSection 
  6.   
  7. Section "Device" 
  8.     Identifier  "Device0" 
  9.     Driver      "nouveau" 
  10. EndSection 
  11.   
  12. Section "Modes" 
  13.     Identifier  "Modes1024x768@85" 
  14.   
  15.     # 1024x768 @ 85.00 Hz (GTF) hsync: 68.60 kHz; pclk: 94.39 MHz 
  16.     Modeline "1024x768_85.00"  94.39  1024 1088 1200 1376  768 769 772 807  -HSync +Vsync 
  17.   
  18.     # 1024x768 @ 75.00 Hz (GTF) hsync: 60.15 kHz; pclk: 81.80 MHz 
  19.     Modeline "1024x768_75.00"  81.80  1024 1080 1192 1360  768 769 772 802  -HSync +Vsync 
  20. EndSection 
  21.   
  22. Section "Screen" 
  23.     Identifier  "Screen0" 
  24.     Device      "Device0" 
  25.     Monitor     "Monitor0" 
  26.     DefaultDepth    24 
  27.     SubSection  "Display" 
  28.         Depth   24 
  29.         Modes   "1024x768_85.00" 
  30.     EndSubSection 
  31. EndSection 

这个配置文件已经非常简单了(其中 Modeline 是用 gtf 生成的),但考虑到不同机器上的兼容性,还是不用 SLiM 了,手工 startx 吧.

中文相关

基本字体 ttf-dejavu artwiz-fonts wqy-zenhei wqy-microhei

输入法 fcitx-im fcitx-configtool fcitx-fbterm,在 $HOME/.xinitrc 里添加:

  1. export GTK_IM_MODULE=fcitx 
  2. export QT_IM_MODULE=fcitx 
  3. export XMODIFIERS="@im=fcitx" 

字体配置,把原先用的其他常用字体和配置文件都搬过来了,就是 $HOME/.fonts 目录,Ubuntu 下用的很好,这里也可以直接用,把 $HOME/.fonts/fonts.conf 链接为 /etc/fonts/local.conf 即生效,然后修改 /etc/fonts/conf.avail 下的 40-nonlatin.conf 和 60-latin.conf 将 SimSun 或者其他你喜欢的字体设置为首选字体,最后 $ fc-cache -vf 更新下字体缓存,重启 X 就可以了.

至此,一个基本的、具备图形界面的 Arch Linux 就安装完成了,基本程序占用空间约 1.4G,总体感觉,运行速度受移动硬盘读写速度影响非常大,电脑是 USB 1.1 接口.

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表