千家信息网

在tinycorelinux上怎么安装lxc,lxd

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章给大家分享的是有关在tinycorelinux上怎么安装lxc,lxd的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。准备工作,及编译golangGrub 加个swa
千家信息网最后更新 2026年11月01日在tinycorelinux上怎么安装lxc,lxd

这篇文章给大家分享的是有关在tinycorelinux上怎么安装lxc,lxd的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

准备工作,及编译golang

Grub 加个swapfile=hda1进去。编译go1.12.6内存起码1g。准备git,git我们用4.x的,需要expat2.tcz和openssl-1.0.0.tcz,都用3.x的, 按《在tinycolinux上安装sandstorm davros》编译openssl1.0.1覆盖1.0.0 -prefix=/usr/local,make install,sudo ldconfig,再编译curl 7.30.0 -with-ssl=/usr/local,make install,sudo ldconfig,不用编译git,为防出现unable to get local issuer certificate git,运行git config --global http.sslVerify false

安装bash.tcz,下载并解压go1.4-bootstrap-20171003.tar.gz,Go 1.4 was the last distribution in which the toolchain was written in C,cd go,sudo ./make.bash,不要export GOROOT_BOOTSTRAP=/mnt/hda1/tmp/go,这个没用,还是得mv /mnt/hda1/tmp/go /home/tc/go1.4,下载go1.12.6.tar.gz,cd go-go1.12.6/src,sudo ./make.bash没有之前的swap设置这里过不去, 为了让go生效。export PATH=$PATH:/mnt/hda1/tmp/go-go1.12.6/bin

lxd源码处理

安装libcap.tcz,acl-dev.tcz,下载并解压lxd-3.0.4.tar.gz,cd lxd-lxd-3.04,处理一下lxd src:

第一个问题,还是那个问题,我们使用的gcc443不是gnu11,go默认调用gnu11,会出现Unknown command line -std=gnu11 在lxd src中,找到// #cgo 有-std=gnu11的去掉它,对,注释的起作用的,大约有16个文件,然后,在/home/tc/go/src中新建github.com->lxc文件夹,cd lxc,直接mv 修改过的lxd到这里,保证名字是lxd /lxd/shared/idmap/shift_linux.go中, /lxd/shared/netutils/netns_addrs.c中,

然后是makefile:

Sudo vi Makefile最上面加shell=/bin/bash,default中去掉deps的判断ifeq ($(TAG_SQLITE3),)中的ifeq改成ifneq,进一步来分析一下makefile中这个默认make deps的逻辑:

它以home/当前用户/go/为GOPATH,维护这样一种结构(GOPATH)/deps/,所以我们mkdir -p ~/go/src,cd ~/go/src,mv /mnt/hda1/tmp/lxd-lxd-3.04 ~/go/src

继续分析makefile,有5个deps:sqlite,uv,raft,co,dqlite,文件中有4个地址,没有libuv的,稍后处理,但因为这5个deps都可能编译出错,make deps一执行,总是会强行从0开始拉取(sqlite无条件拉取,其它四个判断拉取),所以不可能通过本地修改deps sqlite的相关文件,调试影响make deps使之最终通过。我们只能定制sqlite仓库,然后在makefile中替换其地址:

Sqlite: 2019.4.19左右的sqlite:https://github.com/CanonicalLtd/sqlite/3c5e6afb3d8330485563387bc9b9492b4fd3d88d,你必须fork 它的github仓库,作如下修改,并改动makefile中的GitHub repo调用地址参数来跳过这个 在src/sqlite3.h.in中: 删掉这句 typedef struct sqlite3_wal_replication sqlite3_wal_replication; 然后下面typdef struct sqlite3_wal_replication{…}的sqlite3_wal_replication的前面统统加个struct,有五行 才能避免make deps编译时可能出现redefinition of typedef 'sqlite3 wal replication',gcc 4.7之后才支持c11的typedef重定义-Wtypedef-redefinition,,gcc 443是不支持的,

其它四个deps可以分别git到/mnt/hda1/tmp修改,尝试make install,

libuv: Git clone 2019.6.28左右的https://github.com/libuv/libuv/commit/1a06462cd33fb94720d639f40db3522313945adf Sudo ./autogen.sh,./configure,make install

Raft: Git clone 2019.6.26左右的,https://github.com/CanonicalLtd/raft/commit/ee097affa3dfff53f0c5af096a55d8b7dacecdc3 会出现error implicit declaration of function aligned_alloc,因为C11中添加的函数aligned_alloc() 你可在configure.ac 161行找到implicit-function-declaration相关行注释掉,这样它就是一个warning而不是error ./configure -disable-example,否则会有TIME_UTC is a macro in C11,TIME_UTC is macro in glibc 2.16

libco: https://github.com/freeekanayaka/libco,目前是v18,没有make install 复制 lib.pc到 /usr/lib/pkconfig/ 手动复制安装下/usr/为prefix然后ldconfig

当然你也可以像对待sqlite一样将修过改的后4个deps的新仓库地址放进makefile中,尝试Sudo make deps,找不到libuv时到那个deps下make install下再sudo ldconfig重新make deps,这样更方便统一。

以上lxd src和dep的src处理,因为go或makefile会将文件不断下到go path,调试的时候,如果有新的错误,记得清空/deps/或src/github.com/中相应的文件夹让makefile或go get重新应用新逻辑。

编译deps和lxd

Make dep,最终成功!!之后需要设几条export,编译完后会提示: Export CGO_CFLAGS="-I/home/tc/go/deps/sqlite/ -I/home/tc/go/deps/dqlite/include/" Export CGO_LDFLAGS="-L/home/tc/go/deps/sqlite/.libs/ -L/home/tc/go/deps/dqlite/.libs/" Export LD_LIBRARY_PATH="/home/tc/go/deps/sqlite/libs/:/home/tc/go/deps/dqlite/.libs/" 如果是手动生成的,对应地址会是/mnt/hda1/tmp/xxx

最后,在整体make (default)前需要处理一下:

在这里会有很多陷阱和挑战,主要是golang的包下载需要用到外网线路而且go没有一个可以换mirror的准法。为省事我们将手动补全:src中新建golang.org文件夹->x文件夹,cd x,依然git clone github.com/golang/sys/,github.com/golang/net/, github.com/golang/crypto/,这是因为golang.org的包全部被墙,还有一些虽然没被墙但是较大的包,手动下载,比如下到gopkg.in的mgo v2,cd gppkg.in,git clone https://github.com/go-mgo/mgo/,mv mgo mgo.v2,cd mgo.v2,git checkout v2,v2是它的一个branch

sudo make。会自动下载其它包,没被墙的gopkg.in被依然下载到/home/tc/go/src/gopkg.in。然后自动开始编译,如果在这里出现找不到deps的h,lib往往是make deps后的几条export没设好,没关系,这里可以进一步export覆盖补全。

最后,lxd也编译完成。完工!

感谢各位的阅读!关于"在tinycorelinux上怎么安装lxc,lxd"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

编译 文件 地址 处理 手动 文件夹 仓库 内容 更多 注释 篇文章 还是 逻辑 问题 中新 进一 准备 分析 尝试 支持 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 保险科技 互联网保险 哈尔滨大商圈互联网科技有限公司 中国互联网科技工作委员会毛军 科技创新与互联网经济 互联网医疗科技 互联网金融公司科技 上海挚品互联网科技 互联网科技公司官网 紫鲸互联网科技 广州互联网络科技有限公司 郑州华宇互联网科技 互联网高科技企业 互联网科技公司需要的职位 中盈科技互联网信息有限公司 全球顶尖互联网科技公司 互联网科技包装股份有限公司上市 互联网硬科技公司 国产互联网科技公司 互联网科技机房 互联网企业和网络科技有限公司 互联网科技媒体 米客互联网科技 无锡溥仪互联网科技有限公司 承德科技产业互联网发展 广州市恰铎互联网科技有限公司 互联网科技公司营业执照怎么办理 互联网高科技行业有哪些企业 互联网科技企业商标注意事项 互联网领先科技活动 西安左小互联网科技有限公司
0