日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux usb init,复制Linux liveUSB导致init.d脚本出错 - 不可能..?

發布時間:2025/3/19 linux 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux usb init,复制Linux liveUSB导致init.d脚本出错 - 不可能..? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

請發表您的想法或想出的任何想法。我很想知道別人在想什么。

整體問題

當我安裝一個簡單的Java應用程序(我寫的)通過/etc/init.d/在啟動(在后臺)運行時,它適用于我明確安裝它的liveUSB。當我制作該棒的副本時,它永遠不會成功啟動。在引導liveUSB副本時,當liveUSB引導進程到達我的腳本時,Java應用程序將始終掛起。我的腳本確實完成了它應該做的事情,甚至每5分鐘一次,并將繼續運行,直到你關閉機器。

我的腳本阻止了其他一切

什么都沒有超出我的腳本

你無法取消我的腳本

沒有GUI

您可以看到的唯一文本是我的腳本輸出的命令行

設置&測試 - 一切順利 :)

我有一個帶有3個分區的Linux liveUSB。加載簡單的標準Xubuntu映像。

sda1> 2GB存儲空間

sda2> 2gb系統

sda3>剩下的gb for casper

我創建了一個簡單的Java應用程序,它在啟動時在后臺運行。為了達到這個目的,我遵循了以下步驟:

將java應用程序編譯成類

在/ home / user / folder /中放置類文件

將我的startup.sh腳本復制到/etc/init.d/

在/etc/init.d/里面 鍵入“update-rc.d startup.sh start 20 2 5。stop 20 0 1 6。”

此更新的運行級別成功

現在我可以重啟/重啟/關閉任何操作,一切運行完美!

復制 - 這里變得棘手!

在創建此棒的副本時,我按照以下步驟操作:

裝載sda2 將該文件夾中的所有內容復制到/ home / user / Desktop / tmp-system /

裝載sda3 將該文件夾中的所有內容復制到/ home / user / Desktop / tmp-casper /

進入/ home / user / Desktop / tmp-system / 輸入“tar -cvf system.tar”。

進入/ home / user / Desktop / tmp-casper / 輸入“tar -cvf casper.tar”。

卸除 SDA2

sda3的

插入空USB(例如sdb) 設置分區(與您要復制的大小寫相同)

解開分區 tar -xvf system.tar ...進入sdb2

tar -xvf casper.tar ...進入sdb3

測試 - 這里一切都出錯了!

將新創建的liveUSB插入計算機

從USB啟動

一切都開始好了

我寫的Java應用程序被觸發了 啟動過程永遠掛起

沒有cmd提示可用

沒有GUI可用

好像線程正在運行(它是!輸出可以每5分鐘查看一次 - 這正是應該的樣子)

解決方案嘗試&陷阱

1

我可以掛載復制的liveUSB,編輯startup.sh以不啟動我的Java應用程序,它仍然無法啟動(就像我懷疑的那樣?)。

2

如果我使用“dd if = sda of = sdb”,liveUSB的副本將完全正常工作。然而,這不是可接受的解決方案。如果我要將帶有dd的16gb棒復制到64gb棒上,那么將64gb棒變成16gb棒。這也會使更改每個分區中需要更改的值變得更加困難。

3

測試了startup.sh和Java應用程序本身的許多變體。所有這些都產生相同的錯誤。

4

我用來復制的方法適用于其他形式的應用程序,文件或其他任何形式。

我還想嘗試避免使用任何其他庫或程序來幫助運行Java應用程序。

6

我還裝了sda2& sdb2使用cp將所有內容直接從一個復制到另一個,然后對sda3& sdb3。這會產生相同的錯誤。

其他要點

sda3分區使用cryptsetup加密

system.tar中有2個文件(將是sdb2,來自sda2),在寫入USB后會有一個值發生變化。 這兩個值在過去沒有引起任何問題,并且每次創建新的liveUSB時都會更改

casper.tar中有1個文件(將是sdb3,來自sda3),在寫入USB后會有一個值發生變化。 此值在過去沒有引起任何問題,并且每次創建新的liveUSB時都會更改。

校驗和測試過程

原始的實時USB映像

工作liveUSB> SDA

空usb> SDB

腳步:

裝載,復制和安裝校驗和sda2 輸入“mount / dev / sda2 / media / sda2”

鍵入“tar -C / media / sda2 -cvf~ / Desktop / system.tar”。

輸入“find.-type f -exec sha1sum {}';' > /tmp/sda2_checksum.txt“

輸入“umount / media / sda2”

裝載,復制和安裝校驗和sda3 輸入“mount / dev / sda3 / media / sda3”

輸入“tar -C / media / sda3 -cvf~ / Desktop / casper.tar”。

輸入“find.-type f -exec sha1sum {}';' > /tmp/sda3_checksum.txt“

輸入“umount / media / sda3”

為sdb創建分區

裝載,寫入&校驗和sdb2 輸入“mount / dev / sdb2 / media / sdb2”

鍵入“tar -C / media / sdb2 -xvf~ / Desktop / system.tar”

輸入“find.-type f -exec sha1sum {}';' > /tmp/sdb2_checksum.txt“

輸入“umount / media / sdb2”

裝載,寫入&校驗和sdb3 輸入“mount / dev / sdb3 / media / sdb3”

輸入“tar -C / media / sdb3 -xvf~ / Desktop / casper.tar”

輸入“find.-type f -exec sha1sum {}';' > /tmp/sdb3_checksum.txt“

輸入“umount / media / sdb3”

比較校驗和 sort /tmp/sda2_checksum.txt -o /tmp/sda2_checksum.txt.sort

sort /tmp/sda3_checksum.txt -o /tmp/sda3_checksum.txt.sort

sort /tmp/sdb2_checksum.txt -o /tmp/sdb2_checksum.txt.sort

sort /tmp/sdb3_checksum.txt -o /tmp/sdb3_checksum.txt.sort

結果

sda2& sdb2

輸入“diff sda2_checksum.txt.sort sdb2_checksum.txt.sort”

45d44

< 2ddf9802c9c15ac6e4575cc9de32e3530eae6b7d ./efi/boot/grub.cfg

82d80

< 59bb2775a8e7e499e0590b7b8c2492eb250fb7d8 ./syslinux/txt.cfg

154a153

> ae6c127713e01fc5fb4a2e4e28f6bbddc6bd6af5 ./efi/boot/grub.cfg

158a158

> b78090b66b4e3fa04ca9d466ee78c9060adf744e ./syslinux/txt.cfg

這兩個文件包含每個被更改的值。其他一切都是一樣的。結果正是它們應該是的。

sda3&amp; sdb3

輸入“diff sda3_checksum.txt.sort sdb3_checksum.txt.sort”

相同 - 請記住這是原始的liveUSB圖像。

我將在下一節中介紹進一步的比較結果。

下一步 - 又名行動計劃

從liveUSB映像開始,不需要運行腳本。

步驟1 - 成功/失敗?

成功 - 校驗和匹配

將liveUSB上的java從6更新為7

重新創建tar

從tar創建新的liveUSB

測試liveUSB

第2步 - 成功/失敗?

成功 - 校驗和匹配

創建/ home / user / folder /

將java應用程序的類文件復制到/ home / user / folder /

重新創建tar

從tar創建新的liveUSB

測試liveUSB

第3步 - 成功/失敗?

成功 - 校驗和匹配

將startup.sh添加到/etc/init.d/

不調用update-rc.d

重新創建tar

從tar創建新的liveUSB

測試liveUSB

第4步 - 成功/失敗?

成功 - 校驗和匹配

(我以前從未成功實現過這一點) - 但是需要編寫的值尚未插入到casper(sda3)分區中。

輸入“update-rc.d startup.sh start 21 2 5”。

重新創建tar

從tar創建新的liveUSB

測試liveUSB

第5步 - 成功/失敗?

成功 - 校驗和匹配

我不敢相信這有效!這讓我想到......(以一種很好的方式說出來)為什么這個世界以前不起作用?

- 巧妙的是版本-13有效。

引導liveUSB

在創建tar之前插入要在casper(sda3)中重寫的值 從liveUSB運行時

編輯/home/user/folder/config.properties中的配置文件

關閉liveUSB

重新創建tar

從tar創建新的liveUSB

測試liveUSB

圖片完成!!

我還沒完成這個!

*寫入usb的過程從未改變過。

為什么之前不起作用?

焦油方法? - 只是稍有變化...... 來自“tar -cvf casper.tar”。

要“tar -C / media / sda3 / -cvf~/ Desktop / casper.tar。

這些線條沒有完成同樣的事情嗎?

我將在不久的將來對此進行測試。 - 我懷疑沒有區別。

將程序分解為單獨的步驟? 之前: 根據NEXT STEPS - 又名行動計劃,我將在制作新圖像之前完成所有這些步驟。

后: 完全遵循了下一步 - 即行動計劃

這可能是區別嗎?

我將在不久的將來對此進行測試。

可以從casper(sda3)分區中的/ home /目錄中刪除大(或小)文件會導致某種損壞嗎? 我不知道..?

我將在不久的將來對此進行測試。

進一步測試 - 我想要我的答案!

從原始的liveUSB圖像開始。

將liveUSB上的java從6更新為7

創建/ home / user / folder /

將java應用程序的類文件復制到/ home / user / folder /

將startup.sh添加到/etc/init.d/

輸入“update-rc.d startup.sh start 21 2 5”。

編輯/home/user/folder/config.properties中的配置文件

這一次一步一步。 - 它會起作用嗎?

測試1 - 成功/失敗?

失敗!

老焦油方法

測試2 - 成功/失敗?

老焦油方法

刪除/ boot /中生成的文件 當寫入casper(sda3)分區時,我的腳本創建此文件,僅包含用于驗證的id,對啟動過程沒有影響。

測試3 - 成功/失敗?

新焦油方法

測試4 - 成功/失敗?

新焦油方法

刪除/ boot /中生成的文件 當寫入casper(sda3)分區時,我的腳本創建此文件,僅包含用于驗證的id,對啟動過程沒有影響。

結果

我將按此順序進行測試:

測試1 - &gt;試驗3 - &gt;測試4 - &gt;測試2

如果測試1工作......我會跳出窗外!

- 我不知道為什么它現在會起作用,因為我已經多次測試過并且每次都會產生不成功的靴子。

- 也許cp或tar進程以某種方式被破壞了。

什么時候 測試1失敗:

如果測試3工作......

- tar方法導致錯誤。

- 我不明白舊tar方法與新tar方法有什么不對。

TBC ......

總結

以上是生活随笔為你收集整理的linux usb init,复制Linux liveUSB导致init.d脚本出错 - 不可能..?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。