我如何知道是本地 HDD 还是 USB 密钥?我更喜欢一种没有root权限的方法。/dev/sdX
好的,udevadm帮了大忙:
对于本地硬盘:
udevadm info --query=all --name=sdb | grep ID_BUS
E: ID_BUS=ata
Run Code Online (Sandbox Code Playgroud)
对于 USB 密钥:
udevadm info --query=all --name=sdc | grep ID_BUS
E: ID_BUS=usb
Run Code Online (Sandbox Code Playgroud) 为什么 Linux 在这么多不同类型的机器上运行良好——台式机、笔记本电脑、服务器、嵌入式设备、手机等?主要是因为系统是开放的,所以它的任何部分都可以修改以在不同的环境中工作吗?或者 Linux 内核和/或系统是否有其他属性可以使该操作系统更容易在如此广泛的平台上工作?
我正在运行 Lubuntu 11.10,我想从命令行显示我的音频/声卡驱动程序。
I have extracted the shorthand version of the current monitor attached to the computer.
Here is an example: vendor "VSC", prod id "18500"
In Ubuntu's Monitor Preferences, it is identified as Viewsonic Corporation 16".
How can I extract this human readable form? ... and also, how can I determine if a monitor is a CRT or an LCD? (this is actually what got me started on this quest)
The EDID format can be found on Wikipedia: Extended display …
我想知道类型、尺寸和型号。但我想避免关闭和打开机器。
昨天我与某人就我在这里回答的逻辑和/或真实性进行了一场小辩论,vis.,在一个像样的 (GB+) 大小的 SD 卡上记录和维护 fs 元数据永远不会足够重要到佩戴该卡在合理的时间内(年和年)。反驳的要点似乎是我一定是错的,因为网上有很多关于人们磨损 SD 卡的故事。
由于我确实有带有 SD 卡的设备,其中包含 24/7 保留的 rw 根文件系统,因此我之前已经测试过这个前提,令我自己满意。我稍微调整了这个测试,重复了它(实际上是使用同一张卡)并在这里展示它。我的两个核心问题是:
我把问题放在这里而不是 SO 或 SuperUser 因为对第一部分的反对可能不得不断言我的测试并没有像我确定的那样真正写入卡,并且断言这需要一些linux 的特殊知识。
[也可能是 SD 卡使用某种智能缓冲或缓存,这样对同一位置的重复写入将被缓冲/缓存在不易磨损的地方。我在任何地方都没有发现任何迹象,但我在 SU 上询问了这一点]
测试背后的想法是向卡上的同一个小块写入数百万次。这远远超出了此类设备可以承受多少写入周期的任何说法,但假设磨损均衡是有效的,如果卡的大小合适,那么数百万次此类写入仍然无关紧要,因为“同一个块”会不是字面上的相同物理块。为此,我需要确保每次写入都真正刷新到硬件,并刷新到相同的明显位置。
为了刷新到硬件,我依赖于 POSIX 库调用fdatasync():
#include <stdio.h>
#include <string.h>
#include <fcntl.h>
#include <errno.h>
#include <unistd.h>
#include <stdlib.h>
// Compile std=gnu99
#define BLOCK 1 << 16
int main (void) {
int in = open ("/dev/urandom", O_RDONLY);
if (in < 0) { …Run Code Online (Sandbox Code Playgroud) 我有一台基于 ARM 的计算机,它似乎可以正常运行 Ubuntu Linux(非 GUI)。如何获取此计算机上所有组件的列表?如果可能的话,像以太网芯片、Wifi 芯片、蓝牙、CPU、电源管理芯片等类型。
哪个 Linux 实用程序可以告诉我我的服务器中是否已注册或未缓冲 ECC 内存?Lshw并dmidecode没有对我的工作; dmidecode不提供有关已注册与未缓冲的信息:
Handle 0x0022, DMI type 17, 28 bytes
Memory Device
Array Handle: 0x0021
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 4096 MB
Form Factor: DIMM
Set: None
Locator: DIMM-1A
Bank Locator: Not Specified
Type: <OUT OF SPEC>
Type Detail: Synchronous
Speed: 1066 MHz (0.9 ns)
Manufacturer: Not Specified
Serial Number: Not Specified
Asset Tag: Not Specified
Part Number: Not Specified
Run Code Online (Sandbox Code Playgroud) 好吧,我感觉太老了,无法通过通常的供应商特定方式来升级几个固件:下载一些 DOS 工具,浪费一些时间创建(免费)DOS 引导介质,浪费更多时间制作 BIOS实际上从中启动,最后刷新固件升级。
这就是 1980 年代。
我从Coreboot 项目中遇到了一些linux flash 工具。它似乎支持各种 FLASH 芯片。但它在实践中如何运作?
我想有一些陷阱将供应商提供的固件升级转换为正确的格式。或者如何确定正确的目标芯片?
目前我可能必须升级,例如:
如何在 Linux 系统上升级设备固件?
我有一支带按钮的 wacom 笔。在按下按钮的情况下移动笔时如何触发滚动?
根据xev,下面,触发事件是状态为0x200 的MotionNotify。
如果这不是轻而易举地完成,我的一个想法是构建一个服务来从某个地方读取这些事件并将它们转换为其他事件。这样,我也可以定义手势。通过这种方法:
MotionNotify 事件,序列号 33,合成 NO,窗口 0xc00001,
根 0x2ce, subw 0x0, 时间 695630659, (349,181), 根:(1255,185),
状态 0x0, is_hint 0, same_screen 是
ButtonPress 事件,串行 33,合成 NO,窗口 0xc00001,
根 0x2ce, subw 0x0, 时间 695630659, (349,181), 根:(1255,185),
状态 0x0,按钮 2,same_screen 是
MotionNotify 事件,序列号 33,合成 NO,窗口 0xc00001,
根 0x2ce, subw 0x0, 时间 695630667, (348,183), 根:(1254,187),
状态 0x200, is_hint 0, same_screen 是
MotionNotify 事件,序列号 33,合成 NO,窗口 0xc00001,
根 0x2ce, subw 0x0, 时间 695630675, …