Linux

將參數添加到 NFS 掛載

  • November 2, 2016

我嘗試通過NFS和在設備上啟動 Android TFTP。一切順利,直到 Android 系統開始啟動。網路參數出現問題,連接中斷,啟動凍結

[   60.881134] nfs: server 128.247.77.158 not responding, still trying 

我決定嘗試在掛載命令中添加參數,例如bg、intr 和 hard。是否可以在系統啟動之前配置此參數?或者我應該修改核心程式碼中的標誌(這裡的某個地方)?

我找到了我的問題的解決方案。當 Android 啟動時,它會刷新所有規則。system/netd/RouteController.cpp我在文件函式中找到了完成這項工作的程式碼int flushRules()。當我阻止執行此函式的程式碼時,我再也沒有看到有關 NFS 連接鬆動的消息。

// Returns 0 on success or negative errno on failure.
WARN_UNUSED_RESULT int flushRules() {
   return 0;//TODO workaround of NFS parameters reset 

   for (size_t i = 0; i < ARRAY_SIZE(IP_VERSIONS); ++i) {
       const char* argv[] = {
           IP_PATH,
           IP_VERSIONS[i],
           "rule",
           "flush",
       };
       if (android_fork_execvp(ARRAY_SIZE(argv), const_cast<char**>(argv), NULL, false, false)) {
           ALOGE("failed to flush rules");
           return -EREMOTEIO;
       }
   }
   return 0;
} 

現在 Android 系統按預期使用 NFS 啟動。

引用自:https://unix.stackexchange.com/questions/289711