Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
anbox
提交
945e6f1f
A
anbox
项目概览
openeuler
/
anbox
通知
24
Star
1
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
anbox
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
945e6f1f
编写于
7月 01, 2018
作者:
S
Simon Fels
提交者:
GitHub
7月 01, 2018
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' into explicit-search-path-for-boost
上级
e0d50867
9a95b53d
变更
14
隐藏空白更改
内联
并排
Showing
14 changed file
with
329 addition
and
129 deletion
+329
-129
external/backtrace-cpp/CMakeLists.txt
external/backtrace-cpp/CMakeLists.txt
+1
-1
external/backtrace-cpp/backward.hpp
external/backtrace-cpp/backward.hpp
+1
-0
scripts/container-manager.sh
scripts/container-manager.sh
+17
-0
src/CMakeLists.txt
src/CMakeLists.txt
+224
-111
src/anbox/cli.h
src/anbox/cli.h
+1
-1
src/anbox/cmds/container_manager.cpp
src/anbox/cmds/container_manager.cpp
+40
-2
src/anbox/cmds/container_manager.h
src/anbox/cmds/container_manager.h
+2
-0
src/anbox/common/mount_entry.cpp
src/anbox/common/mount_entry.cpp
+5
-1
src/anbox/container/lxc_container.cpp
src/anbox/container/lxc_container.cpp
+12
-4
src/anbox/container/lxc_container.h
src/anbox/container/lxc_container.h
+2
-1
src/anbox/container/service.cpp
src/anbox/container/service.cpp
+5
-5
src/anbox/container/service.h
src/anbox/container/service.h
+9
-3
src/anbox/system_configuration.cpp
src/anbox/system_configuration.cpp
+8
-0
src/anbox/system_configuration.h
src/anbox/system_configuration.h
+2
-0
未找到文件。
external/backtrace-cpp/CMakeLists.txt
浏览文件 @
945e6f1f
...
@@ -38,7 +38,7 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_COMPILER_IS_GNUCXX)
...
@@ -38,7 +38,7 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_COMPILER_IS_GNUCXX)
endif
()
endif
()
# ANBOX: allow old-style casts
# ANBOX: allow old-style casts
set
(
CMAKE_CXX_FLAGS
"
${
CMAKE_CXX_FLAGS
}
-Wno-error=old-style-cast -Wno-error=switch-default
-Wno-error=implicit-fallthrough
"
)
set
(
CMAKE_CXX_FLAGS
"
${
CMAKE_CXX_FLAGS
}
-Wno-error=old-style-cast -Wno-error=switch-default"
)
###############################################################################
###############################################################################
# BACKWARD OBJECT
# BACKWARD OBJECT
...
...
external/backtrace-cpp/backward.hpp
浏览文件 @
945e6f1f
...
@@ -1391,6 +1391,7 @@ private:
...
@@ -1391,6 +1391,7 @@ private:
if
(
die_has_pc
(
die
,
pc
))
{
if
(
die_has_pc
(
die
,
pc
))
{
return
result
;
return
result
;
}
}
/* fall through */
default:
default:
bool
declaration
=
false
;
bool
declaration
=
false
;
Dwarf_Attribute
attr_mem
;
Dwarf_Attribute
attr_mem
;
...
...
scripts/container-manager.sh
浏览文件 @
945e6f1f
...
@@ -10,6 +10,11 @@ DATA_PATH=$SNAP_COMMON/
...
@@ -10,6 +10,11 @@ DATA_PATH=$SNAP_COMMON/
ROOTFS_PATH
=
$DATA_PATH
/rootfs
ROOTFS_PATH
=
$DATA_PATH
/rootfs
ANDROID_IMG
=
$SNAP
/android.img
ANDROID_IMG
=
$SNAP
/android.img
if
[
"
$(
id
-u
)
"
!=
0
]
;
then
echo
"ERROR: You need to run the container manager as root"
exit
1
fi
if
[
!
-e
$ANDROID_IMG
]
;
then
if
[
!
-e
$ANDROID_IMG
]
;
then
echo
"ERROR: android image does not exist"
echo
"ERROR: android image does not exist"
exit
1
exit
1
...
@@ -60,7 +65,19 @@ start() {
...
@@ -60,7 +65,19 @@ start() {
export
ANBOX_LOG_LEVEL
=
debug
export
ANBOX_LOG_LEVEL
=
debug
fi
fi
EXTRA_ARGS
=
enable_rootfs_overlay
=
"
$(
snapctl get rootfs-overlay.enable
)
"
if
[
"
$enable_rootfs_overlay
"
=
true
]
;
then
EXTRA_ARGS
=
"
$EXTRA_ARGS
--use-rootfs-overlay"
fi
privileged_container
=
"
$(
snapctl get container.privileged
)
"
if
[
"
$privileged_container
"
=
true
]
;
then
EXTRA_ARGS
=
"
$EXTRA_ARGS
--privileged"
fi
exec
$AA_EXEC
$SNAP
/bin/anbox-wrapper.sh container-manager
\
exec
$AA_EXEC
$SNAP
/bin/anbox-wrapper.sh container-manager
\
"
$EXTRA_ARGS
"
\
--data-path
=
$DATA_PATH
\
--data-path
=
$DATA_PATH
\
--android-image
=
$ANDROID_IMG
\
--android-image
=
$ANDROID_IMG
\
--daemon
--daemon
...
...
src/CMakeLists.txt
浏览文件 @
945e6f1f
...
@@ -62,175 +62,288 @@ target_link_libraries(anbox-protobuf
...
@@ -62,175 +62,288 @@ target_link_libraries(anbox-protobuf
${
PROTOBUF_LITE_LIBRARIES
}
)
${
PROTOBUF_LITE_LIBRARIES
}
)
set
(
SOURCES
set
(
SOURCES
anbox/logger.cpp
anbox/android/intent.cpp
anbox/utils.cpp
anbox/android/intent.h
anbox/cli.cpp
anbox/android/ip_config_builder.cpp
anbox/runtime.cpp
anbox/android/ip_config_builder.h
anbox/daemon.cpp
anbox/system_configuration.cpp
anbox/application/database.cpp
anbox/not_reachable.cpp
anbox/application/database.h
anbox/application/launcher_storage.cpp
anbox/application/launcher_storage.h
anbox/application/manager.h
anbox/audio/client_info.h
anbox/audio/server.cpp
anbox/audio/server.h
anbox/audio/sink.h
anbox/audio/source.h
anbox/bridge/android_api_stub.cpp
anbox/bridge/android_api_stub.h
anbox/bridge/platform_api_skeleton.cpp
anbox/bridge/platform_api_skeleton.h
anbox/bridge/platform_message_processor.cpp
anbox/bridge/platform_message_processor.h
anbox/build/config.h
anbox/build/config.h.in
anbox/build/config.h.in
anbox/android/intent.cpp
anbox/cmds/container_manager.cpp
anbox/android/ip_config_builder.cpp
anbox/cmds/container_manager.h
anbox/cmds/launch.cpp
anbox/cmds/launch.h
anbox/cmds/session_manager.cpp
anbox/cmds/session_manager.h
anbox/cmds/system_info.cpp
anbox/cmds/system_info.h
anbox/cmds/version.cpp
anbox/cmds/version.h
anbox/cmds/wait_ready.cpp
anbox/cmds/wait_ready.h
anbox/common/binary_writer.cpp
anbox/common/binary_writer.h
anbox/common/dispatcher.cpp
anbox/common/dispatcher.h
anbox/common/fd.cpp
anbox/common/fd.cpp
anbox/common/fd.h
anbox/common/fd_sets.h
anbox/common/fd_sets.h
anbox/common/variable_length_array.h
anbox/common/wait_handle.cpp
anbox/common/dispatcher.cpp
anbox/common/small_vector.h
anbox/common/type_traits.h
anbox/common/message_channel.cpp
anbox/common/scope_ptr.h
anbox/common/loop_device.cpp
anbox/common/loop_device_allocator.cpp
anbox/common/loop_device_allocator.cpp
anbox/common/loop_device_allocator.h
anbox/common/loop_device.cpp
anbox/common/loop_device.h
anbox/common/message_channel.cpp
anbox/common/message_channel.h
anbox/common/mount_entry.cpp
anbox/common/mount_entry.cpp
anbox/common/binary_writer.cpp
anbox/common/mount_entry.h
anbox/common/scope_ptr.h
anbox/testing/gtest_utils.h
anbox/common/small_vector.h
anbox/common/type_traits.h
anbox/common/variable_length_array.h
anbox/common/wait_handle.cpp
anbox/common/wait_handle.h
anbox/container/service.cpp
anbox/container/client.cpp
anbox/container/client.cpp
anbox/container/client.h
anbox/container/configuration.h
anbox/container/configuration.h
anbox/container/container.cpp
anbox/container/container.cpp
anbox/container/container.h
anbox/container/lxc_container.cpp
anbox/container/lxc_container.cpp
anbox/container/management_api_stub.cpp
anbox/container/lxc_container.h
anbox/container/management_api_skeleton.cpp
anbox/container/management_api_message_processor.cpp
anbox/container/management_api_message_processor.cpp
anbox/container/management_api_message_processor.h
anbox/container/management_api_skeleton.cpp
anbox/container/management_api_skeleton.h
anbox/container/management_api_stub.cpp
anbox/container/management_api_stub.h
anbox/container/service.cpp
anbox/container/service.h
anbox/network/credentials.cpp
anbox/dbus/bus.cpp
anbox/network/message_sender.h
anbox/dbus/bus.h
anbox/network/message_receiver.h
anbox/dbus/codecs.h
anbox/network/message_processor.h
anbox/dbus/interface.h
anbox/network/connector.h
anbox/dbus/sd_bus_helpers.h
anbox/network/connection_creator.h
anbox/dbus/skeleton/application_manager.cpp
anbox/network/published_socket_connector.cpp
anbox/dbus/skeleton/application_manager.h
anbox/network/connections.h
anbox/dbus/skeleton/service.cpp
anbox/network/socket_connection.cpp
anbox/dbus/skeleton/service.h
anbox/network/socket_messenger.cpp
anbox/dbus/stub/application_manager.cpp
anbox/network/delegate_message_processor.cpp
anbox/dbus/stub/application_manager.h
anbox/network/delegate_connection_creator.h
anbox/network/base_socket_messenger.cpp
anbox/network/local_socket_messenger.cpp
anbox/network/tcp_socket_messenger.cpp
anbox/network/socket_helper.cpp
anbox/network/tcp_socket_connector.cpp
anbox/rpc/channel.cpp
anbox/rpc/pending_call_cache.cpp
anbox/rpc/constants.h
anbox/rpc/connection_creator.cpp
anbox/rpc/message_processor.cpp
anbox/rpc/template_message_processor.h
anbox/rpc/make_protobuf_object.h
anbox/graphics/opengles_message_processor.cpp
anbox/graphics/buffer_queue.cpp
anbox/graphics/buffered_io_stream.cpp
anbox/graphics/buffered_io_stream.cpp
anbox/graphics/gl_renderer_server.cpp
anbox/graphics/buffered_io_stream.h
anbox/graphics/buffer_queue.cpp
anbox/graphics/buffer_queue.h
anbox/graphics/density.cpp
anbox/graphics/density.cpp
anbox/graphics/density.h
anbox/graphics/density.h
anbox/graphics/rect.cpp
anbox/graphics/gl_extensions.h
anbox/graphics/gl_renderer_server.cpp
anbox/graphics/gl_renderer_server.h
anbox/graphics/layer_composer.cpp
anbox/graphics/layer_composer.cpp
anbox/graphics/layer_composer.h
anbox/graphics/multi_window_composer_strategy.cpp
anbox/graphics/multi_window_composer_strategy.cpp
anbox/graphics/single_window_composer_strategy.cpp
anbox/graphics/multi_window_composer_strategy.h
anbox/graphics/program_family.cpp
anbox/graphics/opengles_message_processor.cpp
anbox/graphics/opengles_message_processor.h
anbox/graphics/primitives.h
anbox/graphics/primitives.h
anbox/graphics/program_family.cpp
anbox/graphics/program_family.h
anbox/graphics/rect.cpp
anbox/graphics/rect.h
anbox/graphics/renderer.h
anbox/graphics/renderer.h
anbox/graphics/gl_extensions.h
anbox/graphics/single_window_composer_strategy.cpp
anbox/graphics/single_window_composer_strategy.h
anbox/graphics/emugl/ColorBuffer.cpp
anbox/graphics/emugl/ColorBuffer.cpp
anbox/graphics/emugl/ColorBuffer.h
anbox/graphics/emugl/DispatchTables.h
anbox/graphics/emugl/DisplayManager.cpp
anbox/graphics/emugl/DisplayManager.cpp
anbox/graphics/emugl/RendererConfig.cpp
anbox/graphics/emugl/DisplayManager.h
anbox/graphics/emugl/Renderable.cpp
anbox/graphics/emugl/Renderer.cpp
anbox/graphics/emugl/ReadBuffer.cpp
anbox/graphics/emugl/ReadBuffer.cpp
anbox/graphics/emugl/ReadBuffer.h
anbox/graphics/emugl/Renderable.cpp
anbox/graphics/emugl/Renderable.h
anbox/graphics/emugl/RenderApi.cpp
anbox/graphics/emugl/RenderApi.cpp
anbox/graphics/emugl/RenderApi.h
anbox/graphics/emugl/RenderContext.cpp
anbox/graphics/emugl/RenderContext.cpp
anbox/graphics/emugl/RenderContext.h
anbox/graphics/emugl/RenderControl.cpp
anbox/graphics/emugl/RenderControl.cpp
anbox/graphics/emugl/RenderControl.h
anbox/graphics/emugl/RendererConfig.cpp
anbox/graphics/emugl/RendererConfig.h
anbox/graphics/emugl/Renderer.cpp
anbox/graphics/emugl/Renderer.h
anbox/graphics/emugl/RenderThread.cpp
anbox/graphics/emugl/RenderThread.cpp
anbox/graphics/emugl/RenderThread.h
anbox/graphics/emugl/RenderThreadInfo.cpp
anbox/graphics/emugl/RenderThreadInfo.cpp
anbox/graphics/emugl/RenderThreadInfo.h
anbox/graphics/emugl/TextureDraw.cpp
anbox/graphics/emugl/TextureDraw.cpp
anbox/graphics/emugl/TextureDraw.h
anbox/graphics/emugl/TextureResize.cpp
anbox/graphics/emugl/TextureResize.cpp
anbox/graphics/emugl/TextureResize.h
anbox/graphics/emugl/TimeUtils.cpp
anbox/graphics/emugl/TimeUtils.cpp
anbox/graphics/emugl/TimeUtils.h
anbox/graphics/emugl/WindowSurface.cpp
anbox/graphics/emugl/WindowSurface.cpp
anbox/graphics/emugl/WindowSurface.h
anbox/
audio/server
.cpp
anbox/
input/device
.cpp
anbox/
audio/client_info
.h
anbox/
input/device
.h
anbox/
audio/source.h
anbox/
input/manager.cpp
anbox/
audio/sink
.h
anbox/
input/manager
.h
anbox/wm/display.cpp
anbox/network/base_socket_messenger.cpp
anbox/wm/task.cpp
anbox/network/base_socket_messenger.h
anbox/wm/stack.cpp
anbox/network/connection_context.cpp
anbox/wm/manager.cpp
anbox/network/connection_context.h
anbox/wm/single_window_manager.cpp
anbox/network/connection_creator.cpp
anbox/wm/multi_window_manager.cpp
anbox/network/connection_creator.h
anbox/wm/window_state.cpp
anbox/network/connections.h
anbox/wm/window.cpp
anbox/network/connector.h
anbox/network/credentials.cpp
anbox/network/credentials.h
anbox/network/delegate_connection_creator.h
anbox/network/delegate_message_processor.cpp
anbox/network/delegate_message_processor.h
anbox/network/fd_socket_transmission.cpp
anbox/network/fd_socket_transmission.h
anbox/network/local_socket_messenger.cpp
anbox/network/local_socket_messenger.h
anbox/network/message_processor.h
anbox/network/message_receiver.h
anbox/network/message_sender.h
anbox/network/published_socket_connector.cpp
anbox/network/published_socket_connector.h
anbox/network/socket_connection.cpp
anbox/network/socket_connection.h
anbox/network/socket_helper.cpp
anbox/network/socket_helper.h
anbox/network/socket_messenger.cpp
anbox/network/socket_messenger.h
anbox/network/tcp_socket_connector.cpp
anbox/network/tcp_socket_connector.h
anbox/network/tcp_socket_messenger.cpp
anbox/network/tcp_socket_messenger.h
anbox/platform/base_platform.cpp
anbox/platform/base_platform.cpp
anbox/platform/base_platform.h
anbox/platform/null/platform.cpp
anbox/platform/null/platform.cpp
anbox/platform/null/platform.h
anbox/platform/sdl/
sdl_wrapper.h
anbox/platform/sdl/
audio_sink.cpp
anbox/platform/sdl/
window.cpp
anbox/platform/sdl/
audio_sink.h
anbox/platform/sdl/keycode_converter.cpp
anbox/platform/sdl/keycode_converter.cpp
anbox/platform/sdl/keycode_converter.h
anbox/platform/sdl/platform.cpp
anbox/platform/sdl/platform.cpp
anbox/platform/sdl/audio_sink.cpp
anbox/platform/sdl/platform.h
anbox/platform/sdl/sdl_wrapper.h
anbox/platform/sdl/window.cpp
anbox/platform/sdl/window.h
anbox/input/manager.cpp
anbox/protobuf/anbox_bridge.proto
anbox/input/device.cpp
anbox/protobuf/anbox_container.proto
anbox/protobuf/anbox_rpc.proto
anbox/protobuf/google_protobuf_guard.cpp
anbox/qemu/pipe_connection_creator.cpp
anbox/qemu/adb_message_processor.cpp
anbox/qemu/null_message_processor.cpp
anbox/qemu/adb_message_processor.h
anbox/qemu/qemud_message_processor.cpp
anbox/qemu/at_parser.cpp
anbox/qemu/at_parser.h
anbox/qemu/bootanimation_message_processor.cpp
anbox/qemu/bootanimation_message_processor.h
anbox/qemu/boot_properties_message_processor.cpp
anbox/qemu/boot_properties_message_processor.cpp
anbox/qemu/hwcontrol_message_processor.cpp
anbox/qemu/boot_properties_message_processor.h
anbox/qemu/sensors_message_processor.cpp
anbox/qemu/camera_message_processor.cpp
anbox/qemu/camera_message_processor.cpp
anbox/qemu/camera_message_processor.h
anbox/qemu/fingerprint_message_processor.cpp
anbox/qemu/fingerprint_message_processor.cpp
anbox/qemu/fingerprint_message_processor.h
anbox/qemu/gsm_message_processor.cpp
anbox/qemu/gsm_message_processor.cpp
anbox/qemu/at_parser.cpp
anbox/qemu/gsm_message_processor.h
anbox/qemu/bootanimation_message_processor.cpp
anbox/qemu/hwcontrol_message_processor.cpp
anbox/qemu/adb_message_processor.cpp
anbox/qemu/hwcontrol_message_processor.h
anbox/qemu/null_message_processor.cpp
anbox/bridge/platform_message_processor.cpp
anbox/qemu/null_message_processor.h
anbox/bridge/platform_api_skeleton.cpp
anbox/qemu/pipe_connection_creator.cpp
anbox/bridge/android_api_stub.cpp
anbox/qemu/pipe_connection_creator.h
anbox/qemu/qemud_message_processor.cpp
anbox/qemu/qemud_message_processor.h
anbox/qemu/sensors_message_processor.cpp
anbox/qemu/sensors_message_processor.h
anbox/dbus/bus.cpp
anbox/rpc/channel.cpp
anbox/dbus/bus.h
anbox/rpc/channel.h
anbox/dbus/sd_bus_helpers.h
anbox/rpc/connection_creator.cpp
anbox/dbus/interface.h
anbox/rpc/connection_creator.h
anbox/dbus/skeleton/service.cpp
anbox/rpc/constants.h
anbox/dbus/skeleton/service.h
anbox/rpc/make_protobuf_object.h
anbox/dbus/skeleton/application_manager.cpp
anbox/rpc/message_processor.cpp
anbox/dbus/skeleton/application_manager.h
anbox/rpc/message_processor.h
anbox/dbus/stub/application_manager.cpp
anbox/rpc/pending_call_cache.cpp
anbox/dbus/stub/application_manager.h
anbox/rpc/pending_call_cache.h
anbox/rpc/template_message_processor.h
anbox/application/launcher_storage.cpp
anbox/testing/gtest_utils.h
anbox/application/database.cpp
anbox/application/manager.h
anbox/cmds/version.cpp
anbox/ui/splash_screen.cpp
anbox/cmds/session_manager.cpp
anbox/ui/splash_screen.h
anbox/cmds/container_manager.cpp
anbox/cmds/launch.cpp
anbox/cmds/system_info.cpp
anbox/cmds/wait_ready.cpp
anbox/cmds/wait_ready.h
anbox/utils/environment_file.cpp
anbox/utils/environment_file.cpp
anbox/utils/environment_file.h
anbox/ui/splash_screen.cpp
anbox/wm/display.cpp
anbox/wm/display.h
anbox/wm/manager.cpp
anbox/wm/manager.h
anbox/wm/multi_window_manager.cpp
anbox/wm/multi_window_manager.h
anbox/wm/single_window_manager.cpp
anbox/wm/single_window_manager.h
anbox/wm/stack.cpp
anbox/wm/stack.h
anbox/wm/task.cpp
anbox/wm/task.h
anbox/wm/window.cpp
anbox/wm/window.h
anbox/wm/window_state.cpp
anbox/wm/window_state.h
anbox/cli.cpp
anbox/cli.h
anbox/daemon.cpp
anbox/daemon.h
anbox/defer_action.h
anbox/do_not_copy_or_move.h
anbox/do_not_copy_or_move.h
anbox/logger.cpp
anbox/logger.h
anbox/not_reachable.cpp
anbox/not_reachable.h
anbox/optional.h
anbox/optional.h
anbox/defer_action.h
)
anbox/utils.cpp
anbox/utils.h
anbox/runtime.cpp
anbox/runtime.h
anbox/system_configuration.cpp
anbox/system_configuration.h
)
add_library
(
anbox-core STATIC
${
SOURCES
}
)
add_library
(
anbox-core STATIC
${
SOURCES
}
)
target_link_libraries
(
anbox-core
target_link_libraries
(
anbox-core
...
...
src/anbox/cli.h
浏览文件 @
945e6f1f
...
@@ -71,7 +71,7 @@ std::ostream& operator<<(std::ostream& out,
...
@@ -71,7 +71,7 @@ std::ostream& operator<<(std::ostream& out,
}
}
// We are imposing size constraints to ensure a consistent CLI layout.
// We are imposing size constraints to ensure a consistent CLI layout.
typedef
SizeConstrainedString
<
2
0
>
Name
;
typedef
SizeConstrainedString
<
3
0
>
Name
;
typedef
SizeConstrainedString
<
60
>
Usage
;
typedef
SizeConstrainedString
<
60
>
Usage
;
typedef
SizeConstrainedString
<
100
>
Description
;
typedef
SizeConstrainedString
<
100
>
Description
;
...
...
src/anbox/cmds/container_manager.cpp
浏览文件 @
945e6f1f
...
@@ -52,6 +52,9 @@ anbox::cmds::ContainerManager::ContainerManager()
...
@@ -52,6 +52,9 @@ anbox::cmds::ContainerManager::ContainerManager()
flag
(
cli
::
make_flag
(
cli
::
Name
{
"daemon"
},
flag
(
cli
::
make_flag
(
cli
::
Name
{
"daemon"
},
cli
::
Description
{
"Mark service as being started as systemd daemon"
},
cli
::
Description
{
"Mark service as being started as systemd daemon"
},
daemon_
));
daemon_
));
flag
(
cli
::
make_flag
(
cli
::
Name
{
"use-rootfs-overlay"
},
cli
::
Description
{
"Use an overlay for the Android rootfs"
},
enable_rootfs_overlay_
));
action
([
&
](
const
cli
::
Command
::
Context
&
)
{
action
([
&
](
const
cli
::
Command
::
Context
&
)
{
try
{
try
{
...
@@ -87,7 +90,10 @@ anbox::cmds::ContainerManager::ContainerManager()
...
@@ -87,7 +90,10 @@ anbox::cmds::ContainerManager::ContainerManager()
return
EXIT_FAILURE
;
return
EXIT_FAILURE
;
auto
rt
=
Runtime
::
create
();
auto
rt
=
Runtime
::
create
();
auto
service
=
container
::
Service
::
create
(
rt
,
privileged_
);
container
::
Service
::
Configuration
config
;
config
.
privileged
=
privileged_
;
config
.
rootfs_overlay
=
enable_rootfs_overlay_
;
auto
service
=
container
::
Service
::
create
(
rt
,
config
);
rt
->
start
();
rt
->
start
();
trap
->
run
();
trap
->
run
();
...
@@ -183,8 +189,17 @@ bool anbox::cmds::ContainerManager::setup_mounts() {
...
@@ -183,8 +189,17 @@ bool anbox::cmds::ContainerManager::setup_mounts() {
return
false
;
return
false
;
}
}
auto
final_android_rootfs_dir
=
android_rootfs_dir
;
if
(
enable_rootfs_overlay_
)
{
if
(
!
setup_rootfs_overlay
())
return
false
;
final_android_rootfs_dir
=
SystemConfiguration
::
instance
().
combined_rootfs_dir
();
}
for
(
const
auto
&
dir_name
:
std
::
vector
<
std
::
string
>
{
"cache"
,
"data"
})
{
for
(
const
auto
&
dir_name
:
std
::
vector
<
std
::
string
>
{
"cache"
,
"data"
})
{
auto
target_dir_path
=
fs
::
path
(
android_rootfs_dir
)
/
dir_name
;
auto
target_dir_path
=
fs
::
path
(
final_
android_rootfs_dir
)
/
dir_name
;
auto
src_dir_path
=
SystemConfiguration
::
instance
().
data_dir
()
/
dir_name
;
auto
src_dir_path
=
SystemConfiguration
::
instance
().
data_dir
()
/
dir_name
;
if
(
!
fs
::
exists
(
src_dir_path
))
{
if
(
!
fs
::
exists
(
src_dir_path
))
{
...
@@ -214,3 +229,26 @@ bool anbox::cmds::ContainerManager::setup_mounts() {
...
@@ -214,3 +229,26 @@ bool anbox::cmds::ContainerManager::setup_mounts() {
return
true
;
return
true
;
}
}
bool
anbox
::
cmds
::
ContainerManager
::
setup_rootfs_overlay
()
{
const
auto
combined_rootfs_path
=
SystemConfiguration
::
instance
().
combined_rootfs_dir
();
if
(
!
fs
::
exists
(
combined_rootfs_path
))
fs
::
create_directories
(
combined_rootfs_path
);
const
auto
overlay_path
=
SystemConfiguration
::
instance
().
overlay_dir
();
if
(
!
fs
::
exists
(
overlay_path
))
fs
::
create_directories
(
overlay_path
);
const
auto
rootfs_path
=
SystemConfiguration
::
instance
().
rootfs_dir
();
const
auto
overlay_config
=
utils
::
string_format
(
"lowerdir=%s:%s"
,
rootfs_path
,
overlay_path
);
auto
m
=
common
::
MountEntry
::
create
(
"overlay"
,
combined_rootfs_path
,
"overlay"
,
MS_RDONLY
,
overlay_config
.
c_str
());
if
(
!
m
)
{
ERROR
(
"Failed to setup rootfs overlay"
);
mounts_
.
clear
();
return
false
;
}
mounts_
.
push_back
(
m
);
DEBUG
(
"Successfully setup rootfs overlay"
);
return
true
;
}
src/anbox/cmds/container_manager.h
浏览文件 @
945e6f1f
...
@@ -36,6 +36,7 @@ class ContainerManager : public cli::CommandWithFlagsAndAction {
...
@@ -36,6 +36,7 @@ class ContainerManager : public cli::CommandWithFlagsAndAction {
private:
private:
bool
setup_mounts
();
bool
setup_mounts
();
bool
setup_rootfs_overlay
();
std
::
string
android_img_path_
;
std
::
string
android_img_path_
;
std
::
string
data_path_
;
std
::
string
data_path_
;
...
@@ -43,6 +44,7 @@ class ContainerManager : public cli::CommandWithFlagsAndAction {
...
@@ -43,6 +44,7 @@ class ContainerManager : public cli::CommandWithFlagsAndAction {
std
::
vector
<
std
::
shared_ptr
<
common
::
MountEntry
>>
mounts_
;
std
::
vector
<
std
::
shared_ptr
<
common
::
MountEntry
>>
mounts_
;
bool
privileged_
=
false
;
bool
privileged_
=
false
;
bool
daemon_
=
false
;
bool
daemon_
=
false
;
bool
enable_rootfs_overlay_
=
false
;
};
};
}
// namespace cmds
}
// namespace cmds
}
// namespace anbox
}
// namespace anbox
...
...
src/anbox/common/mount_entry.cpp
浏览文件 @
945e6f1f
...
@@ -33,8 +33,12 @@ std::shared_ptr<MountEntry> MountEntry::create(const boost::filesystem::path &sr
...
@@ -33,8 +33,12 @@ std::shared_ptr<MountEntry> MountEntry::create(const boost::filesystem::path &sr
if
(
!
data
.
empty
())
if
(
!
data
.
empty
())
mount_data
=
reinterpret_cast
<
const
void
*>
(
data
.
c_str
());
mount_data
=
reinterpret_cast
<
const
void
*>
(
data
.
c_str
());
if
(
::
mount
(
src
.
c_str
(),
target
.
c_str
(),
!
fs_type
.
empty
()
?
fs_type
.
c_str
()
:
nullptr
,
flags
,
mount_data
)
!=
0
)
DEBUG
(
"Mounting %s on %s ..."
,
src
,
target
);
if
(
::
mount
(
src
.
c_str
(),
target
.
c_str
(),
!
fs_type
.
empty
()
?
fs_type
.
c_str
()
:
nullptr
,
flags
,
mount_data
)
<
0
)
{
ERROR
(
"Failed to mount %s: %s"
,
target
,
strerror
(
errno
));
return
nullptr
;
return
nullptr
;
}
entry
->
active_
=
true
;
entry
->
active_
=
true
;
...
...
src/anbox/container/lxc_container.cpp
浏览文件 @
945e6f1f
...
@@ -58,8 +58,12 @@ constexpr int device_minor(__dev_t dev) {
...
@@ -58,8 +58,12 @@ constexpr int device_minor(__dev_t dev) {
namespace
anbox
{
namespace
anbox
{
namespace
container
{
namespace
container
{
LxcContainer
::
LxcContainer
(
bool
privileged
,
const
network
::
Credentials
&
creds
)
LxcContainer
::
LxcContainer
(
bool
privileged
,
bool
rootfs_overlay
,
const
network
::
Credentials
&
creds
)
:
state_
(
State
::
inactive
),
container_
(
nullptr
),
privileged_
(
privileged
),
creds_
(
creds
)
{
:
state_
(
State
::
inactive
),
container_
(
nullptr
),
privileged_
(
privileged
),
rootfs_overlay_
(
rootfs_overlay
),
creds_
(
creds
)
{
utils
::
ensure_paths
({
utils
::
ensure_paths
({
SystemConfiguration
::
instance
().
container_config_dir
(),
SystemConfiguration
::
instance
().
container_config_dir
(),
SystemConfiguration
::
instance
().
log_dir
(),
SystemConfiguration
::
instance
().
log_dir
(),
...
@@ -68,7 +72,8 @@ LxcContainer::LxcContainer(bool privileged, const network::Credentials &creds)
...
@@ -68,7 +72,8 @@ LxcContainer::LxcContainer(bool privileged, const network::Credentials &creds)
LxcContainer
::~
LxcContainer
()
{
LxcContainer
::~
LxcContainer
()
{
stop
();
stop
();
if
(
container_
)
lxc_container_put
(
container_
);
if
(
container_
)
lxc_container_put
(
container_
);
}
}
void
LxcContainer
::
setup_id_map
()
{
void
LxcContainer
::
setup_id_map
()
{
...
@@ -261,7 +266,10 @@ void LxcContainer::start(const Configuration &configuration) {
...
@@ -261,7 +266,10 @@ void LxcContainer::start(const Configuration &configuration) {
set_config_item
(
"lxc.init.cmd"
,
"/anbox-init.sh"
);
set_config_item
(
"lxc.init.cmd"
,
"/anbox-init.sh"
);
const
auto
rootfs_path
=
SystemConfiguration
::
instance
().
rootfs_dir
();
auto
rootfs_path
=
SystemConfiguration
::
instance
().
rootfs_dir
();
if
(
rootfs_overlay_
)
rootfs_path
=
SystemConfiguration
::
instance
().
combined_rootfs_dir
();
DEBUG
(
"Using rootfs path %s"
,
rootfs_path
);
DEBUG
(
"Using rootfs path %s"
,
rootfs_path
);
set_config_item
(
"lxc.rootfs.path"
,
rootfs_path
);
set_config_item
(
"lxc.rootfs.path"
,
rootfs_path
);
...
...
src/anbox/container/lxc_container.h
浏览文件 @
945e6f1f
...
@@ -29,7 +29,7 @@ namespace anbox {
...
@@ -29,7 +29,7 @@ namespace anbox {
namespace
container
{
namespace
container
{
class
LxcContainer
:
public
Container
{
class
LxcContainer
:
public
Container
{
public:
public:
LxcContainer
(
bool
privileged
,
const
network
::
Credentials
&
creds
);
LxcContainer
(
bool
privileged
,
bool
rootfs_overlay
,
const
network
::
Credentials
&
creds
);
~
LxcContainer
();
~
LxcContainer
();
void
start
(
const
Configuration
&
configuration
)
override
;
void
start
(
const
Configuration
&
configuration
)
override
;
...
@@ -45,6 +45,7 @@ class LxcContainer : public Container {
...
@@ -45,6 +45,7 @@ class LxcContainer : public Container {
State
state_
;
State
state_
;
lxc_container
*
container_
;
lxc_container
*
container_
;
bool
privileged_
;
bool
privileged_
;
bool
rootfs_overlay_
;
network
::
Credentials
creds_
;
network
::
Credentials
creds_
;
};
};
}
// namespace container
}
// namespace container
...
...
src/anbox/container/service.cpp
浏览文件 @
945e6f1f
...
@@ -34,8 +34,8 @@ namespace fs = boost::filesystem;
...
@@ -34,8 +34,8 @@ namespace fs = boost::filesystem;
namespace
anbox
{
namespace
anbox
{
namespace
container
{
namespace
container
{
std
::
shared_ptr
<
Service
>
Service
::
create
(
const
std
::
shared_ptr
<
Runtime
>
&
rt
,
bool
privileged
)
{
std
::
shared_ptr
<
Service
>
Service
::
create
(
const
std
::
shared_ptr
<
Runtime
>
&
rt
,
const
Configuration
&
config
)
{
auto
sp
=
std
::
shared_ptr
<
Service
>
(
new
Service
(
rt
,
privileged
));
auto
sp
=
std
::
shared_ptr
<
Service
>
(
new
Service
(
rt
,
config
));
auto
wp
=
std
::
weak_ptr
<
Service
>
(
sp
);
auto
wp
=
std
::
weak_ptr
<
Service
>
(
sp
);
auto
delegate_connector
=
std
::
make_shared
<
network
::
DelegateConnectionCreator
<
boost
::
asio
::
local
::
stream_protocol
>>
(
auto
delegate_connector
=
std
::
make_shared
<
network
::
DelegateConnectionCreator
<
boost
::
asio
::
local
::
stream_protocol
>>
(
...
@@ -59,11 +59,11 @@ std::shared_ptr<Service> Service::create(const std::shared_ptr<Runtime> &rt, boo
...
@@ -59,11 +59,11 @@ std::shared_ptr<Service> Service::create(const std::shared_ptr<Runtime> &rt, boo
return
sp
;
return
sp
;
}
}
Service
::
Service
(
const
std
::
shared_ptr
<
Runtime
>
&
rt
,
bool
privileged
)
Service
::
Service
(
const
std
::
shared_ptr
<
Runtime
>
&
rt
,
const
Configuration
&
config
)
:
dispatcher_
(
anbox
::
common
::
create_dispatcher_for_runtime
(
rt
)),
:
dispatcher_
(
anbox
::
common
::
create_dispatcher_for_runtime
(
rt
)),
next_connection_id_
(
0
),
next_connection_id_
(
0
),
connections_
(
std
::
make_shared
<
network
::
Connections
<
network
::
SocketConnection
>>
()),
connections_
(
std
::
make_shared
<
network
::
Connections
<
network
::
SocketConnection
>>
()),
privileged_
(
privileged
)
{
config_
(
config
)
{
}
}
Service
::~
Service
()
{
Service
::~
Service
()
{
...
@@ -86,7 +86,7 @@ void Service::new_client(std::shared_ptr<boost::asio::local::stream_protocol::so
...
@@ -86,7 +86,7 @@ void Service::new_client(std::shared_ptr<boost::asio::local::stream_protocol::so
auto
pending_calls
=
std
::
make_shared
<
rpc
::
PendingCallCache
>
();
auto
pending_calls
=
std
::
make_shared
<
rpc
::
PendingCallCache
>
();
auto
rpc_channel
=
std
::
make_shared
<
rpc
::
Channel
>
(
pending_calls
,
messenger
);
auto
rpc_channel
=
std
::
make_shared
<
rpc
::
Channel
>
(
pending_calls
,
messenger
);
auto
server
=
std
::
make_shared
<
container
::
ManagementApiSkeleton
>
(
auto
server
=
std
::
make_shared
<
container
::
ManagementApiSkeleton
>
(
pending_calls
,
std
::
make_shared
<
LxcContainer
>
(
privileged_
,
messenger
->
creds
()));
pending_calls
,
std
::
make_shared
<
LxcContainer
>
(
config_
.
privileged
,
config_
.
rootfs_overlay
,
messenger
->
creds
()));
auto
processor
=
std
::
make_shared
<
container
::
ManagementApiMessageProcessor
>
(
auto
processor
=
std
::
make_shared
<
container
::
ManagementApiMessageProcessor
>
(
messenger
,
pending_calls
,
server
);
messenger
,
pending_calls
,
server
);
...
...
src/anbox/container/service.h
浏览文件 @
945e6f1f
...
@@ -30,12 +30,18 @@ namespace anbox {
...
@@ -30,12 +30,18 @@ namespace anbox {
namespace
container
{
namespace
container
{
class
Service
:
public
std
::
enable_shared_from_this
<
Service
>
{
class
Service
:
public
std
::
enable_shared_from_this
<
Service
>
{
public:
public:
static
std
::
shared_ptr
<
Service
>
create
(
const
std
::
shared_ptr
<
Runtime
>
&
rt
,
bool
privileged
);
struct
Configuration
{
bool
privileged
=
false
;
bool
rootfs_overlay
=
true
;
};
static
std
::
shared_ptr
<
Service
>
create
(
const
std
::
shared_ptr
<
Runtime
>
&
rt
,
const
Configuration
&
config
);
~
Service
();
~
Service
();
private:
private:
Service
(
const
std
::
shared_ptr
<
Runtime
>
&
rt
,
bool
privileged
);
Service
(
const
std
::
shared_ptr
<
Runtime
>
&
rt
,
const
Configuration
&
config
);
int
next_id
();
int
next_id
();
void
new_client
(
std
::
shared_ptr
<
void
new_client
(
std
::
shared_ptr
<
...
@@ -46,7 +52,7 @@ class Service : public std::enable_shared_from_this<Service> {
...
@@ -46,7 +52,7 @@ class Service : public std::enable_shared_from_this<Service> {
std
::
atomic
<
int
>
next_connection_id_
;
std
::
atomic
<
int
>
next_connection_id_
;
std
::
shared_ptr
<
network
::
Connections
<
network
::
SocketConnection
>>
connections_
;
std
::
shared_ptr
<
network
::
Connections
<
network
::
SocketConnection
>>
connections_
;
std
::
shared_ptr
<
Container
>
backend_
;
std
::
shared_ptr
<
Container
>
backend_
;
bool
privileged
_
;
Configuration
config
_
;
};
};
}
// namespace container
}
// namespace container
}
// namespace anbox
}
// namespace anbox
...
...
src/anbox/system_configuration.cpp
浏览文件 @
945e6f1f
...
@@ -55,6 +55,14 @@ std::string anbox::SystemConfiguration::rootfs_dir() const {
...
@@ -55,6 +55,14 @@ std::string anbox::SystemConfiguration::rootfs_dir() const {
return
(
data_path
/
"rootfs"
).
string
();
return
(
data_path
/
"rootfs"
).
string
();
}
}
std
::
string
anbox
::
SystemConfiguration
::
overlay_dir
()
const
{
return
(
data_path
/
"rootfs-overlay"
).
string
();
}
std
::
string
anbox
::
SystemConfiguration
::
combined_rootfs_dir
()
const
{
return
(
data_path
/
"combined-rootfs"
).
string
();
}
std
::
string
anbox
::
SystemConfiguration
::
log_dir
()
const
{
std
::
string
anbox
::
SystemConfiguration
::
log_dir
()
const
{
return
(
data_path
/
"logs"
).
string
();
return
(
data_path
/
"logs"
).
string
();
}
}
...
...
src/anbox/system_configuration.h
浏览文件 @
945e6f1f
...
@@ -34,6 +34,8 @@ class SystemConfiguration {
...
@@ -34,6 +34,8 @@ class SystemConfiguration {
boost
::
filesystem
::
path
data_dir
()
const
;
boost
::
filesystem
::
path
data_dir
()
const
;
std
::
string
rootfs_dir
()
const
;
std
::
string
rootfs_dir
()
const
;
std
::
string
overlay_dir
()
const
;
std
::
string
combined_rootfs_dir
()
const
;
std
::
string
log_dir
()
const
;
std
::
string
log_dir
()
const
;
std
::
string
socket_dir
()
const
;
std
::
string
socket_dir
()
const
;
std
::
string
container_config_dir
()
const
;
std
::
string
container_config_dir
()
const
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录