我知道屏幕阅读器和类似的软件可以帮助盲人和视障人士在Windows或其他操作系统中使用计算机.
我很好奇在较低级别的环境中可以获得哪些支持,例如OS安装程序和BIOS设置等.
我知道这是一个相当难以回答的问题,主要是因为有很多事情可能是错误的,很难把事情搞得一团糟.但我会尽可能多地提供信息; 希望这会有所帮助.
我开始使用D语言和Digital Mars D编译器编写自己的内核,并且在弄清楚如何生成可以重新定位的平面二进制文件之后遇到了很多麻烦,我终于提出了生成普通PE文件的想法.地址0xC0000000,并用字节0x90(NOP操作码)替换所有标头.这非常好用,我能够在屏幕上编写内容,设置分页,完全进入保护模式等,当然还有16位基于汇编的引导加载程序的帮助.
一切都很顺利,也就是说,我决定将D运行时库移植到我的内核中.我设法提取了库的一个子集并对其进行修改以使其编译到我的应用程序中.然后我运行了我的程序.(注意:我根本没有 使用该库;我的代码是在引导后执行的第一个代码 - 第一件事就是打印"Kernel"到屏幕上,之前没有调用运行时代码.)
AD数组(因此字符串,因为字符串只是一个char[])只不过是一个带有指针和大小成员的结构,因此在32位系统上它将是8字节大.有趣的是,当我运行我的程序时,结构的成员显示为零 - 也就是说,指针和大小都为零.(我通过将指针的值打印到屏幕以及长度成员来验证这一点 - 两者都是零.)一旦我删除了运行时的源代码(从未执行过),它们工作正常.
我把它缩小到两种可能性:
堆栈在某种程度上没有正确设置:我排除了这一点,因为没有运行时库,一切正常,我确认在我的代码之前没有通过反汇编文件执行其他代码.
PE文件部分很有趣:我检查过,并发现在运行时版本中有两个TLS(线程局部)变量.果然,当我让它们共享(而不是线程本地)时,我的代码工作了!但是,当我调用我在不同文件中编写的代码时,我的代码仍然会出现同样的问题 - 只有kernel.d启动文件才能正确处理字符串; 在其他文件中,数组再次为零.
现在,有没有人猜到为什么会发生这种情况?
如果需要更多信息,我很乐意发布.
谢谢!
为了防止由迷你PC驱动的硬件设置的电源故障(在我的情况下可能相对常见),我需要让计算机自动打开,并且在A/C电源可用时尽快打开.我听说有些BIOS可以选择用A/C电源自动打开电脑(正是我想要的),但我目前使用的电脑(Giada N20)在BIOS中没有这个选项.
最接近的是RTC闹钟,它在某个时间唤醒计算机,但我只是想在计算机关闭时一直唤醒计算机.在我的情况下,局域网唤醒似乎是不必要的黑客攻击,因为它需要服务器不断尝试唤醒计算机.
我还能做些什么来自动开机吗?谢谢.
所以我正在尝试编写一些满足LSB的init.d脚本,以便它们在启动和关闭时正常运行.不幸的是,我遇到了LSB/update-rc.d以满足依赖性的问题.
# Required-Start: $network $local_fs hadoop-namenode hadoop-datanode zookeeper-server
# Required-Stop: $network $local_fs hadoop-namenode hadoop-datanode zookeeper-server
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
Run Code Online (Sandbox Code Playgroud)
但是,当我运行update-rc.d默认值时,它只会生成所涉及的默认值,其启动时间与已经存在的相同,这会破坏可怕的事情.我是否遗漏了update-rc.d或LSB来配置这个?
如果它是相关的,这是Ubuntu 12.04
我一直在阅读BrokenThorn的操作系统开发教程,我正在创建和加载第二阶段引导加载程序.本教程适用于Windows,但我在Linux(Ubuntu 13.04)中这样做.
这就是我所做的:
floppy.img下~/Documents/floppy用mkfs.vfat命令boot.asm使用nasm 编译的文件给我boot.bindd if=boot.bin of=~/Documents/floppy/floppy.img bs=512 count=1因此,我有第一阶段bootloader的软盘映像.在使用qemu开始时,它工作正常.
但是,在我创建第二阶段引导加载程序之后,(如果我是正确的)我将必须floppy.img将第二阶段2安装到已安装的文件系统上.在这种情况下,如何使用qemu启动已安装的软盘?它甚至可能吗?如果没有,我如何使用第二阶段引导加载程序.
请原谅我任何愚蠢的假设/问题,因为我是新手.
我用窗口8.1双启动了arch linux.安装后,第一次启动时,发生此错误.
Here is the error I found.
{ [0.063411] Ignoring BGRT: Invalid status 0 (expected 1)
starting version 218
Arch_Linux: clean, 70622/18677760 files, 1643393/74703025 blocks
[ 15.759913] nouveau E[ PIBUST][0000:01:00.0] HUBO: 0xffffffff (0x1a
[ 15.759952] nouveau E[ PIBUST][0000:01:00.0] GPCO: 0x00000001 (0x1a
[ 15.823494] nouveau E[ PBUS][0000:01:00.0] MMIO: 0x00000000 FAULT a
[ 15.824050] nouveau E[ DRM]Pointer to TMDS table invalid
[ 15.824072] nouveau E[ DRM]Pointer to flat panel table invalid}
Run Code Online (Sandbox Code Playgroud) 我正在从底部为Beagle Bone板构建一个Linux系统.我编译了vanilla内核并构建了一个基本的根文件系统busybox.系统使用U-boot启动,而rootfs它位于Linux PC上并通过NFS导出:
/path/to/rootfs 10.42.0.17(rw,wdelay,no_root_squash,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)
Run Code Online (Sandbox Code Playgroud)
U-boot bootargs是:
bootargs console=ttyO0,115200n8 root=/dev/nfs rw nfsroot=${serverip}:/path/to/rootfs,v3,tcp ip=dhcp
Run Code Online (Sandbox Code Playgroud)
我在尝试su为非root用户工作时遇到了问题.为了解决这个问题,互联网上的人们建议设置二进制suid位busybox.这样做之后:
$ sudo chmod u+s busybox
Run Code Online (Sandbox Code Playgroud)
并验证:
$ ls -la
...
-rwsr-xr-x 1 myuser myuser 1882976 Jan 13 21:47 busybox
...
$ stat -c "%a %n" busybox
4755 busybox
Run Code Online (Sandbox Code Playgroud)
有些不对劲.内核正在启动并显示所有常用消息,但最后会卡住,并且不会login显示任何行.以下是启动顺序的最后几行:
[ 3.776185] IP-Config: Complete:
[ 3.779656] device=eth0, hwaddr=c8:a0:30:c5:80:e9, ipaddr=10.42.0.17, mask=255.255.255.0, gw=10.42.0.1
[ 3.789877] host=10.42.0.17, domain=, nis-domain=(none)
[ 3.795822] bootserver=10.42.0.1, rootserver=10.42.0.1, rootpath=
[ 3.802492] nameserver0=10.42.0.1 …Run Code Online (Sandbox Code Playgroud) 我有一个智能手机连接到太阳能充电器.白天,它正确供电.但是在夜晚,由于缺乏能量,它有时会自动关闭.
我的问题是:当电池电量超过一定百分比时,可以将其重新打开(以编程方式)?我正在寻找一种干净合法的方式.我对缺陷或漏洞不感兴趣.我在官方文档中找不到任何内容.谢谢.
我是汇编语言的绿手.这些天我用bochs来模拟虚拟软盘的启动过程.但我不知道的一件事CS是系统初始化时寄存器值是什么.
;; init registers
org 0x7c00
BaseOfStack equ 0x7c00
Label_Start:
mov ax, cs
mov ds, ax
mov es, ax
mov ss, ax
mov sp, BaseOfStack
;; clear screen
mov ax, 0600h
mov bx, 0700h
mov cx, 0
mov dx, 0184h
int 10h
Run Code Online (Sandbox Code Playgroud)
上面的代码只是其中的一部分.ORG执行命令时,指令的CS寄存器值是多少mov ax, cs.它与0x7c00相同吗?谢谢.
下面是bochsrc配置:
romimage: file="$BXSHARE/BIOS-bochs-latest"
vgaromimage: file="$BXSHARE/VGABIOS-lgpl-latest"
boot: floppy
floppy_bootsig_check: disabled=0
floppya: type=1_44, 1_44="myboot.img", status=inserted
pci: enabled=1, chipset=i440fx
vga: extension=vbe, update_freq=15
cpu: ips=15000000
log: bochsout.txt
mouse: enabled=0 …Run Code Online (Sandbox Code Playgroud) 我们有一个 Android 应用程序,我们打算在手机启动期间启动/启动。通过在 Android 10 中尝试一些代码,我们意识到在 Android 8.0 之后无法在启动时启动应用程序。以前在 Android 6 中,这是可能的。即使在物理设备/手机/模拟器 Android 10 中,我们也在 AutoStart 列表中授予了我们的应用程序权限。<<目标:有什么方法(解决方法)可以在启动时启动应用程序,即使是在最新版本(即 Android 8 及以上版本)上?>>
我们在 Android 10 中所做的尝试:以下是 3 段代码 - AndroidManifest.xml、MyActivity.java、MyBroadcastReceiver.java
1)AndroidManifest.xml
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /><uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<activity android:name=".MainActivity" android:launchMode="singleTop" android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true" android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<receiver android:name=".MyBroadcastReceiver" android:enabled="true" android:exported="true" android:permission="android.permission.RECEIVE_BOOT_COMPLETED" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
2)MyActivity.java
public class MainActivity extends FlutterActivity {
@java.lang.Override
protected void onCreate(android.os.Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// "Display pop up window"
if (!Settings.canDrawOverlays(getApplicationContext())) { …Run Code Online (Sandbox Code Playgroud)