在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
Arch Linux简介 基本系统安装 所以仍然使用 MBR 分区,所以就要用 fdisk 或者 cfdisk 了, 不能使用支持 GPT 的 gdisk 和 cgdisk, 4k 对齐也是自动完成。 有趣的是,如果想把 GPT 分区表转换成 MBR 分区表, 还得借助 gdisk:r 进入 Recovery 模式, g 进入 MBR 模式,w 进行转换。 根据实际情况, 有些分区转换未必能够成功, 不过变回 MBR 分区表是没有问题的。 NTFS 分区得在第一个分区,不然 Windows 不认。 启动U盘是 /dev/sdb,目标U盘就成了 /dev/sdc。 复制代码 代码如下:# fdisk /dev/sdb Disk /dev/sdc: 8022 MB, 8022982656 bytes, 15669888 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 label type: dos Disk identifier: 0x00000000 Device Boot Start End Blocks Id System /dev/sdb1 2048 1804287 901120 7 HPFS/NTFS/exFAT /dev/sdb2 * 1804288 2009087 102400 83 Linux /dev/sdb3 2009088 10405887 4198400 83 Linux /dev/sdb4 10405888 15669887 2632000 83 Linux 第一个分区先用 ntfs,当正常U盘使用, 如果以后需要用到 ESP 分区,直接用这个分区转,或者切一部分空间过去。 第二个分区 100M,挂 /boot; 第三个分区 4G,作为 ArchLinux 根分区; 第四个分区 2.5G,作为 $HOME ; 格式化分区: 如果使用 xfs 分区格式: 复制代码 代码如下:# mkfs.ntfs -f /dev/sdc1 -L f004-c # mkfs.xfs -n size=64k -l lazy-count=1 /dev/sdc2 -L f004-boot # mkfs.xfs -n size=64k -l size=128m,lazy-count=1 /dev/sdc3 -L f004-a # mkfs.xfs -n size=64k -l size=128m,lazy-count=1 /dev/sdc4 -L f004-b -n size=64k 参数增加了文件名(目录)区域大小(默认 4k), 这样可以减少 IO 消耗,代价是 CPU 消耗多一些, 这对现代计算机显然不是问题。 -l size=128m 参数扩大日志的容量(默认 10m),更安全, 代价是挂载时间会长一些。 -l lazy-count=1 参数减少 superblock 读写次数,提高性能。 如果使用 ext4 分区格式: 复制代码 代码如下:# mkfs.ntfs -f /dev/sdc1 -L f004-c # mkfs.ext4 -b 4096 -m 0 -i 16384 -O '^has_journal' /dev/sdc2 -L f004-boot # mkfs.ext4 -b 4096 -m 1 -i 16384 -O '^has_journal' /dev/sdc3 -L f004-a # mkfs.ext4 -b 4096 -m 0 -i 16384 -O '^has_journal' /dev/sdc4 -L f004-b -b 4096 是每个存储块的大小。 -m 1 是指定 root 保留空间为 1%,home 区就不留了。 -i 16384 是指定多少字节的数据设置一个 inode 节点, 增加它的值会减少 inode 的总数,占用的空间会少一些, 相应的能够存储的文件数量也减少了,这个稍微注意一下就好,一般都够用。 -O '^has_journal' 是关掉文件系统日志,有点小危险。 经过两天的折腾,个人感觉 ext4 在U盘上读写速度快一些。 挂载分区: 复制代码 代码如下:# mount /dev/sdc3 /mnt # mkdir /mnt/boot # mount /dev/sdc2 /mnt/boot # mkdir /mnt/home # mount /dev/sdc4 /mnt/home df -h 检查一下: 复制代码 代码如下:# xfs Filesystem Size Used Avail Use% Mounted on /dev/sdc3 3.9G 33M 3.9G 1% /mnt /dev/sdc2 82M 5.2M 77M 7% /mnt /dev/sdc4 2.4G 33M 2.4G 2% /mnt/home # ext4 Filesystem Size Used Avail Use% Mounted on /dev/sdc3 3.9G 8.1M 3.8G 1% /mnt /dev/sdc2 96M 48K 96M 1% /mnt /dev/sdc4 2.5G 3.8M 2.4G 1% /mnt/home ext4 改变 bytes-per-inode 确实对分区所占空间影响很大。 安装基本系统 家里有无线路由,网络不用配置,已经自动连上了。 编辑 /etc/pacman.d/mirrorlist ,把最快的源挪到最上面。 一般来说 163 和台湾的源比较快,163 似乎有时候不稳定, 几个中国大学的源有些是 ipv6 的,用不了。 安装完成后,这个配置文件也会自动拷贝到新系统中。 自带的 vi 真的是比 vim 难用多了,一会儿第一时间换掉。 按照官网说明,用 # pacstrap /mnt base base-devel 安装基本系统, base-devel 也一并装上,迟早会用到 AUR 或 ABS。 提示共 128 个软件包,需要下载 158.37M 内容,安装完成后是 507.09M。 安装 复制代码 代码如下:grub: # arch-chroot /mnt pacman -S grub 。
生成 复制代码 代码如下:fstab: # genfstab -p -U /mnt >> /mnt/etc/fstab , 然后更改 fstab (系统默认一般就比较好了,不优化也行):
使用 relatime 挂载参数。 以前是推荐增加 noatime 挂载参数,不记录文件读取时间, 但这会导致 Mutt 等需要文件读取时间的软件出错。 现在改为使用 relatime 参数了 (已经默认加上了,Linux 2.6.30 起此参数成为默认值), 只有在文件读取时间早于文件更新时间时,才更新读取时间数据。 使用 nodiratime 挂载参数,不记录目录读取访问时间。 把 /tmp 放到 tmpfs 上去。(没单独分区,免了) 不再使用 discard 挂载参数。 这个参数主要是针对 SSD 硬盘的,对不支持 TRIM 的机械硬盘无效, 对U盘貌似作用不明显。 不再使用 async 挂载参数,开启异步读写模式。 由于只是“看起来”快了,实际数据写入速度并没有改善, 考虑到稳定性,是否应使用此参数? 不要使用 barrier=0 挂载参数,这个选项似乎在突然断电、 拔U盘时,有几率丢失文件或损坏分区。 (基于我的经历 + 参考 ) 由于不会跑什么大应用,为了降低 swap 的使用频率, 修改 /mnt/etc/sysctl.conf : 复制代码 代码如下:vm.swappiness = 1 vm.vfs_cache_pressure = 50 前一句是尽量不使用 swap,后一句是缓存文件系统信息。 下面的操作可以在 chroot 环境下运行: 复制代码 代码如下:# arch-chroot /mnt 设置 hostname: echo 'f004' > /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 段, 让 block 参数紧挨着 udev 参数之后(早一点加载), 然后 # mkinitcpio -p linux 生成 img 文件。 同时加上了 shutdown 参数,作用以后再试。 resume 参数就算了,U盘本来就小、慢,支持休眠更痛苦。 (注:新版本中 block 参数替代了 usb pata sata scsi 等一众参数) 安装 grub: 复制代码 代码如下:# grub-install --target=i386-pc --recheck --boot-directory=/boot --no-floppy /dev/sdc # 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/sdc2 现在的 Grub2 使用 UUID 来找硬盘分区, 后两句就是检查新生成的 grub.cfg 使用的分区 UUID 和硬盘是否相符。 如果忘记生成 grub.cfg 了,可以再次用光盘启动进去做。 最后,退出 chroot 环境,umount,重启。 启动U盘可以收起来了。 启动后,新安装的U盘变成了 /dev/sdb, 此时最好将 mkinitcpio grub-install grub-mkconfig 重新做一遍, 否则有可能在下次或另外一台机器上启动时,损坏分区表,丢失文件。 或许没有道理,但这是我重复安装好多次以后的感觉,可能有以下原因: 带电插拔,可我都是 umount 了啊,不应当这么脆弱。 |
请发表评论