在 Linux 系统中,内建有非常多、而且好用的指令,对於一个软体开发人员来说,透过 Linux 系统,可以很方便的写出各式各样的 script ,去自动化完成日常生活的工作,当然并不是说 Windows 就没办法达到自动化的工作,只是两个作业系统的作业方式落差太大,如果可以有一套软体,可以将 Linux 上的指令移殖到 Windows 上,那么就可以让 Linux 开发人员,快速的将自动化 Script 搬到 Windows 上执行,未来工程师只要学习一种系统指令即可,而目前就有一套软体叫 Cygwin,他可以让我们在 Windows 上执行大部分 Linux 的程式与指令。
Cygwin 下载网址: https://www.cygwin.com/
下载后,会有个档案 setup.exe ,点击两下安装就可以了,过程中,会要求你自订想要安装软体,通常我一定会选 openssl, wget, vim, screen, git 等等 ,下图为安装 Cygwin 过程。
Cygwin 基本操作
打开 Cygwin 之后,你就可以开始使用 Linux 指令,例如 cd, ls, mkdir, grep, find, awk, man, pwd, screen, df,dd, fdisk, mount, umount,如果你有哪个常用的指令,无法使用,有可能是你还没有安装那个软体,那么你就再次点击 Cygwin 安装档,寻找软体名称,再重新安装一次即可。
wget
wget http://www.google.com.tw/
wget 是一个下载工具,可以下载网路上的任何一个档案。
Vim
vim test.txt
vim 是 Linux 的纯文字编辑软体,如果你习惯用 vim 编辑,那么只要安装 cygwin 就能重温 Linux 上 vim 编辑的快感。
启用 SSHD
OpenSSH Daemon : 这是 Linux 多人 Terminal 软体, 有了 SSHD 之后,你就可以登入 Windows 里的 Cygwin Terminal,远端操控 Windows 系统 。
安装 SSHD
- chown yourAccount:Users /var
- ssh-host-config -y
- cygrunsrv -S sshd
问题1: chown: changing ownership of ‘/etc/ssh_config’: Permission denied
解决方式为,使用 Administrator 的方式开启 cygwin
问题2: cygrunsrv: Error starting a service: QueryServiceStatus: Win32 error 1062:
The service has not been started.
解决方式为 "chmod 400 /etc/ssh_host_ecdsa_key"
如何在 Cygwin SSHD 中建立一个新帐号
先去 Windows 建立一个帐号,如 admin,请记得这个帐号的密码。再到 Cygwin 中使用 mkpasswd,将 windows 的帐号复制到 windows。
/bin/mkpasswd -l -u admin >> /etc/passwd
完成后,你就可以用 admin 的帐号,密码来登入 Cygwin。
在 Cygwin 中建立一个 Socks Tunnel,让远端电脑能够透过这台 Windows 上网。
ssh -vvvND 192.168.56.99:1080 Administrator@192.168.56.99
e2fsprogs
e2fsprogs 是 Cygwin 中的硬碟格式化工具,可以从 Cygwin 安装工具中搜寻到这个软体,安装好之后,就会有 mkfs, mkfs.ext3 等指令可以使用。
将硬碟格式化成 ext2/ext3/ext4 格式
mke2fs /cygdrive/c/Users/xxx/VirtualBox\ VMs/xxxx/xxxx.hd
mkfs.ext3 /cygdrive/c/Users/xxx/VirtualBox\ VMs/xxxx/xxxx.hdd
dd if=image.dd of=/cygdrive/c/Users/xxx/VirtualBox\ VMs/xxxx/xxxx.hdd
sfdisk, fdisk
硬碟检视工具
sfdisk -dump /cygdrive/c/Users/xxx/VirtualBox\ VMs/xxxx/xxxx.hdd
fdisk -l /cygdrive/c/Users/xxx/VirtualBox\ VMs/xxxx/xxxx.hd
mount
mount "c:\Users/xxx/VirtualBox\ VMs/xxxx/xxxx.hdd" /home/xxx/hdd