mirror of
https://github.com/sipeed/NanoKVM.git
synced 2026-09-11 00:22:56 -05:00
Update kvm_system
Fix DNS issues
This commit is contained in:
0
support/kvm_system/README.md
Normal file
0
support/kvm_system/README.md
Normal file
@@ -7,9 +7,9 @@ using namespace maix::sys;
|
||||
extern kvm_sys_state_t kvm_sys_state;
|
||||
extern kvm_oled_state_t kvm_oled_state;
|
||||
|
||||
void new_app_init(uint8_t safe_update)
|
||||
void new_app_init(void)
|
||||
{
|
||||
// first start
|
||||
// Update the necessary scripts
|
||||
system("cp -f /kvmapp/system/update-nanokvm.py /etc/kvm/");
|
||||
system("rm /etc/init.d/S02udisk");
|
||||
system("cp /kvmapp/system/init.d/S01fs /etc/init.d/");
|
||||
@@ -17,18 +17,26 @@ void new_app_init(uint8_t safe_update)
|
||||
system("cp /kvmapp/system/init.d/S15kvmhwd /etc/init.d/");
|
||||
system("cp /kvmapp/system/init.d/S30eth /etc/init.d/");
|
||||
system("cp /kvmapp/system/init.d/S50sshd /etc/init.d/");
|
||||
if(kvm_wifi_exist()) system("cp /kvmapp/system/init.d/S30wifi /etc/init.d/");
|
||||
else system("rm /etc/init.d/S30wifi");
|
||||
system("cp /kvmapp/system/init.d/S98tailscaled /etc/init.d/");
|
||||
if(safe_update == 0){
|
||||
system("cp /kvmapp/system/init.d/S95nanokvm /etc/init.d/"); // /kvmapp/system/init.d/S95nanokvm还没跑完直接覆盖可能出问题
|
||||
if(kvm_wifi_exist()) {
|
||||
system("cp /kvmapp/system/init.d/S30wifi /etc/init.d/");
|
||||
} else {
|
||||
system("rm /etc/init.d/S30wifi");
|
||||
}
|
||||
|
||||
// system("rm /etc/init.d/S04backlight");
|
||||
// system("rm /etc/init.d/S05tp");
|
||||
// system("rm /etc/init.d/S40bluetoothd");
|
||||
// system("rm /etc/init.d/S99*");
|
||||
// PCIe Patch
|
||||
// system("cp /kvmapp/system/init.d/S95nanokvm /etc/init.d/");
|
||||
if(access("/kvmapp/jpg_stream/dl_lib/libmaixcam_lib.so", F_OK) != 0){
|
||||
system("cp /kvmapp/system/init.d/S95nanokvm /etc/init.d/");
|
||||
}
|
||||
|
||||
// Remove unnecessary components to speed up boot time
|
||||
system("rm /etc/init.d/S04backlight");
|
||||
system("rm /etc/init.d/S05tp");
|
||||
system("rm /etc/init.d/S40bluetoothd");
|
||||
system("rm /etc/init.d/S50ssdpd");
|
||||
system("rm /etc/init.d/S99*");
|
||||
|
||||
// Add necessary configuration files for program execution
|
||||
system("mkdir /kvmapp/kvm");
|
||||
system("mkdir /etc/kvm");
|
||||
system("echo 0 > /kvmapp/kvm/now_fps");
|
||||
@@ -41,9 +49,8 @@ void new_app_init(uint8_t safe_update)
|
||||
|
||||
// rm jpg_stream & kvm_stream
|
||||
system("rm -r /kvmapp/jpg_stream");
|
||||
system("rm /kvmapp/kvm_system/kvm_stream");
|
||||
system("rm /kvmapp/kvm_system/kvm_stream"); // Cannot delete temporarily; the old production test script uses this file to determine if the download is complete
|
||||
|
||||
// rm kvm_new_app
|
||||
system("rm /kvmapp/kvm_new_app");
|
||||
system("sync");
|
||||
// system("/etc/init.d/S95nanokvm restart");
|
||||
@@ -105,9 +112,15 @@ void new_app_init(uint8_t safe_update)
|
||||
if(access("/root/old/kvm_new_img", F_OK) == 0){
|
||||
system("rm -r /root/old");
|
||||
}
|
||||
|
||||
system("sync");
|
||||
system("killall NanoKVM-Server");
|
||||
system("rm -r /tmp/server");
|
||||
system("cp -r /kvmapp/server /tmp/");
|
||||
system("/tmp/server/NanoKVM-Server &");
|
||||
}
|
||||
|
||||
void update_resolv_conf(void)
|
||||
void build_complete_resolv(void)
|
||||
{
|
||||
FILE *fp = NULL;
|
||||
// fp = fopen("/boot/resolv.conf", "w+");
|
||||
@@ -121,121 +134,8 @@ void update_resolv_conf(void)
|
||||
system("cp -vf /boot/resolv.conf /etc/resolv.conf");
|
||||
}
|
||||
|
||||
void init_upadte(void)
|
||||
void new_img_init(void)
|
||||
{
|
||||
if(access("/kvmapp/kvm_new_app", F_OK) == 0){
|
||||
new_app_init(0);
|
||||
}
|
||||
|
||||
// PCIe Patch
|
||||
if(access("/kvmapp/jpg_stream/dl_lib/libmaixcam_lib.so", F_OK) == 0){
|
||||
system("cp -f /kvmapp/jpg_stream/dl_lib/libmaixcam_lib.so /kvmapp/kvm_system/dl_lib/");
|
||||
new_app_init(1);
|
||||
}
|
||||
|
||||
// DNS Patch
|
||||
system("tailscale set --accept-dns=false");
|
||||
if(access("/boot/resolv.conf", F_OK) != 0){
|
||||
// 不存在直接覆盖
|
||||
update_resolv_conf();
|
||||
} else {
|
||||
// 存在则检测是否拷贝/DNS是否正确
|
||||
uint8_t RW_Data[10] = {0};
|
||||
FILE *fp;
|
||||
fp = popen("cat /etc/resolv.conf | grep 119.29.29.29", "r");
|
||||
fgets((char*)RW_Data, 2, fp);
|
||||
pclose(fp);
|
||||
if(RW_Data[0] != 'n') {
|
||||
update_resolv_conf();
|
||||
}
|
||||
}
|
||||
|
||||
// libmaixcam_lib.so
|
||||
if(access("/kvmapp/kvm_system/dl_lib/libmaixcam_lib.so", F_OK) == 0){
|
||||
// exist
|
||||
system("cp -f /kvmapp/kvm_system/dl_lib/libmaixcam_lib.so /kvmapp/server/dl_lib");
|
||||
} else {
|
||||
printf("kvm_system not exist lib!\n");
|
||||
}
|
||||
system("sync");
|
||||
system("killall NanoKVM-Server");
|
||||
system("rm -r /tmp/server");
|
||||
system("cp -r /kvmapp/server /tmp/");
|
||||
system("/tmp/server/NanoKVM-Server &");
|
||||
}
|
||||
|
||||
void first_start(void)
|
||||
{
|
||||
if(access("/kvmapp/kvm_new_img", F_OK) == 0){
|
||||
// init oled
|
||||
OLED_state = oled_exist();
|
||||
if(OLED_state){
|
||||
printf("oled exist\r\n");
|
||||
} else {
|
||||
printf("oled not exist\r\n");
|
||||
}
|
||||
if(OLED_state){
|
||||
OLED_Init();
|
||||
OLED_ColorTurn(0); //0正常显示 1 反色显示
|
||||
OLED_DisplayTurn(0); //0正常显示 1 屏幕翻转显示
|
||||
// OLED_INIT_UI();
|
||||
|
||||
if(kvm_hw_ver == 2){
|
||||
OLED_Revolve();
|
||||
}
|
||||
}
|
||||
uint8_t update_begin = 0;
|
||||
while(1){
|
||||
if(chack_net_state(ETH_ROUTE) && get_ip_addr(ETH_IP)){
|
||||
OLED_Clear();
|
||||
if(kvm_hw_ver != 2){
|
||||
if(update_begin == 0){
|
||||
update_begin = 1;
|
||||
OLED_ShowString(1, 2, "Auto-updating...", 16);
|
||||
OLED_ShowStringtoend(1, 4, (char*)kvm_sys_state.eth_addr, 16, 0);
|
||||
system("python /kvmapp/system/update-nanokvm.py");
|
||||
} else {
|
||||
OLED_ShowString(1, 0, "Auto-update fail", 16);
|
||||
OLED_ShowString(1, 2, "Please open the ", 16);
|
||||
OLED_ShowStringtoend(1, 4, (char*)kvm_sys_state.eth_addr, 16, 0);
|
||||
OLED_ShowString(1, 6, "update KVM APP ", 16);
|
||||
}
|
||||
} else {
|
||||
// PCIe
|
||||
if(update_begin == 0){
|
||||
update_begin = 1;
|
||||
OLED_ShowString(0, 1, "Updating...", 8);
|
||||
OLED_ShowString_AlignRight(AlignRightEND_P, 2, (char*)kvm_sys_state.eth_addr, 4);
|
||||
system("python /kvmapp/system/update-nanokvm.py");
|
||||
} else {
|
||||
OLED_ShowString(0, 0, "Update fail", 8);
|
||||
OLED_ShowString(0, 1, "Please open", 8);
|
||||
OLED_ShowString_AlignRight(AlignRightEND_P, 2, (char*)kvm_sys_state.eth_addr, 4);
|
||||
OLED_ShowString(0, 3, "update APP" , 8);
|
||||
}
|
||||
}
|
||||
while(1){
|
||||
time::sleep_ms(1000);
|
||||
if(chack_net_state(ETH_ROUTE) == 0) {
|
||||
OLED_Clear();
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
get_ip_addr(ETH_ROUTE);
|
||||
if(kvm_hw_ver != 2){
|
||||
OLED_ShowString(1, 2, " Please connect ", 16);
|
||||
OLED_ShowString(1, 4, " to the network ", 16);
|
||||
OLED_ShowString(1, 6, " to update app ", 16);
|
||||
} else {
|
||||
// PCIe
|
||||
OLED_ShowString(0, 0, "Please link", 8);
|
||||
OLED_ShowString(0, 1, "to network", 8);
|
||||
OLED_ShowString(0, 2, "update APP" , 8);
|
||||
}
|
||||
|
||||
time::sleep_ms(10);
|
||||
}
|
||||
}
|
||||
}
|
||||
build_complete_resolv();
|
||||
system("rm /kvmapp/kvm_new_img");
|
||||
}
|
||||
@@ -2,9 +2,8 @@
|
||||
#define SYSTEM_INIT_H_
|
||||
#include "config.h"
|
||||
|
||||
void new_app_init(uint8_t safe_update);
|
||||
void update_resolv_conf(void);
|
||||
void init_upadte(void);
|
||||
void first_start(void);
|
||||
void new_img_init(void);
|
||||
void new_app_init(void);
|
||||
|
||||
#endif // SYSTEM_INIT_H_
|
||||
|
||||
@@ -186,9 +186,17 @@ int main(int argc, char* argv[])
|
||||
pthread_t display_thread;
|
||||
pthread_t key_thread;
|
||||
|
||||
// first_start();
|
||||
// Execute only when it's a new image
|
||||
if(access("/kvmapp/kvm_new_img", F_OK) == 0){
|
||||
new_img_init();
|
||||
}
|
||||
|
||||
init_upadte();
|
||||
// Execute only when it's a new app
|
||||
if(access("/kvmapp/kvm_new_app", F_OK) == 0){
|
||||
new_app_init();
|
||||
}
|
||||
|
||||
system("sync");
|
||||
|
||||
OLED_state = oled_exist();
|
||||
if(OLED_state){
|
||||
|
||||
Reference in New Issue
Block a user