用scp、rsync快速上传文件到SourceForge

其实在我跑到GitHub上开项目之前我都是泡在SourceForge的,后来墙好像盯上了SF.net(现在已经没有封锁SF了!),而且SF当时不支持git管理,只支持svn(虽然我蛮喜欢svn的),我就屁颠屁颠跑到GitHub上感受git的伟大精神去了。

可惜GitHub的速度HTTP下载不够快,有时候需要托管一些大文件,比如Android的固件ROM什么的(鄙人还制作了一个Macis Linux,基于Puppy的发行版,ISO也是贼大的)。之前都是上网用SF的HTML5上传器上传,今天突然觉得这样效率不够给力啊,还要进网页翻目录,然后点Add Files的,有点烦。看到一行小字提示我可以用SCP、Rsync等方式上传(官方网页),下面说说我用的scp方式上传吧。

scp ICS_W30_HatMod2.0beta1_signed.zip librehat@frs.sourceforge.net:/home/frs/project/ramosroms/W30

第一个参数是上传的文件,librehat是我在SF的用户ID,后面ramosroms是项目名称,W30是项目下面的目录(以此类推)。其它的地方就不用改了。当然是终端里面输入。首次使用scp会提示要添加SSH密钥,yes回车,然后输入SourceForge的密码确认身份和权限就会开始上传了。

scp

上传速度还不错,蛮快的。如果是Rsync方式上传的话:

rsync -e ssh ICS_W30_HatMod2.0beta1_signed.zip librehat@frs.sourceforge.net:/home/frs/project/ramosroms/W30

就把前面的scp指令改成rsync -e ssh而已。我就没有测试Rsync了,scp已经够简单易用了!

再次说一下我这个Ramosroms项目吧,是我在SourceForge上创建的非官方固件项目,如果你也是蓝魔平板的固件开发者,欢迎联系我,我可以把你加入到这个项目中,这样大家都能简便地集中固件在同一个地方供机油们下载!(你不需要掌握Linux,你可以在Winodws下用任何一个浏览器打开SourceForge用网页上传的方式,速度也很快,只不过不能上传超过1G的文件……囧……哪会要用到1G的东西啊?)

小型KDE桌面Linux系统Slax 7.0塞入U盘体验记

我知道这个题目挺拗口的……Orz…

Slax GNU/Linux的网站: http://www.Slax.org

这是一个小型的KDE桌面环境的Linux发行版,基于Slackware制作而成!210MB的体积(中文版的体积为220MB)!驱动什么的都很齐全!KDE 4.9.4!

说说我怎么把它塞入U盘的吧,我这里是有一个专门装好GRUB2引导程序的U盘了,作为我的多功能启动U盘,关于怎么给U盘装GRUB2的话网上应该有,没有的话也很简单,就是在Linux下面grub-install而已……只不过最好用EXT2/3/4分区格式。

然后修改grub2的配置文件,加上下面这几行。

menuentry '啟動Slax 7.0作業系統'{
 load_video
 set gfxpayload=keep
 insmod gzio
 set root='(hd0,msdos1)'
 echo '裝載映像中...'
 linux /slax/boot/vmlinuz load_ramdisk=1 prompt_ramdisk=- rw printk.time=0 slax.flags=perch,xmode quiet
 echo '創建虛擬磁碟中...'
 initrd /slax/boot/initrfs.img
 }

唯一要注意的就是linux那一行的slax.flags参数,perch表示不保留更改保留更改(去掉perch将以LiveCD的形式运行),xmode表示进入图形化界面(KDE),还可以加入toram参数表示复制到内存中运行(这样就能在启动后把U盘拔出来,而且系统的运行速度会快一点,嘛,USB 3.0的可以忽视快一点的说法)。

当然不要忘记复制系统文件了!在官网下载简体中文版的zip包,将slax文件夹解压出来复制到U盘根目录就可以了。如果你跟我一样有强迫症,不要多余的文件的话,那么可以到slax下的boot文件夹中,将除了vmlinuz和initrfs.img以外的文件都删掉。

下面是简短的评述和截图

启动后的界面,典型的KDE风格
桌面的软件仓库打开,提示软件仓库还没有准备好呢……
Firefox预装了FXChrome主题,一开始看去被吓到了。。。

这个系统虽然个头比Slitaz和Puppy之类的要大得多,但是驱动非常齐全。我的电脑上硬件全部识别工作正常(Puppy对我的显卡和无线支持不好,Slitaz就更不用说了,驱动方面渣渣的)。而且作为KDE粉,难道不应该让自己用的所有Linux都是KDE么?(奸笑中……)

扩展方面的话,我看了一下zip下的几个sb文件,都是squashfs文件,应该按照它们的结构自己做扩展放进去就能被自动加载的,不用担心。待我研究好了告诉各位,目前是想把Avast!这个杀软和GParted分区软件做成sb文件塞进去,这样就能让我的Slitaz下岗了。。。

编译CM10 for W22PRO的相关过程记录

先说一下git的操作好了,这个git其实我也是今年刚开始用,之前都是用svn的(subversion其实也不太会……说来这些版本控制工具我都记不住指令啊……)。

因为蓝魔W22PRO用的是Amlogic MX(meson6)方案,而Christiantroy已经专心耕耘艾诺精灵2很久了,他在github上的很多项目,只要有jellybean-aml分支的基本就是需要fetch拿来用的。不过有一点问题的就是,最近这位大哥在搞CM10.1去了,repo都没有更新上游(CyanogenMod)的改动,所以其它的部分如果用CyanogenMod的上游代码就会造成一些问题。还好有强大的git帮我们合并这些更改。

首先进入一些需要为Amlogic修改的目录(因为我已经做了这项工作了,减轻了各位的压力,大家直接fetch我的那些github项目就好了),git checkout jellybean-aml 确保在jellybean-aml这个分支里面,然后git remote -v看一下有没有上游CyanogenMod的repo,没有的话得先git remote add NAME git://XXXXXX 添加一个NAME远程仓库(这些全部大写的字母都是可以自行变动的),然后git fetch NAME把源码下载到本地,只需简单的一个git pull NAME jellybean就能把NAME仓库的jellybean分支合并到当前分支(jellybean-aml)了!如果有冲突的话会提示的,一般不会有冲突会自动merge并做一个ref节点,如果你没有自己开项目就这样好了。如果有的话(比如我),就需要git push MINE提交这次变动到自己的远程仓库(MINE)。再说一下啦,我已经做过这项工作了,短期内大家直接取我的项目源码就可以了。

上面讲了那么多git的废话……下面讲一下编译。

如果你还没有W22PRO的源码,请上我的非官方项目clone下来到合适的位置(如果你这不知道就不要看这篇文章了,谢谢……)

cd /PATH_TO_CM/
 . build/envsetup.sh
 lunch
 make -j4

老掉牙的几个步骤……lunch菜单选择cm_w22pro-userdebug那个就好了(输入数字回车),make -j4表示用四个线程并行编译。

在我的笔电上每次从头完整的编译要2~3个小时。我的硬件配置?AMD 四核 2.0GHz,4G RAM(显然有点小,为了避免内存消耗完毕而出错终止,强烈建议创建一个swap分区或者swap文件,大小至少1G,建议4G以上)。

还没有开始编译的记住了,放CM/Android源代码的那个分区建议40G以上,而且必须是EXT2/3/4或者BtrFS、XFS之类的Linux分区!

批量删除软链接

find -type l -delete [PATH]

上面这条命令就可以将[PATH]路径下的所有软链接都删除掉。

用的是find这个Linux下非常实用的命令,type参数限定了文件类型为l(links),加上-delete删除参数就可以实现找出所有软链接并删除。

如果是要删除失效的软链接,需要加上一个-L参数,表示追踪软链接:

find -L [PATH] -type l -delete

我只所以需要删除全部的软链接是因为现在制作W22PRO的ROM遇到一个小麻烦,因为没有Bootloader和内核源代码,所以不能make otapackage生成zip刷机包,只好直接拿编译出来的system目录操作,但是这个目录下包含了太多软链接了,直接拿来压缩会得到一个巨大的zip包,所以必须先删除软链接(这些软链接将会通过刷机脚本updater-script重新生成),终于Google到了上面这条命令,非常实用,特此记录下来。

编译蓝魔W30的CM10之源码准备

大体参考CM的Wiki: http://wiki.cyanogenmod.org/wiki/Galaxy_Nexus_%28GSM%29:_Compile_CyanogenMod_9_%28Linux%29

提示一下就是repo这个脚本需要翻墙才能下载成功。

下面简单写一下终端操作的笔记:

#获取CM10的代码
repo init -u git://github.com/CyanogenMod/android.git -b jellybean
repo sync
#获取三星Galaxy S III的源码(因为W30的CPU和Galaxy S III是一样的,这里偷懒直接用CM的脚本获得相关源码)
. build/envsetup.sh && breakfast i9300
#获取CM的预编译文件
vendor/cm/get-prebuilts

好了,现在要做的就是这么多了。接下来就是对Galaxy S III的设备源码部分进行修改,使之匹配W30, 当然,要新开一个目录,等我初步完成后会在github上托管的,到时候还会回来更新本篇文章。 W30开源项目 (fork & play!)

还需要获取三星的部分专利源码,找了半天,终于在GitHub找到了一个项目有的,

git clone git://github.com/TheMuppets/proprietary_vendor_samsung.git -b jellybean

同步这个项目后,把里面的文件夹都放在vendor/samsung/下面,然后修改vendor/samsung/smdk4412-common/proprietary/Android.mk这个文件,把ifneq ($(filter i9300 n7100 n8000 n8013,$(TARGET_DEVICE)),)改成ifneq ($(filter i9300 n7100 n8000 n8013 w30,$(TARGET_DEVICE)),) ,也就是在filter后面加上w30,不然的话不能正确调用一些共享依赖库会编译出错。

SoftMaker Office 2012 for Linux

一家德国的Office企业现在提供Linux下的办公套件了!现在还有30天免费试用(不用白不用哈)!SoftMaker Office类似于国内的永中Office和WPS Office,目前该套件包含文字处理、表格处理、演示文档处理三个程序。相信德国人严谨的作风,加上这是一套付费商用软件,质量应该还是靠谱的。

网址传送:http://www.softmaker.com/english/ofl_en.htm

系统要求:不限发行版,要求PC平台(x86架构的CPU),Glibc版本在2.2.5(含)以上。

提醒一下的是,虽然提供了64位的二进制包,但是这个软件是32位版本,也就是64位系统上会要装ia32的相关组件(RPM/DEB都会自动检查依赖关系,不用担心)。

就这三个应用程序,图标还不错,但是打开就……丑爆了……

丑翻了,此应用程序显然不是GTK+也不是Qt写的!

随后测试了一下几个docx文档,字体名字可能需要自己映射一下,不然打开文档后中文字要设置字体才能显示。试了几个英文文档,效果也只能说一般。个人觉得,还是用WPS吧……

制作蓝魔W13PRO兼容包笔记

因为没有W13PRO的机器,靠论坛的朋友测试,制作了五次兼容包才成功。下面简单说一下心得什么的。

底包都是Christiantroy为艾诺精灵II制作的固件(CM10和AOKP),兼容包里面的东西是取自之前夜游(wisunny)编译的AOKP(尝试过官方固件的东西,根本开机都不行。。。),想研究的话,大家可以拆开我的兼容包,对照本笔记还是很有帮助的。

首先要解决的是内核,直接拿夜游的boot.img就可以了,我尝试解开boot.img结果发现失败了,还不知道怎么回事,可能做过什么加密之类的吧。

其次让我们进入system目录下吧,lib下的libhardware_legacy.so这个文件是和WiFi的驱动加载有关的,这个文件决定了开启关闭WiFi要加载和卸载的驱动模块,因为底包的WiFi驱动都是dhd.ko,而W13PRO用的WiFi驱动是wlan.ko!

usr/idc下面那个pixcir168.idc文件是和触摸屏有关的,也必须带上。

lib/modules下都是对应内核的模块,直接从夜游AOKP里取的,etc文件夹下的东西大家看一下就明白了,只是提一下里面be_movie和be_photo是SONY Bravia Engine,不算“兼容”的内容,应该算做“补丁”部分。

bin下面的set_display_mode.sh是很关键的,设置屏幕分辨率的,如果数值不对会造成显示画面太小或者太大。

回到第一层,META-INF/com/google/android/updater-script这个脚本文件包含了刷机时要做的事情,如果有人修改了补丁包重新打包,记得要看看该更改权限的地方有没有更改。最外面的addition脚本文件则是针对build.prop进行修改的,用的是sed这个强大的文字处理工具,其实我也不太懂sed,边Google学边写的。

最后说一下刷GApps失败的问题,估计是万恶的system分区(UBI格式)没有被成功加载,所以我解包重新修改了updater-script的相关函数。

另外要提到的就是/sbin/下可能并没有sh这个文件或者其软链接,因此脚本文件的首行的#!/sbin/sh应该改成#!/system/bin/sh,以免脚本文件根本无法执行。

下载地址神马的上蓝魔之家去看我的帖子

Android手机平板上设置Exchange收发Hotmail(Outlook)邮件

现在微软的邮件服务已经升级到outlook.com了,不过原来的hotmail还暂时保持了服务。

不喜欢Hotmail的客户端怎么办呢……用Android自带的“电子邮件”这个应用就可以了。

  • 新建一个Exchange用户
  • 域用户名那一栏填写“XXXX@outlook.com”或者”XXXX@hotmail.com”就可以了(不包含引号)
  • 密码填邮箱密码
  • 服务器地址填  m.hotmail.com

可以啦,其他的不用改动,然后设置一下要同步的内容,我是只勾选同步电子邮件,毕竟日历这些我还是靠Google提供的服务完成的。

Fedora下设置Samba共享NTFS分区文件笔记

今天折腾了好久,终于在Fedora下成功设置好了Samba服务,并且能够共享NTFS分区的文件了。

smb.conf的设置大家自行Google,这里只是说一些非常值得注意的地方。

首先为了能正确共享软链接,[global]字段内必须有如下三行:

        follow symlinks = yes
        wide links = yes
        unix extensions = no

第一行是让samba服务器识别软链接的指向,第二行是允许目标在非共享目录下,第三行no表示将软链接解析的工作由Samba服务器而不是客户端完成。

可是设置后发现死活不能识别,后来原因找到了……因为文件名不符合常见的UNIX规范(也就是没有空格和特殊符号),里面有一个’符号,Linux下用”转义表示了,貌似Samba不能处理这类路径,所以没有显示出来。

后来我改了名字,能看到了,但是不能访问,感觉像是没有权限。仔细一想NTFS分区又没有像EXT3/4这样能设置用户权限的,Google果然发现了几个解决办法,其中一种是将Samba访问用户设置和root一样的权限,我这里是添加了一个名为Guest的专门用来访问Samba共享的用户,自认为比较安全。因为禁用了它的Home目录,也让其无法登录本机,所以给了root权限以便访问NTFS分区。

修改/etc/passwd文件,我这里把Guest用户改成了如下样子:

Guest:x:0:0::/dev/null:/usr/bin/false

0:0这里表示和root用户一样的权限,/dev/null是家目录,/usr/bin/false是让其无法从控制台登录。

当然如果你没有设置用户的话,还是先useradd添加一个专门用来共享的用户吧,这样比Samba改为Share暴露在网域中要安全多了。

设置Samba共享,就能用Android等移动设备直接访问电脑上的共享资源(电影、电视剧、音乐等),不用一部一部拷贝到机器上来播放了,省力~

Rekonq、Konqueror也能听QQ音乐,登录支付宝

突然只是觉得国内的网站对Linux支持还是不够好,不够细化。

例如QQ音乐和支付宝。

QQ音乐明明就一个HTML5技术做的Web音乐播放器,检测浏览器标识还不如检测是不是支持HTML5 mp3格式的audio类型,rekonq、konqueror(要用webkit渲染)把浏览器标识改为Chrome就能正常播放QQ音乐了。当然类似的像qupzilla这些都是可以的。不过要装好gstreamer的插件,不然不支持mp3还是播放不出来。

支付宝的控件就更有意思了,支持Linux的话就是一个NPAPI插件,很多Linux浏览器都支持加载这类插件,为什么一定要限制用Firefox、Chrome、Opera(我之前用Opera还不行)呢?今天Firefox在系统升级后就有问题启动不了,用的rekonq,后来登录支付宝不成功,我抱着试试看的心态改了浏览器标识为Firefox——结果就成功了(当然前提是系统已经装了Alipay的Linux插件)……

在HTML5格式的支持上,Linux系统可以说绝对超前于Windows,虽然这些小众的浏览器功能不如FF、Chrome这些强大,但对基本的插件和HTML5的支持还是很好的。检测浏览器标识来代替对功能支持的检测真是X%#%#$%^省略千言!