标签 Android 下的文章

ZDNet曾经报道过使用数量最多的Linux发行版本,不过现在桌面环境仍然是windows的天下,但是安卓今年很可能会是用户数量最大的用户终端操作系统。

ZDNet报道:

如果桌面和平板依旧像预期增长的销量,安卓平板渐渐蚕食苹果的市场,PC市场继续萎缩,安卓在2014年末很有可能成为终端用户数量最多的操作系统,而且不算安卓PC。

总而言之,安卓几乎统治了Linux终端用户。你可能不会想把它作为桌面使用,尽管Intel和AMD努力在让它变成现实,但是安卓正在变成使用量第一的终端操作系统。

更多消息

Image credit: ZDNet

上面提到的并不算真的惊喜,移动终端的革命发展了接近10年了。桌面依然还像原来那样重要,微软也确实没有真正的在乎过移动设备。即使现在,微软在艰难的推他的手机和平板,他仍旧认为移动终端市场并不重要。

谷歌严重的破坏了微软在移动领域的努力,而现在他在桌面市场又对微软发起了挑战。从chrome OS到安卓,谷歌给微软一连串的打击,如果你查看下Amazon最受欢迎的台式机笔记本的话,你会看到很多chrome OS的电脑甚至是装有安卓的PC。所以人们的购买需求在变得多样化,并不局限在windows一家了。


via: http://www.itworld.com/open-source/421894/has-microsoft-really-changed-its-attitude-toward-open-source

译者:jiajia9linuxer 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

(译注:本文译自Ubuntu官方维基

Ubuntu 双系统安装器是作为技术预览版本发布给开发者的,可以使得开发者同时在一台手机上安装 Ubuntu 系统和 Android 系统。该软件现阶段或最终的目标用户并非普通用户。开发者应该熟悉 Ubuntu 和 Android 系统的分区布局并且在出现问题的时候有能力手动刷回分区。

Ubuntu 双系统安装器是一些工程师花了一点时间内做出的一个内部臭鼬项目(译注:管理层不知的研究项目)。由于项目进展良好,所以决定向开发者社区发布预览版以供大家测试、学习或者完善。

双系统启动不是常规 Ubuntu 发布版本中的一部分。

安装后可实现以下功能

  • 一台可以在全功能的 Android 和 Ubuntu 系统之间切换的手机
  • Android 系统上:一个 Ubuntu Installer 应用,用来安装 Ubuntu 系统和切换到 Ubuntu 系统
  • Android 系统上:一个 SuperUser 超级用户管理器,用来为 Ubuntu 安装器授予权限
  • Ubuntu 系统上:一个 Ubuntu Dual Boot 应用,用来启动到 Android 系统
  • 尚不支持在 Ubuntu 系统下的更新,但可以通过 Android 下的应用程序来进行系统更新

必要条件

安装双系统启动,你需要:

  • 一台Nexus 4 手机 (其他 支持的 Nexus 手机 理论上也能安装,但是现在还没有经过测试。)
  • 手机安装 Android 4.4.2 或者更高的系统版本 ,基于原厂固件或者 CyanogenMod 和 AOSP 的固件。
  • 手机上需要有 2.7GB 剩余存储空间 用来安装Ubuntu。
  • 桌面电脑上需要运行 ADB 工具
  • 手机应该 解锁 bootloader 并打开 USB 调试选项。按照安装步骤1到3来实现。如果你的手机已经解锁过 bootloader 并且打开了 USB 调试选项了,这一步可以跳过>

步骤 1 - 桌面电脑设置

为了连接手机并刷机,在电脑桌面上依照以下几步操作。

设置Touch开发者预览工具(Touch Developer Preview Tools)的 PPA

这些 PPA 是一个迷你库,其中包含安装过程中需要的一些额外软件。以下描述如何去启用和使用它。

这些 PPA 的包含工具和依赖库支持各个 Ubuntu 发行版,包括 12.04, 12.10, 13.04, 13.10 和 14.04等。 将以下的源地址列表加入 /etc/apt/sources.list 文件中来添加 Ubuntu Touch PPA。

在你的机器上按 Ctrl+Alt+T 开启终端窗口,运行以下命令。

sudo add-apt-repository ppa:phablet-team/tools

在 Ubuntu 12.04系统上,还需要运行以下命令:

sudo add-apt-repository ppa:ubuntu-sdk-team/ppa

然后运行:

sudo apt-get update
sudo apt-get install ubuntu-device-flash

步骤 1.5 - 备份Android(可选)

  • 确认开启开发者模式。点击 设置 -> 关于手机 -> 版本号 (点击七次)
  • 确认开启 USB 调试模式。点击 设置 -> 开发者选项 -> USB 调试
  • 在你的电脑上执行(译注:自然这是在Linux下,如Ubuntu里面执行的)
$ adb backup -apk -shared -all

这样就将你的操作系统、应用程序和所有的数据备份为 backup.ab 文件了。以后在重新刷回 android 系统(或root、解锁等)的时候可以使用 $ adb restore backup.ab 命令恢复你所有的数据。

步骤 2 - 手机解锁

如果手机已经解锁,那么跳过步骤 3。以下几步将擦除手机上所有的个人数据。

  1. 关机,同时按住手机的开机键+音量上+音量下开机。
  2. 手机将开机到bootloader界面。
  3. 使用 USB 数据线将手机和电脑连接。
  4. 在电脑上按 Ctrl+Alt+T 打开一个终端。 键入 sudo fastboot oem unlock 并回车。
  5. 在手机上,接受解锁条款。
  6. 按开手机开机键开机。(屏幕上 Start 的箭头所向)

恢复手机出厂设置

如果解锁 bootloader 后不断重启的话... 可以使用以下方法解决:

  1. 在重启的过程中,同时按住 电源键+音量上+音量下 使得手机重返 fastboot 模式。
  2. 在 fastboot 模式下,使用音量键选择到 Recovery 选项后,按下开机键选中。
  3. 在 Recovery 模式下(Android 机器人 背景是个红色三角) 同时按住音量上键和开机键进入stock recovery 模式。再次强调,不要按住按钮不放,只是同时按他们。保证你按了正确的音量按钮。应该是右边的音量按钮的向上键。
  4. 一旦进入 Recovery 模式,恢复出厂设置并清空数据,然后重启平板,现在应该可以看到欢迎屏幕了。

步骤 3 - 初始化手机指南

按照以下步骤初始化手机

  1. 如果没有启动,启动手机进 Android 系统
  2. 启用手机的 USB 调试模式

    • 在冰激凌三明治 (版本 4.0) 上打开 USB 调试(设置 > 系统 > 开发者选项 > USB 调试)
    • 在果冻豆 (版本 4.1 和 4.2) 上打开 USB 调试,需要进 设置, 关于 [手机|平板] 菜单且点击版本号7次才能进入开发者选项。
    • 在 4.2.2, (设置 > 关于 > 点击版本号7次激活开发者选项菜单)
    • 在其他版本的 Android 系统中,你通过 设置 > 开发者选项 > USB 调试来启用 USB 调试模式。您也需要接受手机上的主机密钥。
    • 在工作站中 -> adb kill-server; adb start-server
  3. 将手机和电脑通过USB数据线连接起来。

    • 根据 Android 版本的不同,会弹出一个主机密匙的框,需要确认才能和电脑通信。
    • 注意,adb devices 命令不应该显示为手机 'offline' 。如果显示手机离线,在超级用户模式下运行adb(sudo adb kill-server; sudo adb start-server),然后将手机再次连接。
    • 在某些情况下,手机仍然显示为离线,如果USB连接模式为 'MTP' (一些手机或版本的Android的默认模式)的话,就不会弹出主机密匙提示对话框。取消所有的USB连接模式选项的勾选(设置 -> 存储 -> 菜单 -> USB连接 -> MTP, PTP)也许能解决adb连接问题。
  4. 记下现有手机镜像版本号,Android 系统,恢复系统时使用。可以使用 设置 > 关于手机 > 版本号码 查看版本号。

最新版的 Nexus 10s 开启开发者模式后并没有完全启动。如果是这种情况的话,启动到 bootloader 后运行 "fastboot -w" 然后进入下一步。

双系统启动安装和更新说明

双系统新安装和升级在这部分过程实际上是相同的。

在 Android 系统中安装 Ubuntu 安装器

注意:如果手机中有一个以前版本的 Ubuntu 双启动,更新前请首先使用 Android 应用程序卸载掉 Ubuntu 系统。推荐保存用户数据,只卸载掉基本的系统。

  1. 在电脑上下载双系统安装脚本到你的家目录。http://humpolec.ubuntu.com/latest/dualboot.sh
  2. 使用 Ctrl+Alt+T 组合键打开电脑终端。
  3. 运行以下命令赋予安装脚本可执行权限。
chmod +x dualboot.sh
  1. 保证你的手机
* 正常启动进入 Android 用户界面
* 启用 USB 调试选项
* 已经解锁了 bootloader
  1. 使用 USB 数据线连接手机和电脑
  2. 在终端里运行以下命令安装双系统启动:
./dualboot.sh

安装完成后,手机会重启数次。完成后,系统会启动到 Android 系统,你可以在手机的应用程序里面找到双启动应用程序 (“Ubuntu Dual Boot”) 。

或者,可以使用安装脚本的另一个替代方法,可以参考安装手册 >

现在按照以下说明在 Android 下安装 Ubuntu。

Android 下安装 Ubuntu

注意:Ubuntu 安装需要手机上具有2.7GB以上的剩余内存空间。

  1. 如果需要,也可以在手机和电脑USB连接状态下,终端运行以下命令来释放空间。(接受手机上的授权询问)
adb shell "su sh rm -rf /cache/*"
  1. 在手机上,点击 apps 按钮打开 app 列表
  2. 查看列表找到 Ubuntu Dual Boot 图标并启动它
  3. 应用程序启动后按 Choose channel to install 并选择一个频道下载(推荐 utopic 频道),请确保您勾选了“bootstrap”选项
  4. 下载完成后需要授权 SU 权限给应用程序。提示授权的时候,选择 Grant 按钮
  5. Reboot to Ubuntu 按钮重启手机进入Ubuntu
  6. 标准手机重启过程后会启动到Android系统中

注意:

  • Ubuntu 安装器支持所有手机平板刷机工具(phablet-flash)支持的频道
  • 选择了一个 Ubuntu 频道后,bootstrap 复选框可以让你选择清空 Ubuntu 的用户数据,如果不选中的话,用户数据将一直保留。第一次安装的话,选不选是没什么区别的
  • 选中一个 Ubuntu 频道后,取消 latest version 复选框后可以选择一个特定版本号的镜像,否则,默认安装最新的镜像。
  • 如果在安装过程下载镜像过程中,手机锁屏或者 Ubuntu 安装器在后台运行的话,安装按钮会变成 Resume install (恢复安装)。点击这个按钮会恢复到超级权限提示前的状态。

其他需要注意的

更新到最新的 Ubuntu 镜像

根据双启动的经验:

  • 安装新版本的 Ubuntu 需要使用 Android 上的双启动应用程序
  • 下载新版本的 Ubuntu 可以在 Android 或者 Ubuntu 下进行

这实际上意味着可以有两种不同的方式更新 Ubuntu 镜像(译注:此处与前文不一致,究竟是否可在Ubuntu下更新,译者没有做过实验,可能已经支持了。):

  • 如果在android系统下,使用双启动应用程序更新 Ubuntu ,需要选择菜单选项中的 "Uninstall Ubuntu" ,然后应用程序会询问你是否保留 Ubuntu 用户数据。如果你想保留数据、通讯录、应用程序、图片、背景设置等,这些数据将会完整保留。另外,每次新版本的 Ubuntu 发布后,将会收到 Android 通知:

    • 对于稳定频道,应用每2天推送一次更新通知
    • 对于推荐频道,应用每10小时推送一次更新通知
  • 如果你使用的是 Ubuntu, 使用系统设置中的标准更新机制下载新版镜像,但是不要选择安装,下载完毕后,重新启动到 Android 系统中,启动双启动应用程序,程序会恢复更新。完成后,你可以再次切换到 Ubuntu系统中。

要升级 Ubuntu 到最新版本,在 android 下的 Ubuntu 双启动应用程序中,卸载 Ubuntu 后,可以按照同样的安装步骤去下载新版本的 Ubuntu。

双系统安装器参考命令

大多数情况下,不带参数运行自动模式安装脚本就足够了。

dualboot.sh

  • 自动模式:监测超级用户应用程序是否需要安装,并更新双系统安装应用程序。

dualboot.sh full

  • 完整模式:安装超级用户和双系统启动 Android 应用程序

dualboot.sh update

  • 更新模式:安装或者更新 Android 下的双系统启动应用程序

dualboot.sh channel $CHANNEL

  • 边载(Sideload)模式:通过指定的 Ubuntu 频道 ($CHANNEL) 下载最新的镜像到手机。命令启动 android 双系统应用程序并继续使用边载文件进行安装。

dualboot.sh push ubuntu.tar.xz device.tar.xz version.tar.xz

  • 边载推送模式:将下载参数推送给双系统启动应用程序,作为参数启动双系统安装器进行安装。

多个手机同时连到电脑上的时候,脚本还提供指定手机ID 的参数。手机ID为脚本的第一个参数。如果不指定手机ID的话,默认为第一个连接的手机。

dualboot.sh <device-id> channel devel-customized

使用自定义镜像服务器

如果你的手机不在官方支持列表中,需要使用第三方移植镜像服务器,你可以将自定义镜像服务器地址作为参数来使用双启动应用程序。这么办的话,打开终端,连接手机到电脑,运行以下命令(替换 $CUSTOM\_SERVER\_URL 为自定义服务器地址):

adb shell "su sh 'cd /data/data/com.canonical.ubuntu.installer/files/ && echo $CUSTOM_SERVER_URL > custom_server &&  chmod 777 custom_server'"

下次启动双启动应用程序的时候,默认将使用自定义服务器地址而不是官方地址了。

异常处理

如果出现问题,安装双启动后无法进入 Android 和 Ubuntu 系统的话,你可以使用原始启动和恢复镜像恢复手机到最初状态。只有 recovery 分区被双启动修改了,当然你可以刷回原有的启动分区。

  1. 下载手机的 Android 固件到你的PC上。
  2. 使用快捷键 Ctrl+Alt+T 打开终端
  3. 解压固件 tar 包并 cd 到其目录
  4. 运行以下命令以重启手机到 bootloader
adb reboot bootloader
  1. 进入 bootloader 后,运行以下命令刷回启动分区:
fastboot flash boot boot.img
  1. 不要退出 bootloader ,运行以下命令刷回 recovery 分区:
fastboot flash recovery recovery.img
  1. 刷机完毕后,重启你的手机应该就可以进入 Android 系统了:
fastboot reboot

致谢

双启动项目和其他 Ubuntu 项目一样都是开源的,你可以参与此项目,使得他更加完美!

FAQ

双启动如何工作?

基于 Android 的手机有一系列不同用途的分区。这些分区包括 /boot, /recovery, /system/data 等。

  • boot 分区是 bootloader 正常启动的时候载入的。这个分区的启动镜像是由一个内核和ramdisk程序组成的。简而言之,bootloader 解压启动镜像,创建一个内存盘后将镜像考入,最后使用 初始化进程 启动内核。
  • recovery 分区包含有恢复镜像,它只是一个不同的启动镜像。它也含有一个内核和内存盘程序,但是初始化可执行程序被换成了内存盘中的二进制的 recovery 程序。
  • system 分区含有所有的只读系统文件 (除了内存盘中的)供初始化进程载入。
  • data 分区是供系统写入用户数据的可读写分区。

Ubuntu 以稍微不同的方式使用这些分区

  • bootrecovery 分区的作用和 Android 中一样。
  • system 镜像 含有在 LXC 中执行的 Android 部分的程序。
  • data 分区下的 /data/ubuntu/ 目录含有Ubuntu系统

为了保证用户可以返回 Android 原来的系统,Android 系统的启动镜像是不允许修改的,因为原始内核必须保存。所以使用 recovery 分区去启动Ubuntu

双启动可以运行在那个版本的 Android 系统下?

  • 普通 Android 或 AOSP 4.4.2 或更高版本。
  • CyanogenMod (基于 Android 4.4.2 或更高版本).

双启动可以运行在那些手机上?

双启动通过测试可以运行在以下手机中:

  • Nexus 4
  • Nexus 7
  • Nexus 10

双启动支持那些已发布版本的 Ubuntu?

双启动支持的所有手机平板刷机工具(phablet-flash)支持的系统。

Android 和 Ubuntu 如何共享用户数据分区?

用户数据分区也放在 Ubuntu 系统镜像 /data/system.img, 大约有2GB。

Ubuntu swap 文件在用户数据分区 /data/SWAP.img (大约540MB)。

Ubuntu 的用户和系统数据也可以在以下目录找到:

  • /data/user-data
  • /data/system-data

Android 数据分区的使用方式不变。

安装双启动后是否无法启动进入 recovery?

安装双启动后,recovery 分区被 Ubuntu 启动镜像占用。这意味着启动到 recovery 模式下,就启动了Ubuntu 。

使用 recovery 的功能会在未来发布。不过当卸载掉 Ubuntu 镜像后,Ubuntu Install 应用会恢复原始的 recovery 分区(普通的 Android 或 CWM)。

如果用双启动替换掉 recovery 分区的话,是否还可以更新 Android 系统?

可以,使用双启动应用程序中的 "准备更新安卓" 选项。这会将原始 Android recovery 分区恢复,为 Android 系统更新做准备。这显然会删除 recovery 分区中安装的 Ubuntu 系统,但是使用双系统应用程序可以在 Android 系统更新后很容易重新安装。

任何情况下,你都可以卸载双启动并恢复原始的 recovery 分区。

我可以卸载双启动吗?

可以,使用 Android 版本双启动应用程序卸载 Ubuntu 后,原有的 recovery 分区数据会恢复到安装前的状态。

卸载 Ubuntu 的同时也会删除 Ubuntu 系统镜像和交换文件。如果需要,Ubuntu 用户数据也可以被删除。

双启动应用程序安装了一个超级用户应用,我可以使用一个第三方的超级用户应用代替它吗?

当然可以了!提供的 超级用户 应用只是为了那些没有安装它的用户的。

然而,需要注意一点:项目测试中只测试使用了来自 CyanogenMod 版本或者 dualboot.sh 脚本安装的超级用户应用。但是只要你使用和测试中用的类似的应用的话,一般也不会有问题的。

安装 Ubuntu 中,我是否可以删除用户数据后切换频道?

可以,但是有些东西没有测试过,所以有些应用也许无法正常工作。这个问题也存在于切换版本的情况。

我能否设置默认启动 Ubuntu 而将 Android 启动移动到 recovery 分区?

目前为止交换默认启动操作系统是不可行的。但是如果有需求的话我们会想办法支持的。

为什么使用 recovery 分区启动 Ubuntu 系统而不是使用一个 Android 和 Ubuntu 结合的镜像来启动?

最开始设计双启动的时候原则就是不和某个特定版本和类型的 Android 系统捆绑,留给用户自己选择的权利。所以就没有改动 Android 启动镜像和内核。

最后我们选择利用 recovery 分区启动 Ubuntu,并在需要的时候就恢复到其原始状态。

我已经安装了一个 CWM recovery 而且知道如何使用,我可否使用 zip 文件手动刷机?

绝对可以,我们提供的 dualboot.sh 是为了使得安装应用和 recovery 更容易。如果你想手动安装recovery 也是可以的。参看 dualboot.sh 脚本的源码来操作。

为什么 Ubuntu 安装器需要使用 recovery 安装到 system 分区里?

Ubuntu 安装器需要安装为 Android (预置的)系统应用。 和用户安装在用户分区的应用不一样,系统应用始终活动在系统分区中,保证可以获取第三方软件可以获取的的最高的权限。

其实 Ubuntu 安装器需要获取的权限只有两个:缓存分区写入权限,用来下载 Ubuntu 安装文件;和电源管理,用来重启系统。


via: https://wiki.ubuntu.com/Touch/DualBootInstallation

译者:shipsw 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

2013年已经过去。这一年见证了许多里程碑事件,使得2013年可以称得上是一个Linux的黄金之年。其中一些成果在FOSSLinux世界更可以称得上是举世瞩目的成就。

2013 Year of Linux

1.Android的上升趋势

2013年,Android手机达到了每日150万的激活量记录。不用说,正是Android的Linux内核以及它在该方面的狂热贡献使其达到了今天的标杆地位,这一趋势还将在未来的日子里一直持续下去。

2. Raspberry pi 树莓派

Raspberry pi,低成本单片计算机历史上的最伟大发明之一。它在学校和其他很多地方极大地推广了Linux,同时在FOSS社区中也有很高的欢迎程度,这一状况也仍将继续。

3. Debian上太空

Debian,众多优秀Linux发行版中的其中一款高端发行版。2013年三月下旬的一次航天飞机任务中就使用了Debian负责实验的控制。实验的主要内容是尝试无土植物栽培的新方法,从而为宇航员提供空气和食物。

4. SteamOS的崛起

SteamOS,基于Debian发行版,用于Stream Machine Game Console游戏终端,已经于2013年12月中旬发布。GNU/Linux开始涉足于游戏环境,这对广大宅男极客来说当然是喜闻乐见喜大普奔。

5. Linux的平板应用

查看亚马逊的平板销量,排名前十的平板都是Android操作系统。苹果和微软的平板则排在第11和12位,远远地被抛在后面,这对于FOSS社区来说确实是一个振奋人心的消息。

6. Chromebooks

Chromebooks之所以能在笔记本电脑市场赢得一席之地,是由于比起微软等专属平台,诸如三星,华硕等许多高端制造商给了GNU/Linux类操作系统更多的空间。

7. The Firefox OS 火狐操作系统

Firefox OS是基于Linux和FOSS的开源操作系统,主要用于智能手机和平板,发布于2013年4月下旬。基于ARM构架的移动设备Linux发行版显示出了广阔的前景。

8. Kali发布

来自BackTrack Linux的开发者发布了Kali Linux。Kali是是基于Debian的Linux发行版,其母系统或者说其前身(BT Linux),主要用于渗透测试,并分享了大量的Debian版本库,成为了最为丰富的一个发行版。Kail仍保持着在刚发布后的很短时间内超高下载量的记录。

9. Android Kitkat

尽管之前预测的发布版本是5.0 Key Lime Pie,经过万众期待后,最新发布的android版本被命名为Kitkat,Google宣布Android 4.4又名KitKat 4于2013年9月发布。Kitkat进行了优化更新,能在具有最小的512 MB内存的设备上运行,这样就能够支持众多各种各样的设备。

10. Linux 在汽车上的应用

截至目前,Linux被应用于各种设备,从腕表到遥控器,再到太空飞船,所以Linux在汽车上的应用并不让人意外。但当Linux的作用表现在汽车趋势杂志的年度车上时仍然令人惊讶。2013年被选为优胜候选的两个车型,都运行Linux系统。

2013年已经过去,但故事远没有结束,我们可能错过了一些重要的里程碑,你可以在评论部分告诉我们。2014年,未来,还在继续……


via: http://www.tecmint.com/2013-the-golden-year-for-linux-and-foss/

译者:乌龙茶 校对:Mr小眼儿

本文由 LCTT 原创翻译,Linux中国 荣誉推出

IT技能清单调查报告结果显示,雇主所需的Linux人才应具备的IT技能可分成相对独立的组群。本文将着重介绍在上一个季度(2013年7月-9月)需求度最高的3组IT技能,这些技能在包括美国在内的被选国家招聘广告中都有所提及,同时结果表明这三组技能可以和Linux相关的工作领域需求相匹配。

报告指出在上一季度具有嵌入式开发人员相关技能的人才是Linux专业雇主亟需的一类。排在第二位和第三位涉及的技能领域分别对应虚拟化技术和LAMP管理。本文将基于这三类工作清单涉及到的技能需求加以讨论,并对分析后的三组技能间的依赖结构关系加以洞悉。

如果您尚未阅读IT技能清单,我们强烈建议您在阅读以下内容前先熟悉这篇文章。它详细阐明了本次研究中用到的方法,本文也是基于IT技能清单的材料才得以进一步分析。

2013年8月IT技能分类更新

在IT技能清单这篇文章中,LinuxCareer.com分析了2013年5月到6月底的Linux工作清单,我们在这个基础上将2013年7月到9月底这个时间段的更新也加至分类分析中。10类相关的IT技能在Linux招聘广告中出现的比率列于如上条形图中。IT分类图表表明如何基于分类设计出此条形图。我们可以看到,IT技能需求前三组为:占据27%的Linux就业市场份额的嵌入式开发人员需求,占20%就业份额的虚拟化技术工程师和占12%Linux就业份额的LAMP管理员。文章接下来的三部分将围绕这三项IT技能需求组及三者的相互关系展开详细的讨论。例如,MySQL和PHP这两项技能有强关联性,通常雇主都会一起考虑。另外要指出的是,LinuxCareer.com的这项调查里掌握Linux的基础知识已默认存在于任一招聘需求中。

嵌入式开发人员及程序员

需求最高的第一类技能组是针对嵌入式开发人员及程序员的。如下的依赖图详细阐明了技能间的关联关系,尤其表明了哪几项技能更可能同时出现在Linux招聘需求中。例如,嵌入式开发非常需要C/C++/C#相关技能,而这些语言要么在图表下部的深色矩形区域,要么在图表上部的对应圆形阴影中聚集。

总体来说,这组技能可以进一步细分成如下三类:

  1. Android, Embedded, C/C++/C# 和 Java。如果您准备在嵌入式领域发展,这些是你需要掌握的核心技能,而C/C++/C#或Java掌握其一便可满足雇主需求,因为Java是基于部分C/C++/C#性能的扩展性语言。如果您阅读了8月的IT技能表,就会发现,Java以9513分居于编程语言的榜首,而C/C++/C#是5403分。如果您尚在犹豫是掌握C/C++/C#还是Java,从技能表得分看起来Java应该是更好的选择。但根据如下图表显示,C/C++/C#似乎在嵌入式领域的招聘需求中更受欢迎。总结可得尽管Java在IT技能表中有更高的得分,但在嵌入式开发职位上掌握C/C++/C#会比Java更有用。
  2. Python, Perl 和 Bash。这些是对脚本编程语言技能的补充。对Perl和Python语言的需求经常会在招聘中同时出现,当然,也可以理解成这两种语言技能都是需要掌握的。
  3. Git, Subversion 和 Jira。这些软件知识会应用到源码管理、调试和项目管理中,同时了解这几个方面的知识对相关项目的编程大有裨益。目前,主流开源项目和大量合作项目都在用类似的软件管理他们的源码。

涉及数据仓储及管理的虚拟化技术工程师

目前第二大需求技能组是如下依赖图所示与虚拟化技术工程师相关的技能。这一组可进一步细分成两部分,第一部分是Redhat, VMware, vSphere, ESX/ESXi, XenServer 和 Citrix,这些技能对寻求虚拟化技术工程师的工作很重要;第二部分是同Unix系统、数据仓储及管理相关的技能。同时这两部分是紧密联系的。显然VMware和ESX/ESXi及vSphere是相关的,因为ESX/ESXi是VMware虚拟机下提供的虚拟产品,而vSphere是VMware虚拟机的云端虚拟操作系统。Redhat和VMware、Citrix产品被分到同一部分同样有其原因。这里Solaris和AIX具有密切关系的原因可以理解为它们都是专有的Unix系统,掌握其一便可。

LAMP管理员

最后,第三大技能组是如下依赖图中显示雇主需求的LAMP管理员应具备的技能。LAMP是Linux、Apache、MySQL和PHP的简称,所有这四项内容是作为一名LAMP管理员所要了解的核心。这是一组相对来说小规模却会引领你至在Linux路途中发展更远的技能。实际上,PHP和MySQL的密切关系表明这些技能中的任一项都不能脱离其它技能来单独掌握。

总结

本文基于就业能力和Linux专业人员需求技能分组阐明了两点。第一点是对经常出现的IT技能通过集群分析划出了10类IT技能组;第二点是基于Linux工作需求与相应技能组的对应结果,嵌入式程序员在Linux招聘需求比率最高,第二及第三技能需求比率最高的领域分别对应虚拟化技术工程师及LAMP管理员领域。这三大技能组即为上一季度分析出的Linux技能需求的核心。

参考

[1] Percentage of Linux job ads linked with corresponding skill groups created by GNU R. Relevant package: graphics.

[2] Dependency charts created by GNU R. Relevant package: corrgram.


via: http://www.linuxcareer.com/insights-into-top-3-it-skills-groups-in-highest-demand

译者:icybreaker 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

By: [email protected]

项目平台基础信息:

系统信息:Ubuntu 12.04 LTS X64 Desktop

硬件信息:Intel® Core™2 Duo CPU P8400 @ 2.26GHz × 2,3G RAM

具体项目实施过程:

1. Ubuntu 系统安装的注意事项及操作系统基础环境配置

系统的安装。在安装Ubuntu系统的时候根据自己计算机情况合理清晰的构建新的系统,不可盲目选择。建议安装的时候选择全新安装或者事先预留空白分区手动分配磁盘。切忌不了解LVM的情况下不使用LVM管理方式安装。
在安装完成后首先选择合适的源来更新系统(可使用系统内置的源测速),其实主要更新的内容是系统语言包。在安装完更新以后即可随手安装些常用必备工具:Vim、Gcc、G++、Adobe Flash、Chromium等。

2. Android 开发平台的搭建

首先TaintDroid其实是一个自定义的Android ROM,所以必须自己编译Android源码来实“TaintDroid Build Instructions for Android”。那么首先要做的就是下载源码(Android及TaintDroid代码),然后进行编译并嵌入TaintDroid来实现自定义 ROM并刷入设备。

平台基础JDK 的安装:
由于Android代码编译使用的是JDK6,所以必须去Oracle上面寻找旧的对应平台的版本,而且需要注册并同意一些协议才会允许你去下载。下载到 的文件大概是类似于:jdk-6u45-linux-i586.bin,具体小版本号Google没有具体要求所以并不需要纠结。然就是安装JDK并配置 环境变量,具体操作如下:

ahaxzh@T400:~$ cd /workspace/soft
ahaxzh@T400:~$ chmod 701 jdk-6u45-linux-i586.bin
ahaxzh@T400:~$ sudo ./jdk-6u45-linux-i586.bin

(需要注意的是:其会在当前目录下解压JDK,也就是JDK所在的位置,需要记录下来并写在环境变量中)。
添加环境变量的方法:
编辑/etc/profile文件在文件最后添加内容:

#set java environment
JAVA_HOME=/home/ahaxzh/workspace/soft/jdk1.6.0_45
export JRE_HOME=/home/ahaxzh/workspace/soft/jdk1.6.0_45/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

然后注销系统并重新登录,在终端使用命令:java -version来查看JDK是否安装完成。 若安装成功则会显示当前JDK版本号:

java version "1.6.0_45"
Java(TM) SE RuntimeEnvironment(build 1.6.0_45-b06)
JavaHotSpot(TM)Server VM (build 20.45-b01, mixed mode)

Android 源代码的下载:
根据官方网址说明需要的是首先需要安装以下工具软件:curl和git-core。在终端输入:

ahaxzh@T400:~$ sudo apt-get install curl
ahaxzh@T400:~$ mkdir ~/bin
ahaxzh@T400:~$ PATH=~/bin:$PATH
ahaxzh@T400:~$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
ahaxzh@T400:~$ sudo chmod a+x ~/bin/repo

(需要注意的是,首先要在~/home下建立bin目录,并给与repo目录以权限。)

然后就可以新建一个目录用来存放Android源代码,如:workspace/tdroid/ tdroid-4.1.1\_r6)
进入到用于存放代码的目录使用repo命令来获取Android源代码:

ahaxzh@T400:~/workspace/tdroid$ mkdir -p ~/tdroid/tdroid-4.1.1_r6
ahaxzh@T400:~/workspace/tdroid$ cd ~/tdroid/tdroid-4.1.1_r6
ahaxzh@T400:~/workspace/tdroid$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.1.1_r6
ahaxzh@T400:~/workspace/tdroid$ repo sync

然后就进入漫长的等待过程。

在执行上面的步骤时需要注意的事项:
在使用repo命令时会遇到很多很多的问题下面进行详细说明:
关于repo只是google用Python写的一个用来调用git的脚本,主要是用来下载、管理Android项目的软件仓库。
官方安装介绍:http://source.android.com/source/downloading.html
官方使用说明:http://source.android.com/source/using-repo.html
在首次安装完git、curl及repo如果立即执行repo init操作可能会出现各种异常情况,这个主要和地域互联网环境有关。例如:直接链接不了源码服务器、出现读取失败等等。即使你能够链接并读取正常,第一 次还会出现要求你编辑git的配置文件(根据提示输入邮件、用户名字等)。至于出现问题的解决方案可以使用代理服务器、备份服务器及本地安装等。在漫长的 下载Android代码的过程中很容易出现repo sync 中断的现象,不得不重新执行repo sync命令。

关于repo init -u URL , 在当前目录安装 repository ,会在当前目录创建一个目录 “.repo” , -u 参数指定一个URL, 从这个URL 中取得repository 的 manifest 文件,然后才能够使用repo sync命令根据manifest文件抓取源码。抓取源代码是一个非常非常漫长的过程,我用了将近7小时。直到出现:

Fetching projects:100%(294/294),done.
Syncing work tree:100%(294/294),done.

算是下载完源代码了。这时候源代码目录(~/workspace/tdroid/tdroid-4.1.1\_r6)中 .reop目录大小为12G,而整个 tdroid-4.1.1\_r6目录将近20G左右。

Android源码的编译:

下载完源代码以后就可以开始着手准备源码编译工作了。官方编译说明:http://source.android.com/source/initializing.html
在着手编译的时候你需要再次确认一下问题:
首先你的操作系统必须是64位的(前面的几个Android版本貌似可以在32位编译,但是4.x的就没有遇到说可以在32位机器编译运行的 了)Linux发行版本。官方推荐的是Ubuntu 12.04 LTS版本,另外官方要求的编译环境必须是:Python 2.6 — 2.7, GNU Make 3.81 — 3.82,JDK 6,Git 1.7。除了这些以外还需要有的软件包:

sudo apt-get install git gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1/usr/lib/i386-linux-gnu/libGL.so

这其中会出现的问题:libgl1-mesa-glx:i386 会提示找不到。这时候就陷入了一个痛苦的循环。具体见:http://askubuntu.com/questions/335853/ubuntu- wont-boot-after-initializing-the-build-environment-for-android/335865#335865
总之最后的解决方法是一次启动之内完成编译工作,然后重新启动以后需要在非GUI环境下安装xorg。
上述基本必须环境搭建完毕就可以开始编译Android源代码了。具体编译流程如下:

ahaxzh@T400:~/workspace/tdroid/tdroid-4.1.1_r6$ . build/envsetup.sh
ahaxzh@T400:~/workspace/tdroid/tdroid-4.1.1_r6$ lunch 1
ahaxzh@T400:~/workspace/tdroid/tdroid-4.1.1_r6$ make -j4

然后就是漫长的编译等待了。整个过程花费的时间视机器硬件配置不通,我编译完成大概用了一整夜。等待编译完成以后就可以运行emulator命令来 测试原版(没有安装TaintDroid的)的Android原版系统了,这时候在工作目录里面会多一个out文件夹,大小13G。

上面所做的这些其实说白了只是为了测试。如果这些都通不过就没有办法接下来进行下面的事情。在第一次运行模拟器的时候,如果出现找不到emulator命令的话需要进行初始化操作:

ahaxzh@T400:~/workspace/tdroid/tdroid-4.1.1_r6$ source build/envsetup.sh
ahaxzh@T400:~/workspace/tdroid/tdroid-4.1.1_r6$ lunch full-eng
ahaxzh@T400:~/workspace/tdroid/tdroid-4.1.1_r6$ emulator

3. 将TaintDroid定制到Android系统内并重新编译

下载TaintDroid源代码:
TaintDroid并不是一个软件,而是嵌入到系统本身的一个服务。所以并不可以直接有Apk文件来安装。需要的是讲其源代码加入到Android系统源代码中编译出来一个含有TaintDroid的定制版系统。
根据官方说明,需要:

Download the TaintDroid4.1 local_manifest.xml and place it in~/tdroid/tdroid-4.1.1_r6/.repo or copy and paste the following content into.repo/local_manifest.xml

其中的XML文件包含了托管在github上的TaintDroid源代码。然后执行如下操作来具体实施下载代码:

ahaxzh@T400:~/workspace/tdroid/tdroid-4.1.1_r6$ repo sync
ahaxzh@T400:~/workspace/tdroid/tdroid-4.1.1_r6$ repo forall dalvik libcore frameworks/base frameworks/native system/vold system/core device/samsung/crespo device/samsung/tuna packages/apps/TaintDroidNotify-c 'git checkout -b taintdroid-4.1.1_r6 --track github/taintdroid-4.1.1_r6 && git pull'

在重新repo的时候会看到:

“warning: local_manifest.xml is deprecated; put local manifests in`/home/ahaxzh/workspace/tdroid/tdroid-4.1.1_r6/.repo/local_manifests` instead”

这样也就知道了local\_manifest.xml文件是什么用的了。等待repo完成以后就完成了TaintDroid的下载。就可以准备重新编译了。是的又要花将近一夜的时间来重新编译。

重新编译定制版Android系统:
首先要自己在工作目录写一个makefile,内容如下:

ahaxzh@T400:~/workspace/tdroid/tdroid-4.1.1_r6$ gedit buildspec.mk

-

# Enable core taint tracking logic (always add this)
WITH_TAINT_TRACKING :=true# Enable taint tracking for ODEX files (always add this)
WITH_TAINT_ODEX :=true# Enable taint tracking in the "fast" (aka ASM) interpreter (recommended)
WITH_TAINT_FAST :=true# Enable additional output for tracking JNI usage (not recommended)#TAINT_JNI_LOG := true# Enable byte-granularity tracking for IPC parcels#WITH_TAINT_BYTE_PARCEL := true

然后执行下面的命令来重新编译定制版ROM(定制TaintDroid的Android系统):

ahaxzh@T400:~/workspace/tdroid/tdroid-4.1.1_r6$ . build/envsetup.sh
ahaxzh@T400:~/workspace/tdroid/tdroid-4.1.1_r6$ lunch full-eng
ahaxzh@T400:~/workspace/tdroid/tdroid-4.1.1_r6$ make clean
ahaxzh@T400:~/workspace/tdroid/tdroid-4.1.1_r6$ make -j4

有了原版系统的编译通过,这次编译基本不会有什么问题,注意到编译的时候会出现一些警告,但是没有给编译造成什么困难。编译的时间同样很久,编译完 成了以后会在工作目录生成新的out文件夹make clear命令会删除原先的原版系统。有一点需要注意的是如果你不缺定是否在系统内嵌入了TaintDroid,你可以通过查看out/target /product/generic 目录下面的install-files.txt来查看是否含有tdroid。到这里一个定制版的ROM就已经生成了,同样可以通过emulator命令来 运行模拟器(可能需要初始化)。

4. 测试并统计TaintDroid实际效果

获取Android SDK及Eclipse
关于AVD(Android模拟器)的创建,Google提供了简单方便的可视化工具来创建。首先需要用到的是Android SDK。可以在:http://developer.android.com/sdk/index.html#download
找到与自己系统相对应的版本。下载并解压后会发现其包含了Android SDK和集成了众多Android应用调试插件的Eclipse IDE。由于SDK 中只含有最新版的SDK,所以需要对SDK 进行更新以便获取需要的版本(Android 4.1)。更新SDK 简单的方法是从Eclipse 重直接点击Android SDK Manager来启动SDK内容管理工具,选择需要的内容打勾安装(需要同意许可)即可。

创建一个TaintDroid定制版ROM的AVD
然后在Eclipse中使用Android Virtual Device Manager来创建一个AVD模拟器,如果直接选择的话,其实选择的是原版的ROM,而我们需要的是嵌入了TaintDroid的ROM,所以这里可以取巧,方法如下:
由于AVD需要的核心内容是system.img(系统镜像)这个系统文件,所以可以使用我们编译完成的Rom来替换掉原生SDK里面的 systen.img。我的自定义ROM的system.img文件在/out/target/product/generic目录里面,而SDK 的system.img文件在sdk/system-images/android-16中,操作时注意备份好原生系统镜像。上面的步骤昨晚了以后就可以 使用AVDM来创建一个我们需要的ADV了,内存、屏幕分辨率根据实际情况进行相应的调整。SDCard是必须的,大多数软件需要。

运行TaintDroid定制版ROM的AVD及测试统计
上面创建完成AVD以后就可以运行了,在AVDM界面点击Start来运行我们的模拟器初次运行会很慢,因为会创建sdcard.img、 userdata.img、userdata-qemu.img、等等一些列的相关镜像文件(放在~/.android/avd目录中)。
进入Android系统后,在系统设置界面里可以更改系统语言,非必要。打开TaintDroidNotify并开启监控。TaintDroid服务就会 在后台运行,这时候如果有程序出现违规操作,就会在系统通知处显示Notify,滑动即可查看具体违规的详细情况,会显示应用名称、违规操作内容、目标 IP地址、时间等。
在网易移动应用商城随机选择好评100W以上的几个应用进行测试结果统计:

酷狗音乐 发送IMEI 42.62.20.242

天天静听 发送IMEI到多个IP地 址202.75.220.21

酷我音乐盒 发送IMEI 221.238.18.38

辣妈帮 发送IMEI到多个IP地址 202.75.220.15等

++++++++++++++++++++++++++++++++++++++

BOSS啊,这什么编辑器嘛。。代码成这样了,我也不知道怎么弄了。就这么着吧。。

http://www.cnblogs.com/ahaxzh/archive/2013/12/02/3454540.html

下面的教程会指导所有的Linux使用者如何在系统上安装SSH,以便通过安卓智能手机远程访问他们的电脑。

如今我们所有人都拥有一台平板或触屏手机,我们经常使用它们在深夜里看电影或电视节目,听歌或者阅读一本好书。你可以把这篇文章称作是为那些懒人们准备的教程,他们在大晚上会因为太过疲惫而懒得去开启他们电脑上的某些程序,更懒得去移动、删除、复制或重命名某些文件,甚至关掉PC。

的确,已经有各种各样的远程桌面解决方案,但是许多方案费用很高,或者实现效果很糟糕,无法像预期一样运行,逼得你最终还是得去电脑上做你原本想做的事情。

在这个教程里面,我们将使用一种简单、安全、高效的协议,它被称为SSH (Secure SHell),它很容易从默认的软件仓库中安装(在Arch linx中是openssh,在Ubuntu中时openssh-server)。

配置SSH服务器

在安装完成后,你需要为SSH服务器进行基本配置。为此,你需要使用文本编辑器编辑/etc/ssh/sshd\_config这个文件。

1.在文件尾部添加下面一行(下面的yourusername使用你的Linux机器上实际存在的用户名代替)

AllowUsers yourusername

2.取消"#PermitRootLogin"这行注释,把"no"替换成"yes":

PermitRootLogin no

3.为了安全起见,你需要修改SSH连接默认的22端口到一个更大编号的端口,譬如在我们的例子中是55441 (建议不要跟着我使用55441,这是我选择的,你可以找另一个四位或者五位数字)。因此,取消注释并编辑"#Port 22"如下(译注:你可以选择大于1024,小于65535的其它端口,前提是没有被其它服务所占用,为什么不试试你的幸运数字?):

Port 55441 

开启SSH服务器

在Ubuntu上,SSH服务通过下面的命令启动:

sudo /etc/init.d/ssh start 

当你每次修改上述配置文件时,都需要通过下面的命令重启:

sudo /etc/init.d/ssh restart 

在Arch Linux上,你可以使用下面的命令启动SSH服务:

sudo systemctl start sshd 

配置安卓设备上的SSH客户端

JuiceSSH似乎是安卓上最好的SSH客户端之一,而且是免费的。此外,如果你认为它的功能简单,也可以花费少量的钱得到更多高级的特性,譬如亚马逊 AWS/EC2 集成,团队协作,以及更多其它的特性。

一旦软件安装完毕,运行它,然后你会要求输入一个加密的密码以保证安全连接的安全。这个密码由AES-256进行加密,因此除非你的设备被偷,否则没有人能够获取他们。

现在,添加一个新连接,选择名称,你的电脑的IP地址,上面设定的端口号和一个需要被创建的身份。

这就是我的Arch Linux机器,可以通过我的安卓平板上的JuiceSSH客户端访问到。如果在这个教程中你遇到问题,请在下面进行评论。


via: http://news.softpedia.com/news/How-to-Control-Your-Linux-PC-with-an-Android-Device-396004.shtml

译者:KayGuoWhu 校对:Caroline

本文由 LCTT 原创翻译,Linux中国 荣誉推出