首页 > 系统相关 >使用schroot在Ubuntu 22.04中安装“Ubuntu 16.04子系统

使用schroot在Ubuntu 22.04中安装“Ubuntu 16.04子系统

时间:2024-08-28 09:57:17浏览次数:11  
标签:bin zh CN 16.04 22.04 usr Ubuntu UTF LC

新的高通SDK需要较新的Ubuntu版本,但老的高通SDK却不兼容,因为Ubuntu 22.04的rootfs环境与16.04差异巨大,导致SDK中部分项目在编译时由于依赖不兼容导致编译出错。同时又因为服务器硬件升级导致安装旧版本的Ubuntu系统时,部分硬件由于驱动问题得不到支持,不得不将系统升级到新版本的Ubuntu上来。那又该如何去兼容老的高通SDK编译环境?使用Dockers和LXC容器,会带来文件权限问题,操作非常麻烦;使用PVE或Hyper-V等虚拟机方案也不错,但是硬件资源利用率又是一个问题。schroot就是可以兼容当前用户权限的虚拟化方案。

 

下面介绍如何安装schroot并部署Ubuntu 16.04 LTS(xenial)根文件系统。

# 安装ubuntu 16.04LTS Rootfs

sudo apt install debootstrap schroot
mkdir -p ~/chroot
cd ~/chroot
sudo debootstrap --arch=amd64 xenial ./ https://mirrors.tuna.tsinghua.edu.cn/ubuntu/


# 挂载基本目录,用于chroot(非schroot)时进入环境进行初始化部署,后续可以取消挂载并依靠schroot自动挂载相关目录
sudo mount --bind /proc /home/pypyn/chroot/proc
sudo mount --bind /sys /home/pypyn/chroot/sys
sudo mount --bind /dev /home/pypyn/chroot/dev
sudo mount --bind /dev/pts /home/pypyn/chroot/dev/pts

# 配置文件:xenial.conf,放到/etc/schroot/chroot.d/,该配置使用/etc/schroot/default配置修改而来
[xenial]
description=Ubuntu 16.04 LTS (build env)
type=directory
directory=/home/pypyn/chroot/
users=pypyn
groups=pypyn
root-groups=root
aliases=default

问题解决方案:
1、无法显示中文
首先用root(sudo schroot)用户重装字符集
locale-gen zh_CN.UTF-8 en_US.UTF-8

然后修改/etc/default/locale
# File generated by update-locale
LANG="zh_CN.UTF-8"
LANGUAGE="zh_CN:zh:en_US:en"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"

2、初始化的环境执行apt update,报证书校验错误问题
在host系统中修改chroot系统的/ect/apt/sources.list,将https改为http
使用root进入chroot系统环境重装证书,执行

sudo schroot

apt --reinstall install ssl-cert ca-certificates

从ubuntu 16.04LTS机器上拷贝/etc/ssl文件夹到chroot对应目录
然后再更新源

apt update

3、修改挂载目录/etc/schroot/default/fstab
注意workspace和Qualcomm需要在chroot系统环境中提前创建好空文件夹

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/proc           /proc           none    rw,bind         0       0
/sys            /sys            none    rw,bind         0       0
/dev            /dev            none    rw,bind         0       0
/dev/pts        /dev/pts        none    rw,bind         0       0
/dev/shm        /dev/shm        none    rw,bind         0       0
/home/pypyn/workspace           /home/pypyn/workspace           none    rw,bind         0       0
/home/pypyn/Qualcomm            /home/pypyn/Qualcomm           none    rw,bind         0       0
/tmp            /tmp            none    rw,bind         0       0
/pkg            /pkg            none    rw,bind         0       0
/prj            /prj            none    rw,bind         0       0

4、安装CP编译环境
安装工具

apt install gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip libssl-dev libxml-simple-perl

安装make

wget http://ftp.gnu.org/pub/gnu/make/make-3.81.tar.bz2
tar xf make-3.81.tar.bz2
cd make-3.81
./configure
make
make install
mv /usr/bin/make /usr/bin/make-4.1
ln -sf /usr/local/bin/make /usr/bin/make


安装openssl
wget https://www.openssl.org/source/old/1.0.1/openssl-1.0.1f.tar.gz
tar xf openssl-1.0.1f.tar.gz
cd openssl-1.0.1f
./config --prefix=/usr/local --openssldir=/usr/local/openssl
make
mv /usr/bin/pod2man /usr/bin/pod2man_bak
make install
mv /usr/bin/pod2man_bak /usr/bin/pod2man
mv /usr/bin/openssl /usr/bin/openssl.old
mv /usr/include/openssl /usr/include/openssl.old
ln -sf /usr/local/bin/openssl /usr/bin/openssl
ln -sf /usr/local/include/openssl/ /usr/include/openssl
openssl version -a

安装python2

apt install libsqlite3-dev
wget https://www.python.org/ftp/python/2.7.18/Python-2.7.18.tgz
./configure
make -16
make install

sudo apt install python2.7
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.5 2

修改脚本解释器
rm /bin/sh
ln -s /bin/bash /bin/sh

配置user环境

cd ~
touch .bash_history
touch .bash_logout

这两个文件从源主机上拷贝
.profile
.bashrc

将以下环境变量添加到.bashrc
# set PATH so it includes user's private bin directories
export PATH=~/.local/bin:$PATH
export ARMLMD_LICENSE_FILE=/pkg/qct/software/arm/RVDS/5.01bld94/license.dat
export HEXAGON_ROOT=$HOME/Qualcomm/HEXAGON_Tools
export LANG="zh_CN.UTF-8"
export LANGUAGE="zh_CN:zh:en_US:en"
export LC_NUMERIC="zh_CN.UTF-8"
export LC_TIME="zh_CN.UTF-8"
export LC_MONETARY="zh_CN.UTF-8"
export LC_PAPER="zh_CN.UTF-8"
export LC_IDENTIFICATION="zh_CN.UTF-8"
export LC_NAME="zh_CN.UTF-8"
export LC_ADDRESS="zh_CN.UTF-8"
export LC_TELEPHONE="zh_CN.UTF-8"
export LC_MEASUREMENT="zh_CN.UTF-8"

 

标签:bin,zh,CN,16.04,22.04,usr,Ubuntu,UTF,LC
From: https://www.cnblogs.com/pypyn/p/18383981

相关文章

  • 基于Ubuntu部署企业级kubernetes集群
    1.主机名配置由于本次使用3台主机完成kubernetes集群部署,其中1台为master节点,名称为k8s-master01;其中2台为workoer节点,名称分别为:k8s-worker01及k8s-worker02master节点hostnamectlset-hostnamek8s-master01Worker01节点hostnamectlset-hostnamek8s-worker01Work......
  • ubuntu环境下部署LNMP集成环境超详细图文教程
    ubuntu系统下安装LNMP集成环境一、Nginx安装二、安装及配置MySQL数据库修改密码三、安装PHP四、配置Nginx服务​编辑五、配置PHP 本文使用的Ubuntu版本为20.04。php开发中集成环境的安装是必不可少的技能。而LNMP代表的是:Linux系统下Nginx+MySQL+PHP这种网站服务器......
  • Debian12、Ubuntu22安装英特尔wifi驱动
    1、打开英特尔®无线适配器的Linux*支持查看wifi所需的内核版本 以AX200为例,需要Linux内核版本为5.1,Debian12默认内核版本为6.1,Ubuntu24默认内核版本为6..8,因此不需要更新内核。 2、打开适用于Linux*的英特尔®无线Wi-Fi驱动程序下载内核(非必要步骤)和驱动。3、安......
  • 主机windows系统,虚拟机安装ubuntu无线网络连接配置
    主机系统:windows系统虚拟机版本:VMware10.0.1build-1379776ubuntu系统版本:ubuntu16.04LTSlinux系统配置:按照顺序点击下图中的1位置,会出现一个下拉列表然后点击下拉列表中2的位置,编辑连接然后出现下图中所示界面选中3所示位置,然后点击4“编辑”依次配置如下箭头所......
  • Ubuntu20.04安装ROS,一次成功,详细简洁
     仔细看文档系统要求:Ubuntu20.04ROS安装版本:Noetic首先,最重要的就是ROS软件源,很多小伙伴都是在网上随便复制的软件源和密钥,非常不建议,复制三方的软件源,因为如果出新的,可能旧的官方维护就少了,ROS就容易崩。我是使用中科大的ROS软件源接下来教大家怎么做进这个网址https:/......
  • x86 ubuntu20.04 ros:noetic-perception-focal 镜像测试
    https://hub.docker.com/_/ros/tags?page=&page_size=&ordering=&name=noetic1.启动容器:dockerpullros:noetic-perception-focaldockerrun-it--envDISPLAY=$DISPLAY--volume/tmp/.X11-unix:/tmp/.X11-unix--privileged--gpusall--volume/home/h/doc......
  • 国内ubuntu安装docker,支持amd64/arm64
    当前有一台鲲鹏920处理器的服务器,需要在服务器上安装docker,但是由于国内服务器无法访问docker官网,故在收集各资料后,实践后整理出一个简易文档。1.卸载默认安装的dockersudoapt-getremovedockerdocker-enginedocker.iocontainerdrunc2.安装使用https使用存储库的......
  • 【Kubernetes安装】WSL2+ubuntu22.04+K8s+minikube最新安装教程
    系列综述:......
  • Ubuntu glfw轮询获取按键事件
    这种方法的使用方式如下:while(!glfwWindowShouldClose(window)){processInputs(window);...}processInputs中包含的要素和上面介绍的回调函数差不多,只是用到了另一个GLFW的函数glfwGetKey。最终效果上,这个函数返回任意时间某个键的状态,就是这......
  • Ubuntu 安裝 VMware Workstation Pro
    安装下载依赖:#Ubuntu22.04及以前sudoaptinstalllibaio1#Ubuntu24.04及以后sudoaptinstalllibaio1t64sudoln-s/usr/lib/x86_64-linux-gnu/libaio.so.1t64/usr/lib/x86_64-linux-gnu/libaio.so.1打开博通产品页面BroadComVMwareWorkstationPro,下载......