久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

如何利用onedrive加packerpebuilder實現(xiàn)本地網絡統(tǒng)一裝機

171次閱讀
沒有評論

共計 9273 個字符,預計需要花費 24 分鐘才能閱讀完成。

如何利用 onedrive 加 packerpebuilder 實現(xiàn)本地網絡統(tǒng)一裝機,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

今天,我們將用 onedrve 結合 packerpebuilder 實現(xiàn)本地也能像云主機一樣裝機,使遠程成為本地裝機 app,實際上這個思路自 packerpebuilder 一開始就有了,只是一直沒有找到合適能用的網盤。

前置改動

把 tmpmirror 也消除了。調整了一些注釋,如整合 checkdeps 和 selectmirror 為 prepare prerequisites,selectmirror 經過重構變成 select1stvalidmirrorfrom3():

function Select1stValidMirrorFrom3(){ [ $# -ge 1 ] || exit 1
 declare -A MirrorTocheck
 MirrorTocheck=([Debian0]=  [Debian1]=  [Debian2]= )
 
 echo  $1  |sed  s/\ //g  |grep -q  ^http://\|^https://\|^ftp://    MirrorTocheck[Debian0]=$(echo  $1  |sed  s/\ //g 
 echo  $2  |sed  s/\ //g  |grep -q  ^http://\|^https://\|^ftp://    MirrorTocheck[Debian1]=$(echo  $2  |sed  s/\ //g 
 echo  $3  |sed  s/\ //g  |grep -q  ^http://\|^https://\|^ftp://    MirrorTocheck[Debian2]=$(echo  $3  |sed  s/\ //g 
 for mirror in $(echo  ${!MirrorTocheck[@]}  |sed  s/\ /\n/g  |sort -n |grep  ^Debian )
 do
 CurMirror= ${MirrorTocheck[$mirror]} 
 [ -n  $CurMirror  ] || continue
 # CheckPass1= 0 
 # DistsList= $(wget --no-check-certificate -qO-  $CurMirror/dists/  |grep -o  href=.*/  |cut -d  -f2 |sed  /-\|old\|Debian\|experimental\|stable\|test\|sid\|devel/d  |grep  ^[^/]  |sed -n  1!H;$g;s/\n//g;s/\//\;/g;$p ) 
 # for DIST in `echo  $DistsList  |sed  /\n/g `
 # do
 # [[  $DIST  ==  jessie  ]]   CheckPass1= 1    break;
 # done
 # [[  $CheckPass1  ==  0  ]]   {
 # echo -ne  \njessie not find in $CurMirror/dists/, Please check it! \n\n 
 # bash $0 error;
 # exit 1;
 # }
 CheckPass2=0
 ImageFile= SUB_MIRROR/dists/jessie/main/installer-amd64/current/images/netboot/debian-installer/amd64/initrd.gz 
 [ -n  $ImageFile  ] || exit 1
 URL=`echo  $ImageFile  |sed  s#SUB_MIRROR#${CurMirror}#g `
 wget --no-check-certificate --spider --timeout=3 -o /dev/null  $URL 
 [ $? -eq 0 ]   CheckPass2=1   echo  $CurMirror    break
 done
 [[ $CheckPass2 == 0 ]]   {
 echo -ne  \033[31mError! \033[0minitrd.gz not find in $CurMirror/jessie/main/installer-amd64/current/images/netboot/debian-installer/amd64/! \n 
 bash $0 error;
 exit 1;
 }
MIRROR=$(Select1stValidMirrorFrom3  http://httpredir.debian.org/debian   http://www.shalol.com/cn/d/debian   http://http://archive.debian.org/debian)
[ -n  $MIRROR  ]   echo -en  Select Mirror ......:    echo -en  [\033[32m ${MIRROR} \033[0m]\n  || exit 1

主體改動

整合 prepare parepare dist files 包括 downloading basic kernel and rootfs files(將它提前,邏輯更合理。)和 downloading repo pkgs files,,以及接下來的 PrepareDDessentials(其原來內部下載 deb 的邏輯整合到與下載 full udeb 一起),,并將它們都變成可復用的函數(shù)和函數(shù)調用 buildrepo()和 PrepareDDessentials().

prepare parepare dist files 與 prepare others 是并列的:前三者是大資源文件,后三者是小參數(shù)文件,將二者中間延時變量變成 2s,各內部延時 3s(內部還去掉了細節(jié)方面,肯定情況下的一些 echo 輸出,改為直接 exit 1,改為由主要的幾句話來 echo,界面輸出更清),共 5s

wget 要調用 ssl client 才能 tls certificate 已完善,buildrepo()更強大,支持 sed s/(+|~)/-/g 處理鏈接中的 + 號和~ 號(tcb 上的 onemanager 不支持這類特殊符號),和更強大更邏輯清楚的拉取安裝 deb pkgs 支持:

IncPkgrepo= 1 
declare -A OPTPKGS
OPTPKGS=( [ libc1]= pool/main/g/glibc/libc6_2.28-10_amd64.deb 
 [fmtlibc]= xz 
 [binlibc]= 
 [common1]= pool/main/g/gnutls28/libgnutls30_3.6.7-4+deb10u3_amd64.deb 
 [common2]= pool/main/p/p11-kit/libp11-kit0_0.23.15-2_amd64.deb 
 [common3]= pool/main/libt/libtasn1-6/libtasn1-6_4.13-3_amd64.deb 
 [common4]= pool/main/n/nettle/libnettle6_3.4.1-1_amd64.deb 
 [common5]= pool/main/n/nettle/libhogweed4_3.4.1-1_amd64.deb 
 [common6]= pool/main/g/gmp/libgmp10_6.1.2+dfsg-4_amd64.deb 
 [fmtcommon]= xz 
 [bincommon]= 
 [busybox1]= pool/main/b/busybox/busybox_1.30.1-4_amd64.deb 
 [fmtbusybox]= xz 
 [binbusybox]= bin/busybox 
 [wgetssl1]= pool/main/libi/libidn2/libidn2-0_2.0.5-1+deb10u1_amd64.deb 
 [wgetssl2]= pool/main/libp/libpsl/libpsl5_0.20.2-2_amd64.deb 
 [wgetssl3]= pool/main/p/pcre2/libpcre2-8-0_10.32-5_amd64.deb 
 [wgetssl4]= pool/main/u/util-linux/libuuid1_2.33.1-0.1_amd64.deb 
 [wgetssl5]= pool/main/z/zlib/zlib1g_1.2.11.dfsg-1_amd64.deb 
 [wgetssl6]= pool/main/o/openssl/libssl1.0.0_1.0.1t-1+deb8u8_amd64.deb 
 [wgetssl7]= pool/main/o/openssl/openssl_1.0.1t-1+deb8u8_amd64.deb 
 [wgetssl8]= pool/main/w/wget/wget_1.20.1-1.1_amd64.deb 
 [fmtwgetssl]= xz 
 [binwgetssl]= usr/bin/wget 
 [webfs1]= pool/main/libf/libffi/libffi6_3.2.1-9_amd64.deb 
 [webfs2]= pool/main/m/mime-support/mime-support_3.62_all.deb 
 [webfs3]= pool/main/libu/libunistring/libunistring2_0.9.10-1_amd64.deb 
 [webfs4]= pool/main/w/webfs/webfs_1.21-ds1-12_amd64.deb 
 [fmtwebfs]= xz 
 [binwebfs]= 
function buildrepo(){ if [[  $IncPkgrepo  ==  1  ]]; then
 echo -e  Downloading full udebs pkg files..... [\033[32m ${MIRROR}/dists/jessie/main/debian-installer/binary-amd64/Packages.gz \033[0m]\n 
 repodir= /tmp/boot/var/log/debian 
 mkdir -p $repodir
 udeburl= .*pool\/main\(.*\)udeb.* 
 wget --no-check-certificate -qO-  $MIRROR/dists/jessie/main/debian-installer/binary-amd64/Packages.gz  |gunzip -dc|sed  /$udeburl/!d |sed  s/Filename: //g |while read line
 do
 path=${line%/*}
 mkdir -p $repodir/$path
 file=${line##*/}
 wget --no-check-certificate -qO $repodir/$path/$(echo $file|sed  s/\(+\|~\)/-/g ) $MIRROR/$line
 done
 mkdir -p $repodir/dists/jessie/main/binary-amd64/
 mkdir -p $repodir/dists/jessie/main/debian-installer/binary-amd64/
 mkdir -p $repodir/dists/jessie/main/installer-amd64/current/images/
 wget --no-check-certificate -qO $repodir/dists/jessie/Release $MIRROR/dists/jessie/Release
 wget --no-check-certificate -qO $repodir/dists/jessie/main/binary-amd64/Release $MIRROR/dists/jessie/main/binary-amd64/Release
 wget --no-check-certificate -qO $repodir/dists/jessie/main/debian-installer/binary-amd64/Release $MIRROR/dists/jessie/main/debian-installer/binary-amd64/Release
 wget --no-check-certificate -qO $repodir/dists/jessie/main/debian-installer/binary-amd64/Packages.gz $MIRROR/dists/jessie/main/debian-installer/binary-amd64/Packages.gz; \
 orisize=$(cat $repodir/dists/jessie/main/debian-installer/binary-amd64/Packages.gz | wc -c); \
 orimd5=$(md5sum $repodir/dists/jessie/main/debian-installer/binary-amd64/Packages.gz| awk  { print $1 }  \
 orisha1=$(sha1sum $repodir/dists/jessie/main/debian-installer/binary-amd64/Packages.gz| awk  { print $1 }  \
 orisha256=$(sha256sum $repodir/dists/jessie/main/debian-installer/binary-amd64/Packages.gz| awk  { print $1 }  \
 gunzip -c $repodir/dists/jessie/main/debian-installer/binary-amd64/Packages.gz   $repodir/dists/jessie/main/debian-installer/binary-amd64/Packages; \
 rm -rf $repodir/dists/jessie/main/debian-installer/binary-amd64/Packages.gz; \
 sed -i  s/\(+\|~\)/-/g  $repodir/dists/jessie/main/debian-installer/binary-amd64/Packages; \
 gzip -c $repodir/dists/jessie/main/debian-installer/binary-amd64/Packages   $repodir/dists/jessie/main/debian-installer/binary-amd64/Packages.gz; \
 rm -rf $repodir/dists/jessie/main/debian-installer/binary-amd64/Packages; \
 cursize=$(cat $repodir/dists/jessie/main/debian-installer/binary-amd64/Packages.gz | wc -c); \
 curmd5=$(md5sum $repodir/dists/jessie/main/debian-installer/binary-amd64/Packages.gz| awk  { print $1 }  \
 cursha1=$(sha1sum $repodir/dists/jessie/main/debian-installer/binary-amd64/Packages.gz| awk  { print $1 }  \
 cursha256=$(sha256sum $repodir/dists/jessie/main/debian-installer/binary-amd64/Packages.gz| awk  { print $1 } )
 toreplace= main\/debian-installer\/binary-amd64\/Packages.gz 
 linenoarray=($(grep -n $toreplace $repodir/dists/jessie/Release |cut -f1 -d:))
 sed -i ${linenoarray[0]}s/$orimd5/$curmd5/ $repodir/dists/jessie/Release
 sed -i ${linenoarray[0]}s/$orisize/$cursize/ $repodir/dists/jessie/Release
 sed -i ${linenoarray[1]}s/$orisha1/$cursha1/ $repodir/dists/jessie/Release
 sed -i ${linenoarray[1]}s/$orisize/$cursize/ $repodir/dists/jessie/Release
 sed -i ${linenoarray[2]}s/$orisha256/$cursha256/ $repodir/dists/jessie/Release
 sed -i ${linenoarray[2]}s/$orisize/$cursize/ $repodir/dists/jessie/Release
 wget --no-check-certificate -qO $repodir/dists/jessie/main/installer-amd64/current/images/udeb.list $MIRROR/dists/jessie/main/installer-amd64/current/images/udeb.list
 chmod -R 0644 $repodir/
 fi
 echo -e  Downloading optional deb pkg files...... [\033[32m ${MIRROR}/dists/jessie/main/binary-amd64/Packages.gz \033[0m]\n 
 for pkg in `echo  $1  |sed  s/,/\n/g `
 do
 
 [[ -n  ${OPTPKGS[$pkg 1]}  ]]   { for subpkg in $(echo  ${!OPTPKGS[@]}  |sed  s/\ /\n/g  |sort -n |grep  ^$pkg )
 do
 cursubpkgfile= ${OPTPKGS[$subpkg]} 
 [ -n  $cursubpkgfile  ] || continue
 cursubpkgfilepath=${cursubpkgfile%/*}
 mkdir -p $repodir/$cursubpkgfilepath
 cursubpkgfilename=${cursubpkgfile##*/}
 cursubpkgfilename2=$(echo $cursubpkgfilename|sed  s/\(+\|~\)/-/g )
 wget --no-check-certificate -qO $repodir/$cursubpkgfilepath/$cursubpkgfilename2 $MIRROR/$cursubpkgfile; \
 [[  ${OPTPKGS[ fmt $pkg]}  ==  tar  ]]   ar x $repodir/$cursubpkgfilepath/$cursubpkgfilename2 data.tar.gz   tar xzf data.tar.gz   rm -rf data.tar.gz
 [[  ${OPTPKGS[ fmt $pkg]}  ==  xz  ]]   ar x $repodir/$cursubpkgfilepath/$cursubpkgfilename2 data.tar.xz   xz -d data.tar.xz   tar xf data.tar   rm -rf data.tar
 done
 [[ -n  ${OPTPKGS[ bin $pkg]}  ]]   mv -f /tmp/boot/${OPTPKGS[ bin $pkg]} /tmp/boot/${OPTPKGS[ bin $pkg]}2
 # [[ ! -f /tmp/boot/${OPTPKGS[ bin $pkg]}2 ]]   echo  Error! $1 SUPPORT ERROR.    exit 1;
 }
 done
buildrepo libc,common,busybox,wgetssl;

PrepareDDessentials()也更強大,支持 sharepoint 和 office365 個人的 302 跳轉風格,強化《利用 installnet 制作一個云裝機 packerpe》2 中關于僅支持 office365style 相關方面功能 — 其實 sharepointstyle 和 office365 style 也可自動公判斷,但是我不想折騰了。

UNZIP= 
DDURL= 
OFFICE365 > 使用方法 

中途提示備份, 會給你 30s 上傳 /tmp/boot/var/log/debian 倉庫到 onedrive 或其它服務器創(chuàng)建鏡像,。

 [[  $tmpINSTANTWITHOUTVNC  ==  0  ]]   echo  finished, auto reboot after 30s...(if needed, you can press ctrl c to interrupt to bak the repodir:$repodir, then manually reboot to continue) sleep 30s

preseed 中的 mirrorhost 換成你的 od 上傳地址。

看完上述內容,你們掌握如何利用 onedrive 加 packerpebuilder 實現(xiàn)本地網絡統(tǒng)一裝機的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注丸趣 TV 行業(yè)資訊頻道,感謝各位的閱讀!

正文完
 
丸趣
版權聲明:本站原創(chuàng)文章,由 丸趣 2023-08-17發(fā)表,共計9273字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發(fā)布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 顺义区| 尼勒克县| 琼中| 乌兰浩特市| 永川市| 二手房| 锡林浩特市| 兴海县| 宜章县| 东海县| 阿尔山市| 米林县| 上犹县| 高密市| 吴桥县| 襄樊市| 堆龙德庆县| 汾西县| 昌图县| 双城市| 乐安县| 玉树县| 五家渠市| 永嘉县| 当涂县| 平和县| 漳州市| 临海市| 无锡市| 桐庐县| 金华市| 依安县| 黄陵县| 博罗县| 宁阳县| 休宁县| 息烽县| 章丘市| 申扎县| 通许县| 定兴县|