我实际上对操作系统的工作原理感兴趣,从POST过程到POST过程,再到内核,GUI等.
好吧,我必须从头开始:bootsector
大多数教程仅指定如何将.bin引导程序安装到Linux用户的USB记忆棒上.
但是当我使用XP时,我想问一下如何将我的512字节.bin放到USB上的正确位置,这绝对不是通过使用资源管理器复制它:D
我正在编写一个可以在Windows Startup上运行的应用程序.
当应用程序在我的PC真正解决之前陷入困境时,我无法忍受,这是一个非关键的应用程序.我希望我的应用程序礼貌地等待所有其他启动项目完成并解决,以便用户的PC在开始执行任何工作之前变得响应.
我该如何检测这种情况?我想我可以遍历注册表并查找所有正在运行的启动进程,或者使用长时间计时器.我只是希望我可能会使用另一种不那么狡猾的技巧.
编辑:该应用程序具有UI,无法作为服务运行.它有一个托盘模式.它做了一些图像渲染.
我试图将断点设置为在启动时启动的Windows服务.由于我的一个不幸的错误,该服务强制机器进入一个重启循环:这意味着我无法进入一个稳定的状态,我可以从中部署修复,显然我不能尝试调试服务在一个更方便的时间.
我可以在内核模式下使用windbg.当服务遇到这个wmain功能时,我非常想破解,但我遇到了问题.
到目前为止,我发现使用以下命令加载图像时可以停止:
!gflag +ksl
sxe ld MyServiceExecutable.exe
Run Code Online (Sandbox Code Playgroud)
问题是,一旦它破裂,我发现自己处于一个空洞的过程中,我显然无法设置断点.bm MyServiceExecutable!wmain说它找不到符号,并且断点将被"延迟",但它实际上从未设置或达到.KERNEL32!BaseThreadInitThunk在所有正在运行的进程中,设置断点似乎或多或少地随机工作,到目前为止我没有很多运气来停止我的服务.
如何将C程序编译为有效的ELF格式(或RAW格式),以便可以在没有任何操作系统的情况下直接从RAM执行?假设存在一个能够将代码加载到RAM中的任何位置并开始在该地址执行的引导加载程序.确切地说,编译器(GCC)标志应该是什么?是否需要地图文件?
欢迎使用示例helloworld应用程序:)
为了详细说明我的观点,
让main()方法成为一个空的无限while循环,以确保不使用OS特定的或标准的库调用.期望的o/p是一个悬念.使用通常的GCC选项,引导加载程序肯定无法加载可执行文件,因为它是无效的ELF格式.但是,通过将-dN选项传递给链接器将使其成为有效的ELF.需要更多编译器/链接器选项才能使其挂起而不会崩溃!这些编译器选项究竟是什么?
file.c:
int main()
{
while(1);
}
Run Code Online (Sandbox Code Playgroud)
编译
gcc -c -nostdinc -fno-builtin
file.c ld -dN -nostdlib file.o
Bootloader将a.out加载到RAM并执行.
当PC首次启动时,它开始在物理地址0xffff0处执行.该地址包含对BIOS的jmp指令.
现在我的问题是,我总是假设物理地址映射到RAM.如果RAM最初包含垃圾值,那么将jmp指令准确地放在0xffff0中是什么?对于不同的BIOS,jmp指令总是相同还是不同?0xffff0是否从RAM映射到BIOS然后(意味着它是"硬映射")?
我有一个脚本,它在启动计算机时请求用户输入数字.计算机正在运行Fedora 16.它在Fedora 13上使用了工作,但在升级之后
read INTEGER
Run Code Online (Sandbox Code Playgroud)
立即返回,不会捕获任何用户输入.我试过了
read INTEGER
wait $!
Run Code Online (Sandbox Code Playgroud)
但(可预见地),这也不起作用.该脚本从systemd服务文件运行(请参阅下面的注释).它必须以root身份运行,并且必须在用户登录之前启动.它当前将bash称为其解释器,但是通过一些努力,可以更改它.任何人都可以帮助将此脚本恢复正常吗?
额外功劳:在F13中,它用于暂停用户输入的启动(根据需要),但输入未显示为用户键入的内容.有没有办法添加此功能?
如何在shell中获得绝对的系统启动时间?我尝试了cat/proc/uptime,但这只返回重启后的时间.
我有一个想法创建我自己的手机锁应用程序类似于Android模式锁.每当手机启动/重启/手机,锁定/电话和解锁时,我都需要显示或启动我的应用程序.我不知道如何使应用程序显示而不是默认锁定屏幕并隐藏默认锁定屏幕.所以我的问题是:
什么是
getWindow().addFlags(
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON |
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
Run Code Online (Sandbox Code Playgroud)这有用吗?
什么是
public class BootReciever extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction() != null) {
if (intent.getAction().equals(Intent.ACTION_USER_PRESENT)) {
Intent s = new Intent(context,ViewPagerMainActivity.class);
s.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(s);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)这有用吗?
我已经按照Firebase快速入门消息传递教程,我遇到了问题.
我想在系统启动时启动两个服务(MyFirebaseMessagingService和MyFirebaseInstanceIDService).
为此,我已将RECEIVE_BOOT_COMPLETED权限添加到我的AndroidManifest.xml.
我也把它添加到Manifest:
<receiver android:name=".AutoStart">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
在我的AutoStart班上,有这样的:
@Override
public void onReceive(Context context, Intent intent) {
context.startService(new Intent(context, MyFirebaseInstanceIDService.class));
context.startService(new Intent(context, MyFirebaseMessagingService.class));
}
Run Code Online (Sandbox Code Playgroud)
这两项服务与我上面提供的链接几乎相同.我MainActivity只包含一些Views.
但它不起作用:一旦服务启动,服务就会自动终止,我在logcat中收到这样的消息:
I/ActivityManager? Killing 3100:com.company.E/u0a85 (adj 15): empty #17
Run Code Online (Sandbox Code Playgroud)
我已经搜索了关于这个"杀戮问题"的解决方案,我想我在这里找到了一些有趣的东西(关于WakefulBroadcastReceiver).
如果这部分解决方案,我遇到了这个答案的另一个问题...... onHandleIntent()他谈到的覆盖方法是IntentService我的两个服务所在的一部分Service.
如果这不是解决方案的一部分,我不知道如何防止我的应用程序被杀死 ...
当我尝试启动 Ubuntu 时,它永远不会完成启动过程,因为它出现消息“无法启动 PostgreSQL Cluster 10-main”。我也收到了与 9.5-main 相同的消息。但是让我们专注于 10。
当我执行:
systemctl status postgresql@10-main.service
Run Code Online (Sandbox Code Playgroud)
我收到以下消息:
postgresql@10-main.service - PostgreSQL Cluster 10-main
Loaded: loaded (/lib/systemd/system/postgresql@.service; indirect; vendor preset: enabled)
Active: failed (Result: protocol) since Wed 2020-02-19 17:57:22 CET; 30 min ago
Process: 1602 ExecStart=/usr/bin/pg_ctlcluster --skip-systemctl-redirect 10-main start (code_exited, status=1/FAILURE)
PC_info systemd[1]: Starting PostgreSQL Cluster 10-main...
PC_info postgresql@10-main[1602]: Error: /usr/lib/postgresql/10/bin/pg_ctl /usr/lib/postgresql/10/bin/pg_ctl start -D /var/lib/postgresql/10/main -l /var/log/postgresql/postgresql-19-main.log -s -o -c config_file="/etc/postgresql/10/main/postgresql.conf" exit with status 1:
PC_info systemd[1]: postgresql@10-main.service: Can't open PID file /var/run/postgresql/10-main.pid (yet?) after …Run Code Online (Sandbox Code Playgroud)