Category: Linux

  • 目前Fedora 17/18的KWin和QtCurve冲突

    昨天用Fedora 17做了一次yum upgrade之后就出现了这个惨状:

    能够顺利进入KDE桌面,但是执行任何程序均会导致KWin崩溃(卡死在那里,没有任何响应,仅有鼠标指针可以移动)。一开始我不知道是KWin崩溃了,于是我装了razorqt(一个Qt写的轻量桌面环境),用openbox作WM可以顺利进入,但是一旦用KWin作WM就会出现那个卡死的问题。这才知道是KWin有问题。然后我又删掉.kde这个文件夹(这个做法害死我了,直接在razorqt里面进KDE设置不用QtCurve就好了)……这才能够回到K桌面环境下(别跟我说让我在KDE下用openbox做WM)。

    怎么发现在Fedora 18下也有这个问题的呢。。。我以为Fedora 18的软件包会比17要新,可能修复了这个问题,于是用FedUp升级了我的Fedora 17到Fedora 18……结果发现我瞎忙活了……

    至于我还删掉AMD Catalyst闭源驱动改用开源驱动这个事情我就不说了。

    最后终于发现了,是KWin和QtCurve有冲突(具体什么冲突也不知道)。T_T

    不过kernel-3.8.0和kde-4.10应该快要放到stable源了,大家等一段时间升级应该会修复这个问题。

  • Slax中关于KDE程序编译脚本的注意事项

    Slax是个非常优秀的Linux发行版,之前说过了,也介绍过制作Slax Bundle的buildscript书写。

    但是我今天在编译rekonq的时候遇到了点麻烦,一直提示出错,跑到IRC上#rekonq频道询问,人家告诉我是少了ksgmltools2,确实少了。我发邮件告诉Tomas M(Slax作者),这位仁兄告诉我Slax是特意去除这个组件的,并告诉我要在buildscript里对CMakeLists.txt打一下“补丁”,让程序编译过程去除掉Documentation(文档),这么一来我的rekonq终于编译成功了!

    去除文档的办法,是删掉CMakeLists.txt中的ADD_SUBDIRECTORY( doc ),当然我知道可以用文本编辑器去删掉,问题是您要写的是一个脚本在服务器上运行的,所以要用到一些简单的shell脚本来操作,相关行我贴在这里。

    cd ${SLAX_BUNDLE_NAME}-${SLAX_BUNDLE_VERSION}
    
    find | grep CMakeLists.txt | while read LINE; do
    cat "$LINE" | fgrep -v "add_subdirectory( doc )" 
    | fgrep -v "add_subdirectory(doc)" 
    | fgrep -v "add_subdirectory (doc)" 
    | fgrep -v "add_subdirectory ( doc )" 
    | fgrep -v "ADD_SUBDIRECTORY( doc )" >aaa
    mv aaa "$LINE"
    done

    另外一个需要注意的事情,就是对于cmake编译安装的软件,需要在cmake参数里加上 -DLIB_SUFFIX=”${SLAX_64_FLAG}” ,不然在64位系统中也会把libraries安装到/usr/lib而不是/usr/lib64,程序无法找到lib的情况。所以这点千万切记要加上这个参数。

    2013/02/06补充:(根据Michal发给我的邮件正文,下面详细贴出buildscript软件编译部分的正确示例)

    1) 当使用./configure时,

    CFLAGS="${SLAX_CFLAGS}" CXXFLAGS="${SLAX_CFLAGS}" ./configure ${SLAX_CONFIGURE_OPTIONS}

    2) 当使用cmake时(假定先执行了mkdir build && cd build了),

    cmake -DCMAKE_C_FLAGS:STRING="${SLAX_CFLAGS}" 
     -DCMAKE_CXX_FLAGS:STRING="${SLAX_CFLAGS}" 
     -DCMAKE_INSTALL_PREFIX=/usr 
     -DINCLUDE_INSTALL_DIR=/usr/include 
     -DCMAKE_BUILD_TYPE=Release 
     -DLIB_SUFFIX=${SLAX_64_FLAG} 
     -DLIB_INSTALL_DIR="${SLAX_LIBDIR}" 
     ..

    3) 当制作商业闭源软件的Bundle时,必须准备好32位和64位两份预编译包。

    if [ "${SLAX_64_FLAG}" = "64" ]; then
     #将64位预编译文件安装到 ${SLAX_BUNDLE_TARGET}
     else
     # 将32位预编译文件安装到 ${SLAX_BUNDLE_TARGET}
     fi

    如此才能确保服务器根据buildscript编译出来的Slax Bundle正确。

  • 用buildscript制作Slax的扩展包sb文件

    昨天成功用buildscript制作了fcitx在Slax下的sb bundle(一看到sb这个扩展名我就莫名其妙地想笑……233)

    我强烈建议大家直接阅读官方的Documentation和template.SlaxBuild,基本就知道怎么做了。

    build写好之后,在终端下运行,看看是不是能成功制作出sb文件,然后slax activate之,运作是否正常。一切顺利的话,就可以slax upload上传了,上传的时候会要一个密码,这个密码最好记好了,因为Slax的Modules是不可以有重复的,之后就只能用slax update更新脚本或者slax delete删除脚本了,而后面的操作都会要验证密码是否正确。

    在# —————– put your actual build code here: —————后面一定要写详细的编译过程,这个buildscript其实就是一个shell脚本,编译过程参考一下Slax的Module就好了(看看我上传的qtqq和fcitx吧,其它我还真没找到真正“编译”的bundle)。

    刚刚又制作了QtQQ的sb,把buildscript上传了,个人觉得Slax还是非常有希望在Linux发行版海洋里活出自己的空间的,首先当然就是它的bundle系统了,和Chakra很像,但是Slax又自称是Pocket system,体积很小,所以还是有自己的优势所在的!唯一比较郁闷的就是Slax的网站关键环节全部是under construction(很多Modules的buildscript已经有了,但是sb文件都没有编译出来,导致可以下载的Modules非常少),这可不行啊,得早日上线运作!

  • SSH服务器登录提示消息配置

    SSH的提示消息分为两种,一种是登录前,一种是登录后。登录前的提示是每个人都可以看到的,所以最好不要涉及机器的任何相关信息,一般给出警告之类的消息。登录后的话可以给出系统的运行情况(负载、空闲内存、空闲硬盘空间、硬件温度等)。

    首先设置/etc/ssh/sshd_config,找到这一行

    Banner /etc/issue

    去掉前面的#注释,然后编辑/etc/issue这个文件,我的内容是:

    This is a private machine.

    ————WARNING————-
    Authourized administrators only.
    ——————————–

    Your IP has been recorded.

    这样,任何ssh连接到这台机器的终端都会先看到这个警告提示,然后才是密钥验证过程。对于合法的登录用户,会显示/etc/motd这个文件的内容,但是这个文件一般是静态的,不太适合编辑,所以可以编辑用户主目录下的.bash_login文件,这个文件的语法和bash一致,所以可以方便的显示一些动态内容。我这里这个文件的内容是:

    echo -e "nOf course it runs on $(uname -s)n"
     CPUTIME=$(ps -eo pcpu | awk 'NR>1' | awk '{tot=tot+$1} END {print tot}')
     CPUCORES=$(cat /proc/cpuinfo | grep -c processor)
     echo "
     System Summary (collected `date`)
     - CPU Usage (average)       = `echo $CPUTIME / $CPUCORES | bc`%
     - Memory free (real)        = `free -m | head -n 2 | tail -n 1 | awk {'print $4'}` Mb
     - Memory free (cache)       = `free -m | head -n 3 | tail -n 1 | awk {'print $3'}` Mb
     - Swap in use               = `free -m | tail -n 1 | awk {'print $3'}` Mb
     - System Uptime             =`uptime`
     - Disk Space Used           = `df / | awk '{ a = $5 } END { print a }'`"

    下面看看我的执行效果吧,宿主机器Fedora连接NetBSD虚拟机!(刚刚上面写的df/|awk……a=$4写错了,应该是=$5(已修正),下图的Disk Space Used显示的就是写错成$4的结果,写$5才能读取已使用的百分比)。

    ssh

    参考来源:Ubuntu Forum | Question Defense (都是英文)

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

    用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下岗了。。。

  • 批量删除软链接

    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到了上面这条命令,非常实用,特此记录下来。

  • SoftMaker Office 2012 for Linux

    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吧……

  • 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%#%#$%^省略千言!