详解在移动硬盘上安装 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 扇区开始分。 分区完成后如下:

    # 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-static 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 。

    安装其他常用工具

    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 中添加:

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

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

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

    # Set numlock
    if [ -x /usr/bin/numlockx ]; then
        /usr/bin/numlockx on
    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 中增加一段:

    Section "InputClass"
        Identifier "Keyboard Defaults"
        MatchIsKeyboard "yes"
        Option "XkbOptions" "terminate:ctrl_alt_bksp"
    EndSection

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

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

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

    安装启动管理器 SLiM

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

    Section "Monitor"
        Identifier  "Monitor0"
        VertRefresh 60.0 - 85.0
        UseModes    "Modes1024x768@85"
    EndSection
    
    Section "Device"
        Identifier  "Device0"
        Driver      "nouveau"
    EndSection
    
    Section "Modes"
        Identifier  "Modes1024x768@85"
    
        # 1024x768 @ 85.00 Hz (GTF) hsync: 68.60 kHz; pclk: 94.39 MHz
        Modeline "1024x768_85.00"  94.39  1024 1088 1200 1376  768 769 772 807  -HSync +Vsync
    
        # 1024x768 @ 75.00 Hz (GTF) hsync: 60.15 kHz; pclk: 81.80 MHz
        Modeline "1024x768_75.00"  81.80  1024 1080 1192 1360  768 769 772 802  -HSync +Vsync
    EndSection
    
    Section "Screen"
        Identifier  "Screen0"
        Device      "Device0"
        Monitor     "Monitor0"
        DefaultDepth    24
        SubSection  "Display"
            Depth   24
            Modes   "1024x768_85.00"
        EndSubSection
    EndSection

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

    中文相关

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

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

        export GTK_IM_MODULE=fcitx
        export QT_IM_MODULE=fcitx
        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 接口)。

时间: 2024-10-24 16:07:25

详解在移动硬盘上安装 ArchLinux 教程的相关文章

详解在在U盘上安装 ArchLinux 教程

本篇文章基于上次移动硬盘上安装 ArchLinux 的经历修改补充而来, 不过半年的时间,一些基础组件就已经发生了变化, Arch Linux 可真是够"折腾"的. PS:基于半年的 Arch Linux 使用经验, 我 合租的 Linode VPS 也用上了 Arch, 目前感觉尚好,Nginx + PHP-FPM 确实是不错的组合. Linode 使用修改过的 Linux 内核, AUR 上也有人发布 自己制作的更新版 , 还没研究怎么升级. 基本系统安装 和上次移动硬盘安装一样,

详解ubuntu 16.04安装docker教程_docker

本文介绍了ubuntu 16.04安装docker教程,具体如下: 环境 操作系统:ubuntu 16.04 64位,默认安装 准备 1. 添加GPG key: $ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D 2. 添加源 新建文件:/etc/apt/sources.list.d/docker.list,

怎样在移动硬盘上安装WinPE

  怎样在移动硬盘上安装WinPE         先准备好一些软件:一个WINPE镜像文件;GRUBGUI软件,这个是用来给硬盘写引导的;WINPM,分区工具. 第一步,写主引导:打开GRUBGUI这个程序,运行之后,选择你的移动硬盘,千万不要选错了啊,选成机子的硬盘就完了.当然了,重写一下主引导就好了,也没什么大不了. 写了主引导之后,就是移动硬盘的分区了. 分区工具,这里推荐WINPM,这个分区工具,很好用的. 用WINPM给移动硬盘分出一个主分区,这一步也很关键,然后设为可引导,也就是活

socket-unix网络编程环境怎么配置?我买了套接字联网api和tcp/ip详解,但是书上的代码都不能运行.

问题描述 unix网络编程环境怎么配置?我买了套接字联网api和tcp/ip详解,但是书上的代码都不能运行. 就下面这个代码,运行提示没有unp.h,找了个unp.h,但是还是提示什么各种数据类型重复定义.我到现在觉得是不是这本书写错了. #include "unp.h" int main(int argc, char **argv) { int sockfd, n; char recvline[MAXLINE + 1]; struct sockaddr_in servaddr; if

关于在移动硬盘上安装matlab的问题

问题描述 关于在移动硬盘上安装matlab的问题 我是安装mac版的r2008b,但是因为软件想安装在移动硬盘里,每次到了激活选择license文件的路径后,都会弹出这么一个警告: There was an unexpected exception. See the log file (/var/folders/j8/h7y2vndn4zb95kdblc2qjgc80000gn/T/aws.log) for more details. 新人发帖,请多多关照. 还有我没有足够的悬赏币,真是不好意思

实例详解ASP的上传功能

上传|详解|上传     这个问题已经不是什么新鲜问题了,网上也有大把的教程,但大多数是授人以鱼,而不授人以渔,经过辛苦的资料收集,思考,调试,整理,我基本上已经把这个问题从原理上搞清楚了,现在根据我自己的理解,在范例程序的基础上,加以解释,希望能对部分网友有所帮助. 请诸位大虾能对其中的不正或不良这处予以指正. 我想循序渐进,先讲一个简单的,单个图片文件保存到数据库. 这个范例共包括三个ASP文件和一个数据库(一个表),全部在同一目录下. 1.tblImage 表结构(ACCESS 2000)

详解Centos 使用YUM安装MariaDB_mariadb

1.在 /etc/yum.repos.d/ 下建立 MariaDB.repo,内容如下: 复制代码 代码如下: [azureuser@mono etc]$ cd /etc/yum.repos.d [azureuser@mono yum.repos.d]$ vi MariaDB.repo # MariaDB 10.0 CentOS repository list - created 2013-08-23 13:08 UTC # http://mariadb.org/mariadb/reposito

如何在移动硬盘上安装Win8 在移动硬盘上安装Win8方法

这里介绍一下如何在 Windows 7 下面把 Windows 8 安装部署到移动硬盘上.当我们把 Windows 8 安装到移动硬盘以后,就可以在移动硬盘上启动和使用 Win8 了.   这样一来,可以随身携带移动硬盘,插到其它任何电脑都可以直接使用,是不是很方便呢.   第一步.准备好移动硬盘的系统分区   1.首先,我们把移动硬盘接到电脑上.选择"计算机",右键点击,选择"管理".然后找到左窗格中储存下面的"磁盘管理",如下图所示:    

MVC系列(2) HttpRuntime详解分析(上)

文章内容 从上章文章都知道,asp.net是运行在HttpRuntime里的,但是从CLR如何进入HttpRuntime的,可能大家都不太清晰.本章节就是通过深入分析.Net4的源码来展示其中的重要步骤.请先看下图: 首先,CLR在初始化加载的时候,会加载一个非常重要的类AppManagerAppDomainFactory,这个类是做什么用的呢?首先这个类继承了IAppManagerAppDomainFactory接口,而这个接口是是有个可供COM调用的Create方法,代码如下: [ComIm