一、安裝OpenEuler虛擬機
1.准備鏡像
(1)下載鏡像(aarch64的我用不了,只能用x86_64的)
在Files.... (openeuler.org)下載前兩個文件
(2)校驗完整性
輸入以下兩條指令,比較輸出的結果是否一致(我在wsl Linux中做的)
cat openEuler-20.03-LTS-SP1-aarch64-dvd.iso.sha256sum
sudo sha256sum openEuler-20.03-LTS-SP1-aarch64-dvd.iso
2.基於Virtualbox安裝OpenEuler(簡略)
(1)選擇版本
選擇Linux
和Other Linux (64-bit)
雖然已經校驗了iso的完整性,但仍然報了啟動盤的錯!我暈了。改為下載x86版本。
(2)一些需要點選的東西
換為x86就不報錯了,我暈
重啟后怎么又開始安裝了???
關閉虛擬機,刪除盤片
重啟虛擬機,進入
登錄
二、換源
關機,加一張橋接網卡(個人習慣)
查看系統
uname -a
我的是x86(因為aarch64失敗了,離譜)
查看原來的源
cd /etc/yum.repos.d/
cat openEuler_x64_64.repo
vi打開
vi openEuler_x64_64.repo
粘貼以下內容,注意這里的url要跟你的系統一致
[base]
name=openEuler20.03LTS
baseurl=https://repo.openeuler.org/openEuler-20.03-LTS/everything/x86_64/
enabled=1
gpgcheck=0
再查看一下
cat openEuler_x86_64.repo
更新源
yum makecache
查看repolist
yum repolist
查看net-tools包
yum provides net-tools
安裝
yum -y install net-tools
然后可以使用ifconfig了
順便裝個vim
yum install -y vim
emmmmmm我應該在安裝虛擬機之前就給它兩張網卡的,這里橋接的網卡沒有ip地址...我不會搞了
關閉虛擬機,在Virtualbox中設置網絡,NAT網卡的端口轉發規則
然后可以用ssh連接了,淚目
ssh root@127.0.0.1 -p 8888
三、安裝圖形化界面UKUI(失敗)
我先快了一下照
查看python版本,是2.7,太棒了
安裝字體庫
yum groupinstall -y fonts
然后輸入下面這條指令
systemctl set-default graphical.target
然后執行這個
yum install ukui -y
失敗了
四、安裝圖形化界面UKUI(失敗)
這次參考官方文檔來做
修改/etc/yum.repos.d/openEuler_x86_64.repo
,在文件末尾添加以下內容
[ukui]
name=ukui
baseurl= http://openkylin.com/repo/ukui/x86_64/
enabled=1
gpgcheck=0
priority=1
yum makecache
運行以下命令
cd /root/
wget http://openkylin.com/repo/ukui/x86_64/install_online.sh
wget http://openkylin.com/repo/ukui/x86_64/reinstall.zip
unzip reinstall.zip
chmod a+x install_online.sh
./install_online.sh
結果第二條就因為連不上而失敗了,遂放棄
五、安裝圖形化界面UKUI(失敗)
這次參考官方文檔的離線安裝方法
安裝createrepo
yum install createrepo
后來把源里上一步添加的[ukui]的部分刪掉,更新源,重新試試
果然是這破源的問題
然后百度網盤下載必須的文件
鏈接:https://pan.baidu.com/s/1BDUyj5pRssqMOlZ7mfLh7Q
提取碼:b9o0
emmm然后為了把文件傳進openEuler虛擬機,我嘗試把這些文件上傳到碼雲上,然后在虛擬機里裝個git
yum install git
然后git clone下來
git clone https://gitee.com/realyutian/information-system-design-1218.git
mv information-system-design-1218/x86_64/ .
(快個照)
然后把reinstall.zip
和install.sh
放到/root
目錄下,在/
目錄下新建文件夾RPMS,並將下載的整個RPMS文件夾的內容放入/RPMS
目錄下
cd x86_64/
cp install.sh /root
cp reinstall.zip /root
cd /
mkdir RPM
cp /root/x86_64/RPMS/* ./RPM
然后改源/etc/yum.repos.d/openEuler_x86_64.repo
,把那破[ukui]源再給弄進去
[ukui]
name=ukui
baseurl=file:///RPMS/
enabled=1
gpgcheck=0
priority=1
切換到root目錄,以root用戶執行以下指令
cd /root/
createrepo ./../RPMS
unzip reinstall.zip
chmod a+x install.sh
./install.sh
.....報了一堆錯
我把那破源再刪掉試試
報了一堆其他錯
恢復快照
六、安裝openssl
查看原本的版本
下載1.1.1k版本
wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz
在/root
處建倆文件夾,分別放OpenSSL的源碼和安裝路徑
mkdir yutianopensslsrc yutianopenssl
解壓源代碼到yutianopensslsrc
路徑
tar -zxvf openssl-1.1.1k.tar.gz -C yutianopensslsrc
發現沒有tar,然后yum安裝又是0速,於是改一下源,把之前添加的ukui源給刪掉並更新了源
然后可以安裝tar了yum install -y tar
,然后用tar執行上面的解壓指令
配置編譯安裝路徑/root/yutianopenssl
cd yutianopensslsrc/openssl-1.1.1k/
./config --prefix=/root/yutianopenssl
編譯(很慢)
make
make test
make install
查看安裝后的版本
cd ~/yutianopenssl
./bin/openssl version
編譯幾個代碼試試(代碼來自《精通PKI網絡安全認證技術與編程實現》,書中給的代碼需要去掉windows.h,以及在兩個ctx的定義之前加上*)
注意使用vi而不是vim,vim因為自己的一些高級配置,導致粘貼進去的代碼反而格式會出錯
#include <stdio.h>
#include <string.h>
#include <openssl/evp.h>
#include <openssl/x509.h>
//Base64編碼
void tEVP_Encode()
{
EVP_ENCODE_CTX *ctx; //EVP編碼結構體
unsigned char in[1024]; //輸入數據緩沖區
int inl; //輸入數據長度
char out[2048]={0}; //輸出數據緩沖區
int outl; //輸出數據長度
FILE *infp; //輸入文件句柄
FILE *outfp; //輸出文件句柄
infp = fopen("test.dat","rb");//打開待編碼的文件
if(infp == NULL)
{
printf("Open File \"Test.dat\" for Read Err.\n");
return;
}
outfp = fopen("test.txt","w");//打開編碼后保存的文件
if(outfp == NULL)
{
printf("Open File \"test.txt\" For Write Err.\n");
return;
}
EVP_EncodeInit(&ctx);//Base64編碼初始化
printf("文件\"Test.dat\" Base64編碼后為:\n");
//循環讀取原文,並調用EVP_EncodeUpdate計算Base64編碼
while(1)
{
inl = fread(in,1,1024,infp);
if(inl <= 0)
break;
EVP_EncodeUpdate(&ctx,out,&outl,in,inl);//編碼
fwrite(out,1,outl,outfp);//輸出編碼結果到文件
printf("%s",out);
}
EVP_EncodeFinal(&ctx,out,&outl);//完成編碼,輸出最后的數據。
fwrite(out,1,outl,outfp);
printf("%s",out);
fclose(infp);
fclose(outfp);
printf("對文件\"Test.dat\" Base64編碼完成,保存到\"test.txt\"文件.\n\n\n");
}
//Base64解碼
void tEVP_Decode()
{
EVP_ENCODE_CTX *ctx; //EVP編碼結構體
char in[1024]; //輸入數據緩沖區
int inl; //輸入數據長度
unsigned char out[1024]; //輸出數據緩沖區
int outl; //輸出數據長度
FILE *infp; //輸入文件句柄
FILE *outfp; //輸出文件句柄
infp = fopen("test.txt","r");//打開待解碼的文件
if(infp == NULL)
{
printf("Open File \"Test.txt\" for Read Err.\n");
return;
}
outfp = fopen("test-1.dat","wb");//打開解碼后保存的文件
if(outfp == NULL)
{
printf("Open File \"test-1.txt\" For Write Err.\n");
return;
}
EVP_DecodeInit(&ctx);//Base64解碼初始化
printf("開始對文件\"Test.txt\" Base64解碼...\n\n");
//循環讀取原文,並調用EVP_DecodeUpdate進行Base64解碼
while(1)
{
inl = fread(in,1,1024,infp);
if(inl <= 0)
break;
EVP_DecodeUpdate(&ctx,out,&outl,in,inl);//Base64解碼
fwrite(out,1,outl,outfp);//輸出到文件
}
EVP_DecodeFinal(&ctx,out,&outl);//完成解碼,輸出最后的數據。
fwrite(out,1,outl,outfp);
fclose(infp);
fclose(outfp);
printf("對文件\"Test.txt\" Base64解碼完成,保存為\"test-1.dat\"\n\n\n");
}
int main()
{
tEVP_Encode();
tEVP_Decode();
return 0;
}
編譯
gcc -o testbase64 main.c -I /root/yutianopenssl/include -L /root/yutianopenssl/lib -lcrypto -lpthread -finput-charset=GBK -fexec-charset=UTF-8
報錯了,我后悔選擇安裝了中文,這報錯信息根本百度不到,英文的話大概是fatal error一類的吧
重新編譯
gcc -o testbase64 main.c -I /root/yutianopenssl/include -L /root/yutianopenssl/lib -lcrypto -lpthread
這里需要用到一個二進制文件test.dat
我在windows中用010editor打開書提供的這個文件
然后File→Export Hex
導出16進制文本
在openEuler中用vim新建文件test.dat
切換為16進制
:%!xxd
粘貼之前導出的16進制文本
34 12 01 00 D8 91 B9 87 20 3E DF 43 BE 98 5C 97
EC CE D2 62 E9 F0 33 AE BB CC 00 00 00 00 00 00
CA CD 00 00 28 92 3F DD FE DD 33 A7 01 00 00 00
CB CD 00 00 C5 57 AE 64 15 5D A9 C8 01 00 00 00
CC CD 00 00 0D 5E 77 70 F8 DD 9B 58 01 00 00 00
CD CD 00 00 7B 31 6C 6E 5B 6C 1E DE 01 00 00 00
CE CD 00 00 73 7E 7C 05 F8 2B F0 15 01 00 00 00
然后變回去,保存退出
:%!xxd -r
:wq
執行編譯生成的testbase64
怎么又報錯了啊我傻了
重新改一下main.c
#include <stdio.h>
#include <string.h>
#include <openssl/evp.h>
#include <openssl/x509.h>
//Base64編碼
void tEVP_Encode()
{
EVP_ENCODE_CTX *ctx;
ctx = EVP_ENCODE_CTX_new(); //EVP編碼結構體
unsigned char in[1024]; //輸入數據緩沖區
int inl; //輸入數據長度
char out[2048]={0}; //輸出數據緩沖區
int outl; //輸出數據長度
FILE *infp; //輸入文件句柄
FILE *outfp; //輸出文件句柄
infp = fopen("test.dat","rb");//打開待編碼的文件
if(infp == NULL)
{
printf("Open File \"Test.dat\" for Read Err.\n");
return;
}
outfp = fopen("test.txt","w");//打開編碼后保存的文件
if(outfp == NULL)
{
printf("Open File \"test.txt\" For Write Err.\n");
return;
}
EVP_EncodeInit(ctx);//Base64編碼初始化
printf("文件\"Test.dat\" Base64編碼后為:\n");
//循環讀取原文,並調用EVP_EncodeUpdate計算Base64編碼
while(1)
{
inl = fread(in,1,1024,infp);
if(inl <= 0)
break;
EVP_EncodeUpdate(ctx,out,&outl,in,inl);//編碼
fwrite(out,1,outl,outfp);//輸出編碼結果到文件
printf("%s",out);
}
EVP_EncodeFinal(ctx,out,&outl);//完成編碼,輸出最后的數據。
fwrite(out,1,outl,outfp);
printf("%s",out);
fclose(infp);
fclose(outfp);
printf("對文件\"Test.dat\" Base64編碼完成,保存到\"test.txt\"文件.\n\n\n");
}
//Base64解碼
void tEVP_Decode()
{
EVP_ENCODE_CTX *ctx;
ctx = EVP_ENCODE_CTX_new(); //EVP編碼結構體
char in[1024]; //輸入數據緩沖區
int inl; //輸入數據長度
unsigned char out[1024]; //輸出數據緩沖區
int outl; //輸出數據長度
FILE *infp; //輸入文件句柄
FILE *outfp; //輸出文件句柄
infp = fopen("test.txt","r");//打開待解碼的文件
if(infp == NULL)
{
printf("Open File \"Test.txt\" for Read Err.\n");
return;
}
outfp = fopen("test-1.dat","wb");//打開解碼后保存的文件
if(outfp == NULL)
{
printf("Open File \"test-1.txt\" For Write Err.\n");
return;
}
EVP_DecodeInit(ctx);//Base64解碼初始化
printf("開始對文件\"Test.txt\" Base64解碼...\n\n");
//循環讀取原文,並調用EVP_DecodeUpdate進行Base64解碼
while(1)
{
inl = fread(in,1,1024,infp);
if(inl <= 0)
break;
EVP_DecodeUpdate(ctx,out,&outl,in,inl);//Base64解碼
fwrite(out,1,outl,outfp);//輸出到文件
}
EVP_DecodeFinal(ctx,out,&outl);//完成解碼,輸出最后的數據。
fwrite(out,1,outl,outfp);
fclose(infp);
fclose(outfp);
printf("對文件\"Test.txt\" Base64解碼完成,保存為\"test-1.dat\"\n\n\n");
}
int main()
{
tEVP_Encode();
tEVP_Decode();
return 0;
}
編譯
gcc -o testbase64 main.c -I /root/yutianopenssl/include -L /root/yutianopenssl/lib -lcrypto -lpthread
運行
./testbase64
emmmmm好像我生成test.dat的方法還是不對不過這次代碼好歹能運行了
第一次的代碼是我根據書改的,第二次是老師的博客里提供的,我重新寫一個文件main2.c存第一次的代碼,用diff比較一下文件差異
diff main.c main2.c
所以差異就是要把ctx之前的&給去掉
七、安裝圖形化界面GNOME(失敗)
記得快照
yum install gnome-shell gdm gnome-session gnome-terminal -y
systemctl enable gdm.service //設置gdm自啟
systemctl set-default graphical.target //修改啟動級別為圖形化
wget https://zycxzx.obs.cn-east-3.myhuaweicloud.com/Xsession
mv Xsession /etc/gdm/
chmod -R 777 /etc/gdm/Xsession //這個操作的原因是openEuler源里的gdm文件Xsession有問題,從網上下一個替換即可,否則圖形化無法正常登錄
額,報錯了
重啟一下試試,果然無法登錄,輸入密碼后會跳回來(啊這
恢復之前的快照
八、安裝圖形化界面GNOME
換源(第一條根據自己的系統修改,我是x86)
wget -O /etc/yum.repos.d/openEuler_x86_64.repo https://repo.huaweicloud.com/repository/conf/openeuler_x86_64.repo
yum clean all
yum makecache
yum install gnome-shell gdm gnome-session gnome-terminal -y
systemctl enable gdm.service //設置gdm自啟
systemctl set-default graphical.target //修改啟動級別為圖形化
wget https://zycxzx.obs.cn-east-3.myhuaweicloud.com/Xsession
mv Xsession /etc/gdm/
chmod -R 777 /etc/gdm/Xsession //這個操作的原因是openEuler源里的gdm文件Xsession有問題,從網上下一個替換即可,否則圖形化無法正常登錄
重啟一下
NB
終於可以開啟我的橋接網卡了
先快個照
九、安裝增強功能
點擊安裝增強功能結果
先關機
迷惑行為,而且你再點一下關機的話它又會重置這60s
結果倒計時結束了也關不掉,於是我強制退出
嘗試添加虛擬光驅
啟動虛擬機,安裝增強功能
先彈出
再點一次安裝增強功能
cd /run/media/yutian1218/VBox_GAs_6.1.18/
./VBoxLinuxAdditions.run
又失敗了
參考
為 openEuler 安裝 桌面環境圖形化界面【ukui】_m0_51378263的博客-CSDN博客_openeuler安裝圖形界面
openEuler虛擬機配置yum源_想練武,就得下功夫-CSDN博客
openEuler_UKUI_install_cn.md · openKylin/ukui-issues - Gitee.com
openEuler_UKUI_offline_install_cn.md · openKylin/ukui-issues - Gitee.com
[日常] 為OpenEuler安裝圖形界面_A land whole of flowers.-CSDN博客_openeuler安裝圖形界面