11

在移动硬盘上安装 Arch Linux

 2 years ago
source link: https://blogread.cn/it/article/6188?f=hot1
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

在移动硬盘上安装 Arch Linux

浏览:2282次  出处信息

   对 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 上去。

  • 考虑到数据安全性,没有关闭文件系统的日志, 它的提速效果在日常使用中并不明显。

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

安装 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 移动硬盘,重启。 启动光盘可以收起来了。

   如果一切正常,现在可以用 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

   现在可以用 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

安装 LXDE

LXDE 组的所有包,然后照官方说明复制 Openbox 的三个配置文件

监测文件系统变化的 Gamin

常用软件:leafpad obconf epdfview

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

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

   至此,一个基本的、具备图形界面的 Arch Linux 就安装完成了, 实际空间占用约 1.4G。

QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK