您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關在tinycorelinux上怎么安裝lxc,lxd的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
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
安裝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重新應用新邏輯。
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”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。