手机通过笔记本电脑无线网卡联网
比方,笔记本通过有线宽带(或3G上网卡)联网,而现场没有无线路由器,这时我们的手机如何通过笔记本电脑联网?
我们知道,无线网卡支持AD-hoc模式(即点对点模式),将两台电脑的无线网卡设置为Ad-hoc模式,即可让它们通过无线网卡直接连网(不必通过无线路由器的支持)。
但是安卓手机并不支持windows的ad-hoc模式,我总结了下,要让安卓手机支持ad-hoc模式,有两种:
1. 通过替换手机的/system/bin/wpa_supplicant文件,使得手机支持ad-hoc模式,我反复试了后,发现部分手机并不可行,导致WLAN无法关闭,或是无法激活,故而放弃。强烈建议不要使用替换wpa_supplicant的方式。
2. 通过在手机上安装busybox, adhoc switcher两个工具,实现手机支持windows的AD-hoc网络,我的手机是联想A789, 通过此方法实验成功,特此分享出来。
故本文描述通过方法2实现目标。
手机上的准备工作:
1. 对手机进行root处理,请自行参照网上的教程,此步的目的是为了顺利安装busybox(busybox需要有root权限,而adhoc switcher需要busybox的支持。Busybox就是给安卓的linux系统扩展出一些额外的命令),可参照:http://shuaji.lexun.cn/article/4768
2. 给手机安装busybox, adhoc switcher两个工具。提示获取超级用户权限时一律点击允许。
3. 配置笔记本电脑的无线网卡模式为AD-hoc
右键点击桌面上的网上邻居图标,选择属性,打开网络连接配置窗口。
右击“无线网络连接”图标,选择属性,切换到“无线网络配置”选项卡,选中“用windows配置我的无线网络设置”。再点击下方高级按钮,选中“仅计算机到计算机(特定)”, 清除“自动连接到非首选的网络”复选框。再点击关闭,返回到“无线网络配置”选项卡中。
接下来添加一个点到点无线网络访问点:点击“添加”打开无线网络属性对话框,网络名(SSID)输入wap, 或输入你自己喜欢的名称即可。网络身份验证选择开放式,数据加密选择为WEP, 清除“自动为我提供密钥”复选框,然后在网络密钥中输入5个字符,如5个6。最后点击确定。
然后回到“网络连接”窗口中,右击“无线网络连接”,选择“查看可用的无线连接”,即在无线列表中显示出一个名为wap的电脑图标形式的无线连接,选中它并点击下方的连接按钮,等待windows连接之(这一步实质上是正式启用电脑的adhoc连接点)。好了,到这电脑上的配置就完成了。
4. 共享笔记本电脑的有线连接或3G连接,我的笔记本使用中国电信的3G上网卡上网的,无线网卡暂时处于空闲状态。
在网络连接窗口中的本地连接或USB-KEY DIAL图标上右击,选择属性,再切换到高级选项卡中,选中“允许其它网络用户通过此计算机的internet来连接”,如果出现提示“请选择一个专用网络”,请选择“无线网络连接”,确定后计算机上的设置就完毕了。
5. 配置安卓手机上的adhoc switcher:
首先打开手机的WLAN, 启用adhoc switcher, 连接两次点击“continue”,再点击“Switch to Infrastrcture mode”切换至普通的模式(此步的目的是为了便于输入网络SSID,密钥等信息, 如果没有看到Switch to Infrastrcture mode, 请点击try to switch to Ad-hoc mode, 再点击Switch to Infrastrcture mode)。
再点击最下方细长条的灰色按钮(不是很醒目,需仔细辨识,我第一次并未发现这个按钮,害得我困惑了半天,建议作用将此按钮设置明显一些)。
点击SSID for Ad-hoc mode, 输入网络名称 wap
选中Use WEP encryption 复选框
点击Set WEP Key ,输入我们设置的网络密钥,如我设置的是66666
设置完毕以后,返回到adhoc switcher主界面中,点击try to switch to Ad-hoc mode,稍等片刻,即可连接上笔记本电脑的无线网卡。
如果在设置中遇到问题,可联系信箱zhangxugg@163.com, 笔者使用此方法,就可以使用电信3G上网卡联网,而不再使用昂贵的手机流量了,何乐而不为呢?
1 需求
硬件需求:一台Ubuntu或者debian电脑(虚拟机),能通过网络访问到。
软件需求:git-core, gitosis, openssh-server, openssh-client
2 安装配置git服务器
安装git和openssh:
a@server:~$ sudo apt-get install git-core openssh-server openssh-client
新加用户git, 该用户将作为所有代码仓库和用户权限的管理者:
a@server:~$ sudo useradd -m git
a@server:~$ sudo passwd git
建立一个git仓库的存储点:
a@server:~$ sudo mkdir /home/repo
让除了git以外的用户对此目录无任何权限:
a@server:~$ sudo chown git:git /home/repo
a@server:~$ sudo chmod 755 /home/repo 注:此处要把git仓库repo的属性设置成755,不然在gitweb中一直无法找到工程
3 安装配置gitosis
初始化一下服务器的git用户,这一步其实是为了安装gitosis做准备。在任何一 台机器上使用git,第一次必须要初始化一下:
a@server:~$ git config –global user.name “myname”
a@server:~$ git config –global user.email “myname@server“
安装一下python的setup tool, 这个也是为了gitosis做准备:
a@server:~$ sudo apt-get install python-setuptools
获得gitosis包:
a@server:~$ cd /tmp
a@server:/tmp$ git clone git://eagain.net/gitosis.git
a@server:/tmp$ cd gitosis
a@server:/tmp/gitosis$ sudo python setup.py install
切换到git用户下:
a@server:/tmp/gitosis$ su git
默认状态下,gitosis会将git仓库放在 git用户的home下,所以我们做一个链接到/home/repo
$ ln -s /home/repo /home/git/repositories
再次返回到默认用户
$ exit
如果你将作为git服务器的管理员,那么在你的电 脑上(另一台pc)生成ssh公钥:
usr@pc1:~$ ssh-keygen -t rsa
将公钥拷贝到服务器的/tmp下:
usr@pc1:~$ scp .ssh/id_rsa.pub git@<server>:/tmp
回到git服务器上
a@server:/tmp/gitosis$ sudo chmod a+r /tmp/id_rsa.pub
让gitosis运行起来:
a@server:/tmp/gitosis$ sudo -H -u git gitosis-init < /tmp/id_rsa.pub
Initialized empty Git repository in /home/repo/gitosis-admin.git/
Reinitialized existing Git repository in /home/repo/gitosis-admin.git/
gitosis的有趣之处在于,它通过一个git仓库来管理配置文件,仓库就放在了/home/repo/gitosis- admin.git。我们需要为一个文件加上可执行权限:
a@server:/home/git$ sudo passwd root
a@server:/home/git$ su
root@server:/home/git# cd repositories
root@server:/home/git/repositories# cd gitosis-admin.git/
root@server:/home/git/repositories/gitosis-admin.git# sudo chmod 755 /home/repo/gitosis-admin.git/hooks/post-update
root@server:/home/git/repositories/gitosis-admin.git# exit
4 在服务器上新建一个测试项目仓库
我们在服务器上新建一个空的项目仓库,叫“teamwork”。
切换到git用户:
a@server:/home/git$ su – git
$ cd /home/repo
$ mkdir teamwork.git
$ cd teamwork.git
$ git init - -bare 注:这是在服务器上运行的,是为了初始化一个根级的git仓库
$ exit
但是,到目前为止,这只是一个空仓库,空仓库是不能clone下来的。为了能做clone,我们必须先让某个有权限的人放一个初始化的版本到仓库中。
所以,我们必须先修改一下gitosis-admin.
5 管理gitosis的配置文件
刚刚提到,gitosis本身的配置也是通过git来实现的。在你自己的开发机里,把gitosis-admin.git这个仓库clone下来,就可以以管理员的身份修改配置了。
在你的电脑里:
usr@pc1:~/work$ git clone git@<server>:gitosis-admin.git
usr@pc1:~/work$ cd gitosis-admin/
该目录下的keydir目录是用来存放所有需要访问git服务器的用户的ssh公钥:
各个用户按照前面提到的办法生成各自的ssh公钥文件后,把所有人的 ssh公钥文件都拿来,按名字命名一下,比如b.pub, lz.pub等,统统拷贝到keydir下:
usr@pc1:~/work/gitosis-admin$ su root
root@pc1:/home/a/work/gitosis-admin# cp /path/to/.ssh/id_rsa.pub ./keydir/b.pub
root@pc1:/home/a/work/gitosis-admin# exit
修改gitosis.conf文件,我的配置大致如下:
[gitosis]
[group gitosis-admin]
writable = gitosis-admin
members = a@server usr@pc1
[group hello]
writable = teamwork
members = a@server b
[group hello_ro]
readonly = teamwork
members = lz
这个配置文件表达了如下含义:gitosis-admin组成员有a, usr,该组对gitosis-admin仓库有读写权限;
team组有a,b两个成员,该组对teamwork仓库有读写权限;
team_ro组有lz一个成员,对teamwork仓库有只读权限。
当然目前这些配置文件的修改只是在你的本地,你必须推送到远程的gitserver上才能真正生效。
加入新文件、提交并push到git服务器:
usr@pc1:~/work/gitosis-admin$ git add .
usr@pc1:~/work/gitosis-admin$ git commit -am “add teamweok prj and users”
usr@pc1:~/work/gitosis-admin$ git push origin master
6 初始化测试项目
好了,现在服务器就搭建完了,并且有一个空的项目teamwork在服务器上。接下来呢?当然是测试一下,空仓库是不能clone的,所以需要某一个有写权限的人初始 化一个版本。就我来做吧,以下是在客户端完成。
usr@pc1:~/work$ mkdir teamwork-ori
usr@pc1:~/work$ cd teamwork-ori/
usr@pc1:~/work/teamwork-ori$ git init 注:这是在用户端的PC上执行的,为的是初始化一个本地的版本库
usr@pc1:~/work/teamwork-ori$ echo “/*add something*/” > hello
usr@pc1:~/work/teamwork-ori$ git add .
usr@pc1:~/work/teamwork-ori$ git commit -am “initial version”
usr@pc1:~/work/teamwork-ori$ git remote add origin git@<server>:teamwork.git
usr@pc1:~/work/teamwork-ori$ git push origin master
到此为止teamwork已经有了一个版本了,team的其他成员只要先clone一下 teamwork仓库,就可以任意玩了。
usr@pc1:~/work/teamwork-ori$ su b
$ cd /home/b
$ git clone git@<server>:teamwork.git
$ cd teamwork
$ vim hello
$ git add .
$ git commit -am “b add”
$ git push origin master
$ exit
7 添加已有git项目
另外:如果你有一个现成的git仓库,想放到 gitserver上供team使用(比如你clone了一个官方的kernel仓库,想在内部使用它作为基础仓库),怎么办呢。
首先需要从你的工作仓库中得到一个纯仓库, 比如你的工作目录为~/kernel, 你想导出纯仓库到你的优盘里,然后拷贝到gitserver上去。
$ git clone –bare ~/kernel /media/udisk
然后就拿着优盘,交给gitserver的管理员,让他拷贝到/home/repo/下,同时需要配置 gitosis相关配置文件哦,这个就不用再说了吧。比如:下载ALSA库:
git clone git://android.git.kernel.org/platform/external/alsa-lib.git
git clone git://android.git.kernel.org/platform/external/alsa-utils.git
生成bare库
git clone –bare alsa-lib alsa-lib.git
git clone –bare alsa-utils alsa-utils.git
将bare 库移动到git服务器目录
cp alsa-lib.git /home/repo
注意变更所有者,以获取提交权限。
chown -R git alsa-lib.git
然后就O 了,呵呵.
8 创建gitweb
sudo apt-get install gitweb
8.1 配置 gitweb
默认没有 css 加载,把 gitweb 要用的静态文件连接到 DocumentRoot 下:
cd /var/www/
sudo ln -s /usr/share/gitweb/* .
8.2 修改配置
sudo vi /etc/gitweb.conf
将 $projectroot 改为git仓库存储目录(例如:/home/git/repositories),保存后刷新浏览器。
如果没有找到项目,你需要将$projectroot/*.git 的属性改为755,让apache用户有可读权限。可以只改你需要让别人通过web访问的那个git。http://localhost/cgi-bin/gitweb.cgi
8.3 修改/etc/gitweb.conf 内容
# path to git projects (<project>.git)
#$projectroot = "/var/cache/git";
$projectroot = "/home/git/repositories";
# directory to use for temp files
$git_temp = "/tmp";
# target of the home link on top of all pages
$home_link = $my_uri || "/";
# html text to include at home page
$home_text = "indextext.html";
# file with project list; by default, simply scan the projectroot dir.
$projects_list = $projectroot;
# stylesheet to use
@stylesheets = ("/gitweb/static/gitweb.css");
# javascript code for gitweb
$javascript = "gitweb/static/gitweb.js";
# logo to use
$logo = "/gitweb/static/git-logo.png";
# the 'favicon'
$favicon = "/gitweb/static/git-favicon.png";
# git-diff-tree(1) options to use for generated patches
#@diff_opts = ("-M");
@diff_opts = ();
8.4 配置apache2
ubuntu中默认的web目录是/var/www,默认的cgi目录是 /usr/lib/cgi-bin/,安装完成gitweb后,gitweb的gitweb.cgi会自动放置到该目录下。
如果你的cgi路径不是默认的/usr/lib/cgi-bin/,需要将gitweb安装在/usr/lib/cgi-bin中的gitweb.cgi复制到原来配置的cgi-bin路径,并在apache的配置文件/etc/apache2/apache.conf末尾加上以下内容:
SetEnv GITWEB_CONFIG /etc/gitweb.conf
<Directory "/srv/www/cgi-bin/gitweb">
Options FollowSymlinks ExecCGI
Allow from all
AllowOverride all
Order allow,deny
<Files gitweb.cgi>
SetHandler cgi-script
</Files>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.* /gitweb.cgi/$0 [L,PT]
</Directory>
8.5 重新启动apache
sudo /etc/init.d/apache2 restart
访问http://localhost/cgi-bin/gitweb.cgi
在Target->build phases->Compile Source中设置不支持arc的代码的Compile flag为“-fno-objc-arc”