【问题标题】:Copy Linux liveUSB causes errors with init.d scripts复制 Linux liveUSB 导致 init.d 脚本出错
【发布时间】:2013-09-24 18:20:46
【问题描述】:

整体问题


当我通过 /etc/init.d/ 安装我编写的在后台启动时运行的简单 Java 应用程序时,它可以在我明确安装它的 liveUSB 上运行。当我复制那个棒时,它永远不会成功启动。启动 liveUSB 副本时,当 liveUSB 启动过程到达我的脚本时,Java 应用程序将始终挂起。我的脚本,它确实按照它应该做的,甚至每 5 分钟一次,并且会一直运行下去,直到你关闭机器。

  1. 我的脚本阻止了其他所有内容
  2. 在我的脚本之外没有加载任何内容
  3. 你不能取消我的脚本
  4. 没有图形用户界面
  5. 您可以看到的唯一文本是我的脚本的命令行输出

设置和测试 - 一切顺利 :)


我有一个带有 3 个分区的 Linux liveUSB。加载了简单的标准 Xubuntu 图像。

  • sda1 > 2GB 存储空间
  • sda2 > 2gb 系统
  • sda3 > casper 的剩余 gb

我创建了一个简单的 Java 应用程序,它在启动时在后台运行。为了做到这一点,我遵循了以下步骤:

  1. 将 java 应用程序编译成类
  2. 将类文件放在 /home/user/folder/ 中
  3. 将我的 startup.sh 脚本复制到 /etc/init.d/
  4. 在 /etc/init.d/ 内部时
    • 键入“update-rc.d startup.sh start 20 2 5 .stop 20 0 1 6。”
    • 这成功更新了运行级别
  5. 现在我可以重新启动/重新启动/关闭任何操作,一切运行正常!

副本 - 这就是棘手的地方!


创建此棒的副本时,我遵循以下步骤:

  1. 安装 sda2
    • 将该文件夹中的所有内容复制到 /home/user/Desktop/tmp-system/
  2. 安装 sda3
    • 将该文件夹中的所有内容复制到 /home/user/Desktop/tmp-casper/
  3. 进入 /home/user/Desktop/tmp-system/
    • 键入“tar -cvf system.tar”。
  4. 进入 /home/user/Desktop/tmp-casper/
    • 键入“tar -cvf casper.tar”。
  5. 卸载
    • sda2
    • sda3
  6. 插入空 USB(例如 sdb)
    • 设置分区(与您从中复制的记忆棒相同)
    • 解压到分区
      • tar -xvf system.tar ... 进入 sdb2
      • tar -xvf casper.tar ... 进入 sdb3

测试 - 一切都出问题了!


  1. 将新创建的 liveUSB 插入计算机
  2. 从 USB 启动
  3. 一切都开始正常启动
  4. 我编写的 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

我用来复制的方法适用于所有其他形式的应用程序、文件或其他任何东西。


5

我还想尽量避免使用任何额外的库或程序来帮助运行 Java 应用程序。

【问题讨论】:

  • 很好的问题定义。但是......我不认为这是一个编程问题。您最好将其标记并要求版主转到 Superuser.com。祝你好运。
  • 我也把它贴在那里了:S

标签: java linux daemon startup init.d


【解决方案1】:

你最好用一种方法快速创建一个liveUSB Linux记忆棒,然后添加Java程序设置和目录。 这里有一些帮助 - Bootable pendrive as live cd

我绝对喜欢你提到的第 1 点。复制 liveUSB 即使没有 Java 程序也不行。您已经花费了相当长的时间来调试该程序。我感觉您有兴趣制作许多安装了 Java 程序的 liveUSB。由于 dd 不是一个选项,我猜想以某种方式使用 Kickstart 程序进行快速 LiveUSB 安装然后复制 Java 内容更有意义。 谢谢。

【讨论】:

    猜你喜欢
    • 2013-02-08
    • 1970-01-01
    • 2012-10-28
    • 2013-05-09
    • 1970-01-01
    • 1970-01-01
    • 2013-09-29
    • 2011-04-05
    • 1970-01-01
    相关资源
    最近更新 更多