The Overall Problem
当我安装一个简单的Java应用程序,我写的是在后台通过/etc/init.d/在启动时运行,它适用于我明确安装它的liveUSB . 当我制作该棒的副本时,它永远不会成功启动 . 在引导liveUSB副本时,当liveUSB引导进程到达我的脚本时,Java应用程序将始终挂起 . 我的脚本确实完成了它应该做的事情,甚至每5分钟一次,并将继续运行,直到你关闭机器 .
-
我的脚本阻止了其他一切
-
除了我的脚本之外什么都没有加载
-
您无法取消我的脚本
-
没有GUI
-
您可以看到的唯一文本是我的脚本输出的命令行
Setup & Test - 一切顺利:)
我有一个带有3个分区的Linux liveUSB . 加载简单的标准Xubuntu映像 .
-
sda1> 2gb stoage
-
sda2> 2gb系统
-
sda3>为casper剩余的gb
我创建了一个简单的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 ."
-
此更新的运行级别已成功完成
-
现在我可以重启/重启/关闭任何操作,一切运行完美!
The Copy - 这里变得棘手!
在创建此棒的副本时,我按照以下步骤操作:
-
装载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 ."
-
Umount
-
sda2
-
sda3
-
插入空USB(例如sdb)
-
设置分区(与您要复制的记忆棒相同)
-
进入分区
-
tar -xvf system.tar ...进入sdb2
-
tar -xvf casper.tar ...进入sdb3
Testing - 这里一切都出错了!
-
将新创建的liveUSB插入计算机
-
从USB启动
-
一切都开始好了
-
我写的Java应用程序被触发了
-
启动过程永远挂起
-
没有可用的cmd提示符
-
没有可用的GUI
-
好像线程正在运行(它是!输出可以每5分钟查看一次 - 这正是应该的样子)
Solution Attempts & Gotchas
1
我可以挂载复制的liveUSB编辑startup.sh以不启动我的Java应用程序,它仍然无法启动(就像我怀疑的那样?) .
2
如果我使用“dd if = sda of = sdb”,liveUSB的副本将完全正常工作 . 然而,这不是可接受的解决方案 . 如果我要将带有dd的16gb棒复制到64gb棒上,那么将64gb棒变成16gb棒 .
3
测试了startup.sh和Java应用程序本身的许多变体 . 所有这些都产生相同的错误 .
4
我用来复制的方法适用于其他形式的应用程序,文件或其他任何形式 .
5
我还想尝试避免使用任何其他库或程序来帮助运行Java应用程序 .
1 回答
你最好做的是使用一种方法快速创建一个liveUSB Linux棒,然后添加Java程序设置和目录 . 这是一些帮助 - Bootable pendrive as live cd
我非常喜欢你提到的第1点 . 即使没有Java程序也无法复制liveUSB . 您花了很长时间来调试该程序 . 我觉得你有兴趣安装许多带有Java程序的liveUSB . 由于dd不是一个选项,我的猜测是以某种方式使用Kickstart程序进行快速LiveUSB安装然后复制Java东西更有意义 . 谢谢 .