android 刷ubuntu?Ubuntu for Android

大家好,android 刷ubuntu相信很多的网友都不是很明白,包括Ubuntu for Android也是一样,不过没有关系,接下来就来为大家分享关于android 刷ubuntu和Ubuntu for Android的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!

如何把你的谷歌Nexus手机、平板刷成Ubuntu Touch OS操作系统

这个 Ubuntu Touch系统可以成功的安装到谷歌的 Nexus安卓设备上。早期预览版并不能让你的手机设备具有所有的功能,但一些基本的功能都有。你可以打电话,收发短信,连接无线网络,使用前置和后置摄像头,播多通,以及使用 shell和一些核心应用。你可以把下列设备刷成 Ubuntu Touch OS操作系统:把谷歌 Nexus设备刷成 Ubuntu系统总共需要三个步骤:第一步:安装刷机软件程序下面的步骤是说明如何将刷机程序安装到你的桌面电脑上。首先在你的/etc/apt/sources.list文件中加入 Ubuntu Touch PPA文件源,做法:sudo add-apt-repository ppa:phablet-team/tools然后:sudo apt-get updatesudo apt-get install phablet-tools android-tools-adb android-tools-fastboot第二步:解锁并设置好你的 Nexus设备这一步可以分成两小步。第二步(A)解锁设备:如果你的设备已经解锁,可以略过此步。否则,按照下面的步骤解锁 root。fastboot oem unlock接受条款,继续。第二步(b)设置你的设备:设备解锁后,重新启动。在“开发者选项”里把你的设备设置成 USB调试模式。下面是针对不同的安卓版本的不同做法:在你的电脑上-> adb kill-server; adb start-server现在把你的手机/平板连接上电脑。会弹出一个信息框。接受 host key。第三步:刷 Ubuntu Touch系统在电脑上打开命令窗口,运行如下命令:phablet-flash-b你会被问到是否接受改变,输入“yes”。这样之后 Ubuntu系统就会安装到你的设备上。完成了这一步,当你重启时,系统就是 Ubuntu操作系统了。提示:如果你觉得这个系统不太适合你,你可以下载相应的 Android image文件,把系统重新刷回安卓。免责声明:这个指导只做研究用。我们不对任何操作中产生的事故承担任何责任。

如何在 Android 手机上安装 Ubuntu 13.04

首先,你需要设置QEMU和ARM二进制以及asdebootstrap支持:

sudo apt-get install debootstrap qemu-user-static qemu-system git\

gcc-arm-linux-gnueabihf binfmt-support

现在,创建文件系统本身(这是为2GB图片)和它挂载在/mnt目录中。由于我们并不需要所有的 ext3/ext4(毕竟,最终的结果将要运行的文件内),我们将使用 ext2文件系统:

1

2

3

4

dd if=/dev/zero of=ubuntu.img bs=1024 count=2097152

mkfs.ext2 ubuntu-armhf.ext2.img

sudo mount-o loop ubuntu-armhf.ext2.img/mnt

接下来,使用debootstrap来部署基础环境(这里给出了主要的设置):

1

2

HOSTNAME=ubuntu-armhf sudo debootstrap--variant=minbase--foreign\

--arch armhf raring/mnt

现在在即将完成的chroot设备里部署qemu-arm-static:

1

sudo cp/usr/bin/qemu-arm-static/mnt/usr/bin/

并用它完成剩下的部署工作:

1

2

LANG=C sudo chroot mnt/usr/bin/qemu-arm-static-cpu cortex-a9/bin/bash

./debootstrap/debootstrap--second-stage

一旦上面的工作完成了,我们需要安装apt源。(你也可以选择性的安装deb-src,不过我现在还不需要它):

1

2

echo"deb raring main restricted universe">/etc/apt/sources.list

apt-key adv--keyserver keyserver.ubuntu.com--recv-keys 428D7C01

然后,你就可以安装一些必需的工具(我觉得这些都是必需的):

(译注:wget,vim这些当成必需可以理解,怎么golang和git-core也成必需了?)

1

2

3

4

apt-get update

apt-get install sudo apt-utils dialog less wget vim net-tools openssh-server\

htop tmux build-essential libevent-dev python-dev python-setuptools\

python-lxml sqlite3 nodejs npm golang git-core

如果你的手机电力够用,你也可以安装VNC服务(和一个迷你的X11设置):

1

apt-get install--no-install-recommends tightvncserver

你可能需要运行QEMU1,所以你应该多安装几个终端,尽管这不是Android chroot必需的:

1

2

cp/etc/init/tty1.conf/etc/init/ttyAMA0.conf

sed-i"s/tty1/ttyAMA0/"/etc/init/ttyAMA0.conf

这还没完,你还需要一个拥有sudo权限的用户1:

1

2

adduser ubuntu

usermod-aG sudo ubuntu

重启你的chroot设备:

现在我们对已经完成安装的Linux做下调整,复制init.sh脚本能放到/root/init.sh,确保其可执行 3,添加上下面这些挂载点:

1

2

3

4

5

6

sudo cp init.sh/mnt/root/init.sh

sudo chmod+x/mnt/root/init.sh

sudo rm/mnt/usr/bin/qemu-arm-static

sudo mkdir/mnt/sdcard

sudo mkdir/dev/shm

sudo umount/mnt

怎样在Ubuntu下安装Android SDK/ADB

Ubuntu电脑安装Android SDK/ADB

第一步,你要下载Linux版Android SDK的安装或文件包,然后你需要从Android SDK Manager内下载Platform Tools

Package

请从Google官方获取Android

SDK安装或文件包,通常情况,你下载的文件名为android-sdk_rxx-linux.tgz的形式,rxx代表版本,比如,r16版,即android-sdk_r16-linux.tgz,r24版,即android-sdk_r24-linux.tgz

请放置Android SDK安装或文件包在你的用户主目录

在你的Ubuntu电脑上打开终端窗口

解压Android SDK文件:

cd~

tar-zxvf android-sdk_r16-linux.tgz

在~/android-sdk-linux/tools字目录,有一个叫做android的可执行文件,尽管名字是android,但它实际上是Android

SDK Manager

运行Android SDK Manager:

./~/android-sdk-linux/tools/android

选择Android SDK

Tools与Android SDK Platform-tools项,点Install

packages安装Platform Tools

Package工具包。包括ADB与Fastboot可执行的文件在内的工具包都会被下载,由于下载的文件较多而需要一定的时间,你能去喝点东西

你下载的Platform Tools

Package工具包文件将位于新创建的~/android-sdk-linux/platform-tools目录

第二步,修改ADB与Fastboot可执行文件的默认PATH路径环境。PATH环境变量可以是在~/.profile(或~/.bash_profile)或者~/.bashrc文件内修改,~/.profile文件是读取所有交互式Shell的登录,~/.bashrc文件读取所有非交互式Shell的登录(如sftp),在大多数默认情况下,~/.profile文件导入所有~/.bashrc文件的设置。PATH命令设定的改变必须包括/android-sdk-linux/tools与/android-sdk-linux/platform-tools目录

kevdog的PATH命令设定通过Ubuntu系统内初始的默认编辑器Gedit在~/.bashrc文件底部增加了一行:

export

PATH=${PATH}:${HOME}/android-sdk-linux/tools:${HOME}/android-sdk-linux/platform-tools

第三步,我们需要为Ubuntu创建udev设备管理规则,从而让设备在通过USB端口连接到电脑时能被正确地识别

将设备连接到电脑,然后执行命令:

lsusb

你会看到类似于下面的输出信息:

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation

2.0 root hub

Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 004

Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 005 Device 001:

ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 001 Device 063: ID 04e8:6860

Samsung Electronics Co., Ltd

由于kevdog的设备是Samsung的某款设备,因此你能看到相应的识别信息:

Bus 001 Device 063: ID

04e8:6860 Samsung Electronics Co., Ltd

我们来解释下上面的识别信息:

Bus 001 Device

063,设备端的名称是/dev/bus/usb/001/063,即这个信息可以帮助我们确定设备端的名称

04e8,vendorID,即供货商编号

6860,productID,即产品编号

使用设备端的名称/dev/bus/usb/001/063可以让我们查询设备的属性,查询这些属性有时很有必要,因为udev设备管理匹配设备是基于特定标准的。为此,我们需要一个正确的udev设备匹配规则集,这个过程的第一步就是查询能被连接或插入到我们规则集的准则,这可以通过udevadm程序来实现,并且有两种方式现,它们生成的输出信息为我们的设备构建udev设备管理规则:

udevadm查询udev设备管理规则方法1:

udevadm info-q all-n<name of device

node>

根据原作者的实际情况,设备端名称是/dev/bus/usb/001/063,因此命令是:

udevadm info-q all-n/dev/bus/usb/001/063

你会看到类似于下面的输出信息:

$ udevadm info-q all-n/dev/bus/usb/001/063

P:

/devices/pci0000:00/0000:00:1d.7/usb1/1-8

N: bus/usb/001/063

S:

libmtp-1-8

S: GalaxyNexus

E: UDEV_LOG=3

E:

DEVPATH=/devices/pci0000:00/0000:00:1d.7/usb1/1-8

E: MAJOR=189

E:

MINOR=62

E: DEVNAME=/dev/bus/usb/001/063

E: DEVTYPE=usb_device

E:

DRIVER=usb

E: PRODUCT=4e8/6860/216

E: TYPE=0/0/0

E: BUSNUM=001

E: DEVNUM=063

E: SUBSYSTEM=usb

E: ID_MTP_DEVICE=1

E:

ID_MEDIA_PLAYER=samsung_galaxy-s2

E: ID_VENDOR=samsung

E:

ID_VENDOR_ENC=samsung

E: ID_VENDOR_ID=04e8

E: ID_MODEL=Galaxy

E:

ID_MODEL_ENC=Galaxy

E: ID_MODEL_ID=6860

E: ID_REVISION=0216

E:

ID_SERIAL=samsung_Galaxy_0146B06501005018

E:

ID_SERIAL_SHORT=0146B06501005018

E: ID_BUS=usb

E:

ID_USB_INTERFACES=:ffff00:ff4201:

E: DEVLINKS=/dev/libmtp-1-8

/dev/GalaxyNexus

E: TAGS=:udev-acl:

我们使用的规则从有E:(E=ENV=Device

Property设备属性值)的行开始

udevadm查询udev设备管理规则方法2:

udevadm info-a-p$(udevadm info-q path

-n<name of device node>)

根据原作者的实际情况,设备端名称是/dev/bus/usb/001/063,因此命令是:

udevadm info-a-p

$(udevadm info-q path-n/dev/bus/usb/001/063)

你会看到类似于下面的输出信息:

$ udevadm info-a-p$(udevadm info-q path-n/dev/bus/usb/001/063)

Udevadm info starts with the device specified by the devpath and then

walks up the chain of parent devices. It prints for every device

found,

all possible attributes in the udev rules key format.

A rule to match, can

be composed by the attributes of the device

and the attributes from one

single parent device.

looking at device

'/devices/pci0000:00/0000:00:1d.7/usb1/1-8':

KERNEL=="1-8"

SUBSYSTEM=="usb"

DRIVER=="usb"

ATTR{configuration}==""

ATTR{bNumInterfaces}==" 2"

ATTR{bConfigurationValue}=="1"

ATTR{bmAttributes}=="80"

ATTR{bMaxPower}=="500mA"

ATTR{urbnum}=="29"

ATTR{idVendor}=="04e8"

ATTR{idProduct}=="6860"

ATTR{bcdDevice}=="0216"

ATTR{bDeviceClass}=="00"

ATTR{bDeviceSubClass}=="00"

ATTR{bDeviceProtocol}=="00"

ATTR{bNumConfigurations}=="1"

ATTR{bMaxPacketSize0}=="64"

ATTR{speed}=="480"

ATTR{busnum}=="1"

ATTR{devnum}=="63"

ATTR{devpath}=="8"

ATTR{version}==" 2.00"

ATTR{maxchild}=="0"

ATTR{quirks}=="0x0"

ATTR{avoid_reset_quirk}=="0"

ATTR{authorized}=="1"

ATTR{manufacturer}=="samsung"

ATTR{product}=="Galaxy"

ATTR{serial}=="0146B06501005018"

looking at parent device'/devices/pci0000:00/0000:00:1d.7/usb1':

KERNELS=="usb1"

SUBSYSTEMS=="usb"

DRIVERS=="usb"

ATTRS{configuration}==""

ATTRS{bNumInterfaces}==" 1"

ATTRS{bConfigurationValue}=="1"

ATTRS{bmAttributes}=="e0"

ATTRS{bMaxPower}==" 0mA"

ATTRS{urbnum}=="1403"

ATTRS{idVendor}=="1d6b"

ATTRS{idProduct}=="0002"

ATTRS{bcdDevice}=="0300"

ATTRS{bDeviceClass}=="09"

ATTRS{bDeviceSubClass}=="00"

ATTRS{bDeviceProtocol}=="00"

ATTRS{bNumConfigurations}=="1"

ATTRS{bMaxPacketSize0}=="64"

ATTRS{speed}=="480"

ATTRS{busnum}=="1"

ATTRS{devnum}=="1"

ATTRS{devpath}=="0"

ATTRS{version}==" 2.00"

ATTRS{maxchild}=="8"

ATTRS{quirks}=="0x0"

ATTRS{avoid_reset_quirk}=="0"

ATTRS{authorized}=="1"

ATTRS{manufacturer}=="Linux 3.0.0-14-generic

ehci_hcd"

ATTRS{product}=="EHCI Host Controller"

ATTRS{serial}=="0000:00:1d.7"

ATTRS{authorized_default}=="1"

looking at parent device'/devices/pci0000:00/0000:00:1d.7':

KERNELS=="0000:00:1d.7"

SUBSYSTEMS=="pci"

DRIVERS=="ehci_hcd"

ATTRS{vendor}=="0x8086"

ATTRS{device}=="0x27cc"

ATTRS{subsystem_vendor}=="0x103c"

ATTRS{subsystem_device}=="0x3010"

ATTRS{class}=="0x0c0320"

ATTRS{irq}=="20"

ATTRS{local_cpus}=="ff"

ATTRS{local_cpulist}=="0-7"

ATTRS{dma_mask_bits}=="32"

ATTRS{consistent_dma_mask_bits}=="32"

ATTRS{broken_parity_status}=="0"

ATTRS{msi_bus}==""

ATTRS{companion}==""

looking at

parent device'/devices/pci0000:00':

KERNELS=="pci0000:00"

SUBSYSTEMS==""

DRIVERS==""

我们使用的规则从有ATTRS(ATTRS=Device

Attributes设备属性)的行开始

不管是ENV,还是ATTRS,我们可以构建一个udev设备管理规则集。规则集的名称可以随意,根据原作者的意图,我们叫做51-android.rules:

你能这样建立规则集文件:

gksu gedit/etc/udev/rules.d/51-android.rules

之后,请在规则集文件中加入相关的规则,以原作者的规则来看,注意是一行一个:

SUBSYSTEM=="usb",

ENV{ID_VENDOR_ID}=="04e8", ENV{ID_MODEL}=="Galaxy", MODE="0666",

SYMLINK+="GalaxyNexus"

SUBSYSTEM=="usb", ENV{ID_VENDOR_ID}=="04e8",

ENV{ID_MODEL_ID}=="6860", MODE="0666", SYMLINK+="GalaxyNexus"

SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", ATTR{idProduct}=="6860",

ATTR{product}=="Galaxy" MODE="0666", SYMLINK+="GalaxyNexus"

如上面所加的规则,这些规则匹配准则是SUBSYSTEM,

ENV,ATTR,它只会修改设备的模式MODE(0666=rw-rw-rw-)与创建链接于/dev/GalaxyNexus的GalaxyNexus标识。当然,更多的指令可以分配给设备,如插入或移除设备时的执行命令,你能这样指定指令:

ACTION=="add", RUN+="<name of action>"

ACTION==”remove”,

RUN+="<name of action>"

例如,我们要设定设备在插入或弹出时播放一个声音或MP3文件,可以如下指令设定:

ACTION=="add", RUN+="/usr/local/bin/NexusMount.sh"

ACTION==”remove”, RUN+="/usr/local/bin/NexusUnmount.sh"

需要注意的是,每个ACTION指令设定必须在它自己的命令行;目录必须正确;指令可以是多重设定

一旦规则构建完成,我们需要保存/etc/udev/rules.d/51-android.rules规则文件

在你执行规则集前,测试一下通常是一个好主意,因为那样你能很容易地找出编写规则集的错误:

你能使用udevadm工具简单地完成规则集的测试:

udevadm info-q path-n d=<device

name>

根据原作者的设备端名/dev/bus/usb/001/063,测试行为:

udevadm test--action="SUBSYSTEM=="usb", ENV{ID_VENDOR_ID}=="04e8",

ENV{ID_MODEL}=="Galaxy" MODE="0666", SYMLINK+="GalaxyNexus""$(udevadm info-q

path-n/dev/bus/usb/001/063)

虽然测试输出行相当长,两行输出信息正确地识别规则集的指令设定:

udev_rules_apply_to_event: MODE 0666

/etc/udev/rules.d/51-android.rules:1

udev_rules_apply_to_event: LINK

'GalaxyNexus'/etc/udev/rules.d/51-android.rules:1

一旦你确认了规则集正确,请重启udev设备管理服务:

sudo service udev restart

第四步,退出电脑的登录,然后重新登录回

在设备插入的情况下,执行ADB命令,如确认设备连接:

$ adb devices

你会看到设备识别号信息,根据原作者的设备,它是

0146B06501005018 device

如果你的设备已启动在Fastboot模式,许多设备不启动可能也行,你能执行Fastboot命令,如标准的Fastboot设备:

$

fastboot devices

阅读剩余
THE END