之前由于 Linux 桌面环境不给力,字体渲染也看得很不舒服,而且我非常依赖 Windows 上的工具和软件,所以装着双系统的 Ubuntu 和 Win7,却极少打开 Ubuntu。刚好昨天晚上在 V2EX 看到有人也有同样的困惑,看了他们的讨论后,突然有了新的想法。Linux 桌面环境既然不适合我使用,那其实我只需要使用命令行就可以了。要同时在 Windows 环境下使用 Linux 命令行,可以用虚拟机装上一个 Linux ,再用终端工具( XShell, SecretCRT 等)连上虚拟机就可以了。同时可以装上 Samba ,这样在 Windows 环境也可以很方便地操作 Linux 文件。
折腾的结果是:
这篇文章只是简略地描述了如何在 VirtualBox 上安装 Arch Linux ,详尽的安装说明请参阅 Arch Wiki。
Arch Linux 的安装镜像可以在 官网 下载到,Virtual Box 也可在相应的 官方网站 上获取。安装和配置 Virtual Box 的过程相当简单,然后添加一个虚拟机并设置 Arch Linux 的安装镜像为虚拟机的光驱文件。
启动虚拟机后会进入到系统选择界面,我选择的 64 位系统。启动完系统后,就是按部就班地按 Arch Wiki 中的 Beginners’ Guide 来安装系统就可以了。由于 VirtualBox 在虚拟机网卡配置里,默认选的是 NAT ,因此不需要对 Arch Linux 的网络进行设置就可以上网了。可以简单地用 ping -t www.google.com
验证网络是否连通。
接下来需要做的事情,是对硬盘进行分区并创建文件系统。我使用 cgdisk
设置 GPT 分区表,只分了一个分区,使用 ext4 文件系统。创建好文件系统后将其挂载在 /mnt
上。
1 | # cgdisk /dev/sda Part. # Size Partition Type Partition Name ---------------------------------------------------------------- 1007.0 KiB free space 1 8.0 GiB Linux filesystem # mkfs.ext4 /dev/sda1 # mount /dev/sda1 /mnt |
另外,swap 分区是可以不创建的,直接用 Swap file 即可。Swap file 可以动态地伸缩容量,不需要让硬盘多一个零碎的分区。可以后面 arch-chroot
后按 Arch Wiki 里的 Swap File 一节进行操作。
准备好文件系统后,需要选择安装系统所使用的镜像,安装过程中需要下载各种库和工具。不需要像 Beginner’s Guide 中所说的手动编辑文件,可以参照 这里 对镜像源进行测速排序。中科大的镜像源还是一如即往地给力呀 :-)
1 | # cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.backup # rankmirrors -n 6 /etc/pacman.d/mirrorlist.backup > /etc/pacman.d/mirrorlist # tail -n 6 /etc/pacman.d/mirrorlist Server = http://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch Server = http://mirrors.hustunique.edu.cn/archlinux/$repo/os/$arch Server = http://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch Server = http://mirrors.neusoft.edu.cn/archlinux/$repo/os/$arch Server = http://ftp.jaist.ac.jp/pub/Linux/ArchLinux/$repo/os/$arch Server = http://archlinux.cs.nctu.edu.tw/$repo/os/$arch |
接下来就是把基础系统安装进 /mnt
,也是我们之后要用的新系统里面啦。同时按 Arch Wiki 中的步骤,创建 fstab
,设置语言、时区,创建初始化的 ramdisk。
1 | # pacstrap -i /mnt base # genfstab -U -p /mnt >> /mnt/etc/fstab # arch-chroot /mnt # nano /etc/locale.gen en_US.UTF-8 UTF-8 # locale-gen # echo LANG=en_US.UTF-8 > /etc/locale.conf # export LANG=en_US.UTF-8 # ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime # hwclock --systohc --utc # echo archlinux > /etc/hostname # mkinitcpio -p linux |
这些步骤都做完后,就基本安装完成了。设置一个 root 密码( passwd
命令),再安装 bootloader 就可以重启进入新系统了。bootloader 我选择的是 syslinux,简单易用:
1 | # pacman -S gptfdisk # pacman -S syslinux # syslinux-install_update -i -a -m # nano /boot/syslinux/syslinux.cfg ... LABEL arch ... APPEND root=/dev/sda1 rw ... |
注意要把 /boot/syslinux/syslinux.cfg
中的 root=/dev/sda3
改成你相应的设备路径(我这里是 /dev/sda1
),不然是启动不了的。
最后,由于网络使用的是 VirtualBox 的 NAT 方式,需要把 dhcp 服务打开:
1 | # systemctl enable dhcpcd.service |
最后,退出 chroot
,卸载 /dev/sda
,重启就可以进入新系统了。注意重启时按 F12 选择启动媒介,或者在虚拟机配置里把安装镜像文件卸下。
1 | # exit # umount /dev/sda # reboot |
Arch Linux 上安装 SSH 客户端和服务器非常简单,直接 pacman -S openssh
搞定。装好也基本不需要配置什么就能用了,如果你想了解更多细节,可以去 这里 看看。启动 SSH 服务器可以用 systemctl start sshd
;想要开机启动 SSH Daemon 的话,可以用 systemctl enable sshd.service
,相当方便。
由于网络使用的是 NAT 方式,因此需要在 VirtualBox 配置路由转发。在 Windows 上 ipconfig
一下,可以发现有一个叫 VirtualBox Host-Only Network 的网络接口,IP 为 192.168.56.1 ,我们要做的事情是把发往这个接口的数据包转发到虚拟机上。在 Arch 里面可以用 ip addr
观察 eth0
接口的 IP ,然后在 VirtualBox 的设置页面 => 网络 => 端口转发页面填入相应的规则。端口 36000
任填。
终端工具推荐用 XShell ,功能跟 SecureCRT 一样强大,但是配色方案和界面更佳。通过 SSH 连虚拟机,只需要把主机填为 192.168.56.1
,端口为你刚才在端口转发页面设置的端口,我这里为 36000
。
好了,大功告成,可以连接上了!下图中的 Banner 可以在 /etc/issue
中写入,再配置一下 sshd_config
的 banner /etc/issue
就可以啦。
然后就可以在 Windows 下用 XShell 为所欲为啦。推荐一下我最喜欢的编程字体 Consolas,11px 或者 13px 效果最佳,在 Windows 下搭配 MacType,显示效果实在是很赞。
Samba 是什么东西?一开始我还以为是巴西的桑巴舞,不过这可不是什么舞蹈,而 是先驱们带着解放 Windows 的理念产生的软件。Samba 官网 的 slogan 写着,“Opening Windows
to a Wider World”,为的是解决 Windows 与其他系统的互操作性。简单的说,就是在各种 *nix 系统上实现 CIFS 协议,使得可以在 Windows 上自由地操作操作 *nix 的文件系统。
Samba 用起来可以非常复杂,Orelly 甚至有一本书专门在讲 Samba ,我也看文档看了很久,找了一些方法才能实现 Windows host 访问 Arch Linux 上的 nmbd
和 smbd
服务的方法。下面从安装 Samba 开始,一步步讲到最后实现 Windows 访问 Linux 下的文件系统的方法。
安装 Samba 很简单,得益于方便的 pacman
和 Arch 仓库,只需要 pacman -S samba
就可以完成安装。然后需要配置 smb.conf
文件。
1 | cp /etc/samba/smb.conf.default /etc/samba/smb.conf vim /etc/samba/smb.conf |
要让 Windows 访问到 Arch 上的 Samba,还需要为虚拟机配置第二个网络接口,并设为“host-only”。
鉴于我们的使用场景不需要涉及太多安全相关的因素,因此不需要怎样修改配置就可以让服务跑起来。需要做的改动有:
1 | [global] workgroup = WORKGROUP ; 可以从“我的电脑” => 属性页得到 printcap name = /dev/null ; 避免 snmb 找不到 printcap 文件来刷 /var/log/smdb.log load printers = no ; 不用打印机 [homes] create mask = 644 ; 新建文件的权限,我不喜欢默认的744 |
Samba 配置文件中有很多个区域。区域就是你连接 Samba 服务时使用的路径名,如 \\archlinux\onlyice
,则是寻找名为 archlinux
主机的 onlyice
区域。一个区域的定义类似下面:
1 | [myshare] comment = Mary's and Fred's stuff path = /usr/somewhere/shared public = no writable = yes printable = no create mask = 0765 |
如果你想在 Windows 上访问的是你在 Arch 里的 home
文件夹,那 Samba 提供的 [homes]
区域,可以使我们不用在配置文件中新建一个区域。Samba 提供这样一种 机制,假如登陆 Samba 服务的用户请求的区域不存在于配置文件中,那会以它的访问区域去查找相应的 Uinx 用户名,如果存在,则把该请求要访问的路径定位到该用户相应的 home
文件夹中。
举个例子,我现在用的是 onlyice
用户登陆到我的 Arch 上,Arch 主机名设为 archlinux (/etc/hostname
),我可以新建一个同名的 Samba 用户:
1 | # sudo pdbedit -a -u onlyice Unix username: onlyice NT username: Account Flags: [U ] User SID: S-1-5-21-3405075602-549605461-1107328842-1000 Primary Group SID: S-1-5-21-3405075602-549605461-1107328842-513 Full Name: onlyice Home Directory: \\archlinux\onlyice HomeDir Drive: Logon Script: Profile Path: \\archlinux\onlyice\profile Domain: ARCHLINUX Account desc: Workstations: Munged dial: Logon time: 0 Logoff time: Wed, 06 Feb 2036 23:06:39 CST ckoff time: Wed, 06 Feb 2036 23:06:39 CST password last set: Sat, 17 Aug 2013 23:12:13 CST Password can change: Sat, 17 Aug 2013 23:12:13 CST Password must change: never Last bad password : 0 Bad password count : 0 Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF |
这样隐式创建了 [onlyice]
,不会在 smb.conf
中体现,但是可以通过 \\archlinux\onlyice
访问到,而且设置的属性与 [homes]
的一致,path
指向的是 /home/onlyice
。
然后就可以在网上邻居中发现 ARCHLINUX
主机的 onlyice
共享文件夹啦:
如果网上邻居没有发现 ARCHLINUX
主机,试着在地址栏输入:
\\192.168.56.101\onlyice
其中 192.168.56.101
是你的 Arch 的 host-only
网卡的 IP 地址,可以通过 ip addr
获得。
然后就可以在 Windows 和 Arch Linux 同步修改文件啦:
至此,整个安装 Arch Linux ,配置 ssh daemon,配置 Samba 的过程结束,整个过程消耗了四五个钟,主要花在 Samba 这块。SSH 的配置之前有了解过,而且 openssh
和 samba
安装好后不需要怎么配就可以顺利跑起来,还是挺爽的。这篇文章也从中午 12 点开始写到现在半夜 12 点多。
最后,推荐一下一个小网站,可以用文字生成各种样式的 ASCII Art ,这篇博文的第一张图片就是这个网站生成的。