首页 文章

复制Linux liveUSB会导致init.d脚本出错

提问于
浏览
0

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 回答

  • 0

    你最好做的是使用一种方法快速创建一个liveUSB Linux棒,然后添加Java程序设置和目录 . 这是一些帮助 - Bootable pendrive as live cd

    我非常喜欢你提到的第1点 . 即使没有Java程序也无法复制liveUSB . 您花了很长时间来调试该程序 . 我觉得你有兴趣安装许多带有Java程序的liveUSB . 由于dd不是一个选项,我的猜测是以某种方式使用Kickstart程序进行快速LiveUSB安装然后复制Java东西更有意义 . 谢谢 .

相关问题