From 1df0964af5a31bfeed380caca302d019daf398f2 Mon Sep 17 00:00:00 2001 From: fpemud Date: Fri, 10 Nov 2017 12:40:02 +0800 Subject: [PATCH 1/4] fix --- scripts/gen-emugl-entries.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/gen-emugl-entries.py b/scripts/gen-emugl-entries.py index a122ef7..23dcd61 100755 --- a/scripts/gen-emugl-entries.py +++ b/scripts/gen-emugl-entries.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # Copyright 2015 The Android Open Source Project # From 2e632eb41c553448ec2e0d3b4cbbd45960aaea23 Mon Sep 17 00:00:00 2001 From: MatthiasSchuster Date: Sat, 9 Dec 2017 23:36:57 +0100 Subject: [PATCH 2/4] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a1a54f0..9639b5a 100644 --- a/README.md +++ b/README.md @@ -75,7 +75,7 @@ $ anbox-installer This will guide you through the installation process. -**NOTE:** Anbox is currently in a **pre-alpha development state**. Don't expect a +**NOTE:** Anbox is currently in a **alpha development state**. Don't expect a fully working system for a production system with all features you need. You will for sure see bugs and crashes. If you do so, please don't hestitate and report them! From cb678f3807400cd0d2940c6d671074b77f82a015 Mon Sep 17 00:00:00 2001 From: Jiancong <94389147@qq.com> Date: Thu, 17 May 2018 11:12:40 +0800 Subject: [PATCH 3/4] Fix session-manager corrupted caused by memory overflow. --- src/anbox/rpc/channel.cpp | 1 + src/anbox/rpc/constants.h | 2 +- src/anbox/rpc/message_processor.cpp | 8 +++++--- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/anbox/rpc/channel.cpp b/src/anbox/rpc/channel.cpp index 71ffa80..b0c2ead 100644 --- a/src/anbox/rpc/channel.cpp +++ b/src/anbox/rpc/channel.cpp @@ -74,6 +74,7 @@ void Channel::send_message(const std::uint8_t &type, google::protobuf::MessageLite const &message) { const size_t size = message.ByteSize(); const unsigned char header_bytes[header_size] = { + static_cast((size >>16) & 0xff), static_cast((size >> 8) & 0xff), static_cast((size >> 0) & 0xff), type, }; diff --git a/src/anbox/rpc/constants.h b/src/anbox/rpc/constants.h index 1d4265a..4f5d04a 100644 --- a/src/anbox/rpc/constants.h +++ b/src/anbox/rpc/constants.h @@ -20,7 +20,7 @@ namespace anbox { namespace rpc { -static constexpr const long header_size{3}; +static constexpr const long header_size{4}; static constexpr unsigned int const serialization_buffer_size{2048}; enum MessageType { diff --git a/src/anbox/rpc/message_processor.cpp b/src/anbox/rpc/message_processor.cpp index 90e70ef..ba25a5a 100644 --- a/src/anbox/rpc/message_processor.cpp +++ b/src/anbox/rpc/message_processor.cpp @@ -47,9 +47,10 @@ bool MessageProcessor::process_data(const std::vector &data) { while (buffer_.size() > 0) { const auto high = buffer_[0]; - const auto low = buffer_[1]; - size_t const message_size = (high << 8) + low; - const auto message_type = buffer_[2]; + const auto medium = buffer_[1]; + const auto low = buffer_[2]; + size_t const message_size = (high << 16) + (medium << 8) + low; + const auto message_type = buffer_[3]; // If we don't have yet all bytes for a new message return and wait // until we have all. @@ -101,6 +102,7 @@ void MessageProcessor::send_response(::google::protobuf::uint32 id, const size_t size = send_response_buffer.size(); const unsigned char header_bytes[header_size] = { + static_cast((size >> 16) & 0xff), static_cast((size >> 8) & 0xff), static_cast((size >> 0) & 0xff), MessageType::response, }; From 50bf1eeaccea19aecb7bf3fa56b178d8949d62db Mon Sep 17 00:00:00 2001 From: Simon Fels Date: Fri, 25 May 2018 07:43:03 +0200 Subject: [PATCH 4/4] Add installation instructions --- docs/install.md | 106 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 docs/install.md diff --git a/docs/install.md b/docs/install.md new file mode 100644 index 0000000..1735de8 --- /dev/null +++ b/docs/install.md @@ -0,0 +1,106 @@ +# Install Anbox + +To install Anbox your system need to support [snaps](https://snapcraft.io). We +do not officially support any other distribution method of Anbox at the moment +but there are community made packages for various distributions (e.g. Arch Linux). +However please keep in mind that the Anbox project can give not support them +and its solely in the responsibility of the community packager to keep up with +upstream development and update the packaging to any new changes. Please feel +free to report still any bugs you encounter as they may not be related to the +packaging. + +If you don't know about snaps yet head over to [snapcraft.io](https://snapcraft.io/) +to get an introduction of what snaps are, how to install support for them on your +distribution and how to use them. + +The installation of Anbox consists of two steps. + + 1. Install necessary kernel modules + 2. Install the Anbox snap + +In order to support the mandatory kernel subsystems ashmem and binder for the +Android container you have to install two +[DKMS](https://en.wikipedia.org/wiki/Dynamic_Kernel_Module_Support) +based kernel modules. The source for the kernel modules is maintained by the +Anbox project [here](https://github.com/anbox/anbox/tree/master/kernel). + +At the moment we only have packages prepared for Ubuntu in a PPA on Launchpad. +If you want to help to get the packages in your favorite distribution please +come and talk to us or submit a PR with the distribution specific packaging. + +The second step will install the Anbox snap from the store and will give you +everything you need to run the full Anbox experience. + +## Install necessary kernel modules + +In order to add the PPA to your Ubuntu system please run the following commands: + +``` + $ sudo add-apt-repository ppa:morphis/anbox-support + $ sudo apt update + $ sudo apt install anbox-modules-dkms +``` + +These will add the PPA to your system and install the `anbox-modules-dkms` +package which contains the ashmem and binder kernel modules. They will be +automatically rebuild everytime the kernel packages on your system update. + +After you installed the `anbox-modules-dkms` package you have to manually +load the kernel modules. The next time your system starts they will be +automatically loaded. + +``` + $ sudo modprobe ashmem_linux + $ sudo modprobe binder_linux +``` + +Now you should have two new nodes in your systems `/dev` directory: + +``` + $ ls -1 /dev/{ashmem,binder} + /dev/ashmem + /dev/binder +``` + +## Install the Anbox snap + +Installing the Anbox snap is very simple: + +``` + $ snap install --devmode --beta anbox +``` + +If you didn't logged into the Ubuntu Store yet, the `snap` command will +ask you to use `sudo snap ...` in order to install the snap: + +``` + $ sudo snap install --devmode --beta anbox +``` + +At the moment we require the use of `--devmode` as the Anbox snap is not +yet fully confined. Work has started with the upstream `snapd` project to +get support for full confinement. + +As a side effect of using `--devmode` the snap will not automatically update. +In order to update to a newer version you can run: + +``` + $ snap refresh --beta --devmode anbox +``` + +Information about the currently available versions of the snap is available +via: + +``` + $ snap info anbox +``` + +## Available snap channels + +Currently we only use the beta and edge channels for the Anbox snap. The edge +channel tracks the latest development is always synced with the state of the +master branch on github. The beta channel is updated less frequently to provide +a more stable and bug free experience. + +Once proper confinement for the Anbox snap exists we will also start using the +candidate and stable channels.