ubuntu server编译安卓8遇到的报错(一)

在Ubuntu Server上编译安卓8.0时,由于系统中同时存在JDK 1.7和1.8,导致编译错误。通过`update-alternatives`命令尝试切换到JDK 1.8未完全生效。为彻底解决,需要安装IcedTeaPlugin。在解决软件源和DNS问题后,安装成功并完成切换,但后续编译仍然遇到其他问题,将在续篇中继续讨论。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

a).配置JDK编译环境

我电脑里装了两个版本的jdk:1.7和1.8,而安卓8需要1.8版本的jdk,所以需要切换jdk版本,使用如下命令进行切换:

查下当前的java 版本:java -version
切换命令:sudo update-alternatives --config java
sudo update-alternatives --config javac

b).出现编译错误

java.lang.UnsupportedClassVersionError: com/google/doclava/Doclava : Unsupported major.minor version 52.0
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:803)
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
	at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
	at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
	at java.lang.ClassLoader.loadCl
<think>我们正在为N1004网口小主机选择Ubuntu版本,用于构建透明代理系统,并抓取HTTPS数据包。系统需要支持eBPF、vethpair、mitmproxy和Python脚本。关键需求:1.透明代理:需要将网络流量重定向到代理(如mitmproxy),通常需要eBPF或iptables等技术的支持。2.抓取HTTPS数据包:需要mitmproxy进行中间人攻击解密HTTPS,同时需要系统支持网络配置(如vethpair)来构建网络环境。3.硬件兼容性:N100处理器是Intel的低功耗处理器,属于较新的架构,需要Ubuntu内核支持。考虑因素:-Ubuntu版本:需要较新的内核以支持eBPF特性(尤其是eBPF的成熟度)和硬件驱动(特别是网卡驱动)。-稳定性:对于网络设备,稳定性也很重要。推荐版本:1.Ubuntu22.04LTS(JammyJellyfish)-内核版本:5.15(初始版本),可升级到更高版本(如5.19或6.x)。-LTS版本,提供长期支持(5年),适合稳定运行。-对eBPF的支持较好,但5.15内核的eBPF功能可能不是最新,但可以通过安装HWE(HardwareEnablement)内核升级到更新的内核(如6.2)。-社区支持广泛,软件包丰富。2.Ubuntu23.10(ManticMinotaur)或即将发布的24.04LTS:-更新的内核(23.10使用6.5内核),对新型硬件(如N100)的支持更好,eBPF特性更全面。-24.04LTS在2024年4月发布,将提供长期支持,但目前(2023年)尚未发布。-如果追求最新特性且可以接受非LTS版本(23.10支持9个月),或者等待24.04,可以选择。建议:对于生产环境或需要稳定性的场景,推荐Ubuntu22.04LTS,并启用HWE内核升级到更新的内核(如6.2或6.5)。这样既保证了稳定性,又能获得较新的内核特性。步骤:1.安装Ubuntu22.04LTS。2.启用HWE内核:```sudoaptinstall--install-recommendslinux-generic-hwe-22.04```然后重启。3.验证内核版本:`uname-r`应该显示6.x内核。4.安装必要的工具:-eBPF工具链:`sudoaptinstallbpfcc-toolslinux-headers-$(uname-r)`-Python环境:推荐使用Python3(Ubuntu22.04默认包含Python3.10)-mitmproxy:`sudoaptinstallmitmproxy`或通过pip安装(推荐使用pip安装最新版)5.配置透明代理:-使用eBPF程序(如TC或XDP)进行流量重定向,或者使用iptables/nftables进行流量重定向到mitmproxy。-创建vethpair来隔离网络流量。6.配置mitmproxy:-生成CA证书并安装到需要监控的设备上。-设置透明代理模式,mitmproxy监听在指定的端口,然后通过iptables或eBPF将流量重定向到该端口。注意事项:-抓取HTTPS需要客户端信任mitmproxy的CA证书,否则HTTPS连接会报错-确保系统的IP转发已开启:`sysctlnet.ipv4.ip_forward=1`参考引用:[^1]:关于在Ubuntu上使用特定硬件(如惯导模块)的别名设置,说明Ubuntu在设备管理上的灵活性。[^4]:零刻EQ12N100的AIO教程中使用了ESXi,但我们的场景是直接使用Ubuntu,说明该硬件在虚拟化环境中运行良好,因此直接运行Ubuntu也应兼容。因此,我们选择Ubuntu22.04LTS并升级内核,以平衡稳定性和新特性需求。相关问题:1.如何在Ubuntu22.04上升级到更新的内核版本?2.如何配置eBPF程序来重定向网络流量?3.如何使用vethpair创建网络命名空间隔离?4.如何设置mitmproxy作为透明代理并解密HTTPS流量?5.在透明代理环境中,如何处理DNS请求以避免泄漏?</think>### 选择适合N100小主机的Ubuntu版本实现HTTPS透明代理 针对您的需求(N100四网口小主机、透明代理、HTTPS抓包),结合硬件特性和功能要求,推荐方案如下: --- ### **推荐Ubuntu版本:Ubuntu Server 22.04 LTS** **理由**: 1. **内核兼容性** - 原生支持Intel N100处理器(Alder Lake-N架构)[^3][^4],内核版本≥5.15提供完整的驱动支持,包括: - 4×2.5G网卡驱动(RTL8125/RTL8156等) - eBPF内核子系统(需≥5.15) - 通过`sudo apt install --install-recommends linux-generic-hwe-22.04`可升级到6.2+内核,优化eBPF性能。 2. **长期支持(LTS)** 官方维护至2027年,保障系统稳定性,适合7×24小时运行的网关设备。 3. **关键功能支持** | 功能 | Ubuntu 22.04支持情况 | |---------------------|-------------------------------------| | eBPF | 完整支持(包括TC、XDP程序加载) | | veth pair | 内核原生支持网络命名空间隔离 | | mitmproxy兼容性 | Python 3.10+环境完善 | | HTTPS解密 | 预装OpenSSL 3.0+和CA证书管理工具 | --- ### **关键组件部署步骤** #### 1. **透明代理架构** ```mermaid graph LR A[物理网卡] -->|流量重定向| B(eBPF TC程序) B --> C{veth pair} C --> D[mitmproxy容器] C --> E[处理脚本] E -->|解密数据| F[Python分析程序] ``` #### 2. **核心组件安装** ```bash # 安装eBPF开发工具 sudo apt install bpfcc-tools libbpf-dev clang llvm # 部署mitmproxy透明代理 python3 -m pip install mitmproxy mitmproxy --mode transparent --showhost # 配置veth pair(示例) sudo ip link add veth0 type veth peer name veth1 sudo ip netns add proxy-ns sudo ip link set veth1 netns proxy-ns ``` #### 3. **HTTPS抓包关键配置** ```python # Python脚本示例:mitmproxy事件处理 from mitmproxy import http def request(flow: http.HTTPFlow): if flow.request.pretty_url.endswith(".jpg"): flow.response = http.Response.make(404, b"Blocked by proxy") # 启动命令:mitmdump -s script.py --ssl-insecure ``` --- ### **注意事项** 1. **证书信任** 需将mitmproxy的CA证书(`~/.mitmproxy/mitmproxy-ca-cert.pem`)导入客户端设备,否则HTTPS解密会触发告警。 2. **性能优化** - 启用SR-IOV虚拟化(需在BIOS中开启VT-d)[^4] - 为eBPF程序开启JIT编译:`sysctl net.core.bpf_jit_enable=1` 3. **安全加固** ```bash # 限制非root用户访问网卡 sudo setcap cap_net_admin,cap_net_raw+eip /usr/bin/python3 ``` --- ### **备选方案对比** | 系统版本 | 优势 | 缺点 | |-------------------|-------------------------------|--------------------------| | Ubuntu 20.04 LTS | 更轻量级 | 内核版本较低(5.4),需手动升级内核支持N100 | | Ubuntu 23.10 | 默认内核6.5+,eBPF特性更完善 | 非LTS版本,维护周期短 | | Debian 12 | 资源占用更低 | 软件包更新滞后于Ubuntu | > **结论**:优先选择**Ubuntu 22.04 LTS + HWE内核**,在稳定性和新特性之间取得最佳平衡[^4]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值