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脚本出错 - 不可能..?相关推荐
- linux usb host复位,Linux USB Host-Controller的初始化代码框架分析
Linux USB Host-Controller的初始化代码框架分析 http://blog.csdn.net/zkami usb_hcd_omap_probe (const struct hc_d ...
- linux系统文件的复制,linux操作系统文件复制操作
<linux操作系统文件复制操作>由会员分享,可在线阅读,更多相关<linux操作系统文件复制操作(5页珍藏版)>请在人人文库网上搜索. 1.网络操作系统"课程实验报 ...
- linux usb hub 流程,Linux usb hub 处理
Linux usb hub处理 谨以此文纪念过往的岁月 一.前言 在前文中我们看过了usb hub的probe对于其初始化应该有了一定的了解,那在该文中我们来看usb hub守护程序. 二. Hub守 ...
- linux usb驱动 probe,Linux USB驱动程序probe()问题
我目前正在使用Seowon SWU-3220A WiMAX USB调制解调器的内核模式USB驱动程序.它是一个复杂的设备(在插入系统后显示为USB CDROM,驱动程序需要将其切换到调制解调器模式). ...
- linux usb全自动安装,制作liveusb实现centos6.2全自动无人职守安装
这几天一直在研究u盘全自动安装centos,把具体过程分享一下供参考,同时也做为我个人的一个备忘 主要准备以下4样东西 1.8G以上u盘一只 2.CentOS镜像CentOS-6.2-x86_64-b ...
- linux usb 总线驱动程序,Linux下的USB总线驱动
一.USB理论 1. USB概念概述 USB1.0版本速度1.5Mbps(低速USB) USB1.1版本速度12Mbps(全速USB) USB2.0版本速度480Mbps(高速USB) U ...
- linux .o文件 复制,Linux I/O实现文件复制
前一段时间采用mmap实现了一个文件的复制操作,现在采用linux的I/O实现文件的复制,基本的思想是将文件复制到一个通用的buf中,然后将buf中的数据复制到新的文件中.这种方式比较容易理解,但是也 ...
- linux usb外接硬盘,在Linux系统上使用外置USB硬盘
在Linux系统上使用外置USB硬盘 (2009-08-30 23:20:42) 标签: linux it 执行 lsmod | grep usb . 如果看到如下结果,表示内核已经挂载了usb驱动模 ...
- linux usb检测工具,Linux下USB设备检测全教程
USB设备检测也是通过/proc目录下的USB文件系统进行的.为了使一个USB设备能够正常工作,必须要现在系统中插入USB桥接器模块.在检测开始时,一般要先检测是否存在/proc/bus/usb目录, ...
最新文章
- hadoop 2.2.0 终于编译ok了
- java形参的传递机制
- 解决flex4 分辨率自适应问题
- android视频播放指定位置,android – 如何在某个特定位置的视图中查看视频?
- node.js入门 - 12.api:进程(process)
- 重学C语言_数据结构与基础语法
- AI算法连载08:统计学之贝叶斯
- 火柴人_火柴人战争遗产修改无限金币钻石
- element-ui简单使用
- 神州12号航天员确定:住110米“大平层” 有120种美食
- 最大概率法分词及性能測试
- java实现for文件删除_Java 添加、删除、替换、格式化Word中的文本的步骤详解(基于Spire.Cloud.SDK for Java)...
- Uncaught SyntaxError: Unexpected token ‘var‘
- python是一门胶水语言_python为何被称之为胶水语言
- 圆柱体积怎么算立方公式_圆柱的体积换算立方怎么算
- 逆水寒7.25服务器维护,逆水寒7月4日更新维护公告 角色交易功能上线
- 随机函数c语言对打,20165323 学习基础和C语言基础调查
- Excel 实现多列文本合并/合并单元格内容 的三种方法
- 维山VS073高拍仪技术规格说明书
- DNA甲基化测序方法介绍
热门文章
- python反射和高阶内置方法
- 如何改变 Python 中线程的执行顺序
- 全面理解python中self的用法
- Python:23种Pandas核心操作
- python之super
- mysql专区_MySQL-技术专区-详解索引原理
- 对源码包打补丁方法Patch
- Intel Realsense D435报错:RuntimeError: Acquire failed!
- python 文件操作 os.readline()函数用法
- Python多进程multiprocessing共享数据Value(包括常用的整数、字符串)、列表及字典以及Queue