Buffalo LS-WVL/E是一个双盘位的网络存储器NAS,硬件配置不错,价格也比较便宜,网上有很多改机的教程,可玩度比较高。
为了给它装上git,我花了几天的时间,在网上搜寻许久,终于成功装上了git。主要的困难就是ssh的配置问题。
我只用了一块硬盘,安装在盘位1上。如果将硬盘安装在盘位2上,重启后安装的软件会丢失。
本教程基于1.64原版固件(其它版本未测试)。
要用到的几个工具软件:
acp_commander.jar http://download.youkuaiyun.com/detail/photondragon/5204545
PuTTY.exe http://download.youkuaiyun.com/detail/photondragon/5204553
一。改机root
1. 在盘位1装上一块全新硬盘(没分区的盘)。
2. 启动NAS,然后按下机器后面function,这会把机器还原为出厂设置并格式化硬盘(慎:这会清除硬盘上的所有数据,如果你的硬盘上有数据,要先备份)。过了几分钟,设置完成后NAS自动重启。打开浏览器,输入NAS的地址(默认是192.168.1.100),如果能打开设置界面,就表示NAS准备就绪了。
3. 准备一台windows机器,关闭windows防火墙。安装jre,地址http://java.com/zh_CN/download/manual.jsp
4. 下载acp_commander.jar。打开windows命令行,切换到acp_commander.jar所在的目录,输入以下命令以测试机器能否破解
java -jar acp_commander.jar -t 192.168.1.100 -ip 192.168.1.100 -pw password -c "ls /"
注意-pw后的参数"password"是web设置界面admin用户的登录密码,默认就是password,如果成功的话就能看到输出的根目录列表了!
5. 把root密码改为123456,你也可以改成别的。
java -jar acp_commander.jar -t 192.168.1.100 -ip 192.168.1.100 -pw password -c "(echo 123456;echo 123456)|passwd"
6. 修改sshd设置以允许root用户登录
java -jar acp_commander.jar -t 192.168.1.100 -ip 192.168.1.100 -pw password -c "sed -i 's/PermitRootLogin no/PermitRootLogin yes/g' /etc/sshd_config"
7. 修改sshd设置,关闭PAM
java -jar acp_commander.jar -t 192.168.1.100 -ip 192.168.1.100 -pw password -c "sed -i 's/UsePAM yes/UsePAM no/g' /etc/sshd_config"
8. 重启ssh服务
java -jar acp_commander.jar -t 192.168.1.100 -ip 192.168.1.100 -pw password -c "/etc/init.d/sshd.sh restart"
现在你可以用ssh登录LS-WVL了。
(注:以上几条命令可能会出错,注意看屏幕输出。如果对还有什么疑问,可以参考这篇文章http://i.592.net/?post=360,或者google一下,网上有很多关于改机的文章。)
二。安装git软件
1. 用PuTTY登录LS-WVL/E(默认地址192.168.1.100),用户root,密码是你在第一部分的步骤5设置的。
2.输入以下命令:
mkdir /mnt/disk1/temp
cd /mnt/disk1/temp
wget http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/ls-mvkw-bootstrap_1.2-7_arm.xsh
sh ./ls-mvkw-bootstrap_1.2-7_arm.xsh
ipkg update
ipkg upgrade
ipkg install git
三。配置
这部分操作是创建并配置好一个用户,使其能通过ssh登录系统,专门用于进行git相关操作
1. 以root登录,创建git用户
groupadd git(创建组git)
useradd -g git -m git(创建用户git,属于组git,同时创建用户主目录/home/git)
passwd git(设置git用户密码)
然后根据提示输入两遍密码
2. 修改ssh服务器的配置文件/etc/sshd_config,输入
vi sshd_config
然后编辑如下参数设置
StrictModes no(如果.ssh目录及相关文件的权限和拥有人owner等都能严格正确设置,可以设为yes)
UsePrivilegeSeparation no(这是必须的,否则git用户无法登录)
PermitUserEnvironment yes(必须的,使ssh加载用户自定义的环境配置文件)
3. 配置git用户环境变量文件,设置PATH(如果不设置好用户的PATH,运行git命令将提示"command not found")。
输入如下命令:
cd /home/git(进入用户git的主目录)
mkdir .ssh
echo PATH=/mnt/disk1/.optware/bin:/opt/bin:/opt/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin >> .ssh/environment
chown -R git.git .ssh(更改.ssh目录及其中文件的owner为用户git)
chmod 700 .ssh(更改.ssh目录的权限)
chmod 600 .ssh/environment
4. 创建git项目的存储目录。输入命令
mkdir -m 777 /mnt/disk1/gits(创建目录gits来存放所有的git项目,权限777)
5. 重启sshd(见第一部分步骤8),然后用PuTTY以git用户登录,应该就能登上了。
四。测试
1.通过ssh以用户git登录,创建一个git项目testproj。输入命令
mkdir /mnt/disk1/gits/testproj.git(创建项目的目录)
cd /mnt/disk1/gits/testproj.git
git init --bare(初始化git仓库)
2. 在windows客户机上安装tortoiseGit和mysisgit并设置好,你就可以从服务器上clone项目testproj了。(具体操作不在本文讨论范围,请自行google之)
如果客户机是linux或mac,并且安装好了git,你可以直接输入命令
git clone git@192.168.1.100:/mnt/disk1/gits/testproj.git
回车后输入用户git的密码,就把testproj项目给clone下来了
五。其它
用vi来编辑/etc/init.d/sshd.sh,输入以下命令
vi /etc/init.d/sshd.sh
移动光标,在sshd_start()方法中找到“nas_configgen -c sftp”这一行,将光标移至行末,按a键,然后在这行之后插入一行:
sed -i 's/allowssh no/allowssh yes/g' /etc/sftponly_config
按ESC键,输入":wq"(双引号中间的3个字母)然后回车,这就保存退出了。