Argentinský prezident Javier Milei čelí více než stovce žalob a trestních oznámení kvůli spáchání podvodu, protože na svých sociálních sítích propagoval kryptoměnu $LIBRA, jejíž hodnota se v krátké době znásobila a pak zhroutila.
Wayland Protocols byly vydány ve verzi 1.41. S dlouho očekávaným protokolem správy barev a High Dynamic Range (HDR).
Multiplatformní open source voxelový herní engine Luanti byl vydán ve verzi 5.11.0. Podrobný přehled novinek v changelogu. Původně se jedná o Minecraftem inspirovaný Minetest (Wikipedie) v říjnu loňského roku přejmenovaný na Luanti.
V stredu 19. 02. 2025 o 10:00h bude spustený jarný webinár zdarma. Na tomto webinári si ukážeme praktické ukážky monitorovania Prometheus endpointov s využitím nástroja Zabbix. Účastníci sa dozvedia, ako nastaviť a konfigurovať Zabbix na zber dát z prometheus exporterov vrátane vytvárania LLD pravidiel. Tento webinár je určený pre mierne pokročilých administrátorov Zabbixu. Registrácia na stránke: Axians Slovakia. Zoznam všetkých webinárov: Axians Slovakia webináre.
Byla vydána beta verze GNOME 48. Vyzkoušet lze instalační ISO GNOME OS. Vydání GNOME 48 je plánováno na březen.
Bochs (Wikipedie), tj. emulátor počítačů typu x86 a x86-64, byl vydán ve verzi 3.0.
Věříte své kalkulačce? Kolik je (10^100) + 1 − (10^100)? A kolik 1%−1%?
Na čem aktuálně pracují vývojáři GNOME a KDE Plasma? Pravidelný přehled novinek v Týden v GNOME a Týden v KDE Plasma.
FlappyFavi, hra Flappy Bird v ikoně Favicon. Nefunguje na mobilech.
Byly vyhlášeny výsledky (YouTube) 28. ročníku D.I.C.E. (Design, Innovate, Communicate, Entertain) Awards: Hrou roku 2024 je Astro Bot.
/dev
, vybírám zařízení s názvy sg<číslo>
, otevřu a přes ioctl
pošlu SCSI_INQUIRY a pak testuju vrácená inquiry data, byte 1, bity 0-5 na hodnotu 0x05.
Jenže prohledávání /dev
adresáře je docela pomalé, dochází tam k neustálému kopírování řetězců, a tak hledám nějaký lepší způsob.
Řešení dotazu:
/sys
musí stačit.
GetLogicalDrives()
dostanu zařízení a funkcí GetVolumeType()
dostanu info, jestli jde o CD-ROM, aniž by se požadavek posílal mechanice, protože to už Windows "ví".
Tak mi tedy řekněte, kde v /sys ty mechaniky najdu, sice něco najdu, ale ať tam hledám jak divej, nikde nenalézám symlink na zařízení /dev/sg*
find /sys/devices -name 'media' | while read media; do [[ "$(<$media)" == "cdrom" ]] && echo "$media" done
find /sys/devices -name 'media'
mi tu nenajde vůbec nic ...
hal-device $(hal-find-by-capability --capability storage.cdrom) | grep sysfs
tak mi cdrom najde podle "capabilities". Je jich více: { 'storage', 'block', 'storage.cdrom' }
Ve vygrepovaném adresáři v sysfs sice také existuje soubor capabilities, ale tam je jen "19". Kdyby to znamenalo cdrom (nedaří se mi najít význam toho souboru či čísla) tak by to mohlo pomoct:
find /sys/devices -name 'capability' | while read capability; do
[[ "$(<$capability)" == "19" ]] && echo "$capability"
done
ale bohužel jsem z toho jinak jelen :(
hal-device $(hal-find-by-property --key storage.drive_type --string cdrom) | grep sysfs
ale jinak tomu vůbec nerozumím (to asi nemusím říkat).
/sys/bus/scsi/
. Jsou tam adresy zařízení ve tvaru A:B:C:D. Když do toho kouknu, jsou tam mimo jiné i údaje z inquery struktury (vendor, model, rev, ...) včetně type (5 = CD-ROM). Dále v tom adresáři je adresář scsi_generic, v něm adresář sg1 atd. Jenže tam nikde nevidím link na soubor s zařízením, který bych byl schopen otevřít a posílat SCSI příkazy, což je můj cíl (tak trochu si hraju a chci se dopracovat ke smazání cédéčka).
/sys/devices
. HAL vám nenutím, měl sloužit jen k identifikaci problému.
Zatím je rozdíl v tom, že vy máte scsi
a já ide
cd-rom.
Chcete říct, že vám ten hal to zařízení v /sys/devices
nenašel?
Osobně mám v /sys/devices
jak ide tak scsi zařízení.
/sys/devices/pci0000:00/0000:00:1f.2/host1/target11:0:0/1:0:0:0/block/sr0
, ale z toho taky nedostanu cestu k zařízení. Navíc zařízení /dev/sr0 nemůžu SCSI příkazy posílat, jeho otevřením se totiž otevře to médium, co tam je, musí se otevřít generické scsi zařízení /dev/sgX.
Škoda, že se kvůli debilní licenci nemůžu podívat do zdrojáků cdrecordu nebo wodimu. Zkusím naně strace ... á, někdo si může stěžovat na můj přístup, co dělá wodim. Zkouší otevírat všechna zařízení /dev/hda až /dev/hdz, /dev/scd1 až /dev/scd255 a pokud se je podaří otevřít, posílá jim SCSI příkazy. Takže opravdu zůstanu u svého způsobu, když to jinak očividně nejde.
Taky nechápu, proč wodim používá flag O_EXCL pro volání open() bez O_CREAT, když manuálová stránka píše, že je pak výsledek nedefinovaný.
[petr@nt /sys/devices]$ hal-device $(hal-find-by-property --key storage.drive_type --string cdrom) | grep sysfs linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:11.0/host1/target1:0:0/1:0:0:0/block/sr0' (string) [petr@nt /sys/devices]$
Link tam nie je (pretoze moze byt lubovolny pocet suborov, ktore reprezentuju toto zariadenie) - ale v adresari block najdes subor dev, v ktorom je MAJOR a MINOR.vám sice následně ruply nervy, ale osobně nepovažuji za velký problém projít těch pár AKTIVNÍCH sg zařízení, otevřít pár souborů dev a přečíst si major a minor, čímž mám /dev/srX (v případě scsi). Zkuste mrknout na sg_map, v nové verzi pracuje se sysfs.
$ sg_map # Note: the devfs pseudo file system is present /dev/sg0 /dev/sda /dev/sg1 /dev/sr0 /dev/sg2 /dev/sr1Samozřejmě je pořád možnost dělat to postaru, pokud jste pod tlakem.
{,}
).
V Linuxové verzi jsem teď na 174 řádcích a teď zbývá ještě dopsat kód na prohledání celého /dev pro případ, že zařízení /dev/jméno_co_se_našlo_v_sysfs
neexistuje, nebo se jeho major/minor neshoduje s tím v /sys.
Kdyby někoho zajímalo, jak to vypadá ve Windows:
TSCSIDrive *drive; TSCSIDrive tmpDrive; uint8_t device_type; /* * Using GetLogicalDrives() could speed up things, but there is always * possibility, that drive has no letter assigned, is mounted to NTFS * folder or it is not even mounted. This way we handle all these cases. */ HANDLE hVolumeSearch; /* * Volume name is in "\\?\Volume{ITS_GUID}\" format, * GUID's format is AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA */ WCHAR volumeName[MAX_PATH]; hVolumeSearch = FindFirstVolumeW(volumeName, MAX_PATH); if (hVolumeSearch != INVALID_HANDLE_VALUE) { do { volumeName[MAX_PATH-1] = 0; if (GetDriveTypeW(volumeName) == DRIVE_CDROM) { tmpDrive._open_fn = volumeName; // remove trailing slash so that we open drive itself and not // the medium inserted if (tmpDrive._open_fn[tmpDrive._open_fn.size()-1] == '\\') { tmpDrive._open_fn.erase(tmpDrive._open_fn.size()-1); } if (tmpDrive.openDrive()) { tmpDrive.setTimeout(10); // request inquiry data and make sure OS didn't lie to us if (tmpDrive.inquiry(tmpDrive._inqData, TSCSIDrive::INQUIRY_DATA_SIZE)) { device_type = (tmpDrive._inqData[0] & 0x1F); if (device_type == 0x05 /* CD-ROM */) { drive = new TSCSIDrive(); tmpDrive.readScsiAddress(drive->_address); drive->_open_fn = std::move(tmpDrive._open_fn); memcpy(drive->_inqData, tmpDrive._inqData, TSCSIDrive::INQUIRY_DATA_SIZE); _drives.push_back(drive); } } tmpDrive.closeDrive(); } tmpDrive._open_fn.clear(); } } while (FindNextVolumeW(hVolumeSearch, volumeName, MAX_PATH)); FindVolumeClose(hVolumeSearch); }
system("lsscsi | grep ...")
:)
Documentation/sysfs-rules.txt
a další.
vojta|vojta-dell ~ $> pkg-config --list-all | grep -i cd
libcdt libcdt - Container DataType library
libudf libudf - UDF library of libcdio
libcdio++ libcdio++ - C++ OO Portable CD-ROM I/O library
libcdio libcdio - Portable CD-ROM I/O library
libiso9660++ libiso9660++ - C++ OO ISO-9660 library of libcdio
libiso9660 libiso9660 - ISO-9660 library of libcdio
gstreamer-cdda-0.10 GStreamer CDDA Library - CDDA base classes
libcdio_cdda libcdio_cdda - CD paranoia CD-DA library from libcdio
libcdio_paranoia libcdio_paranoia - CD paranoia library from libcdio
libcddb libcddb - CDDB server access library
vojta|vojta-dell ~ $> pkg-config --list-all | grep -i devic
libgphoto2_port libgphoto2_port - Device-independent access to serial, USB, and other ports
devkit-power-gobject devkit-power-gobject - DeviceKit-power is a system daemon for installing stuff.
gnome-bluetooth-1.0 gnome-bluetooth-1.0 - Widgets for Bluetooth device selection
usbutils usbutils - USB device database
libmtp libmtp - libmtp is a library for accessing Media Transfer Protocol devices
devmapper-event devmapper-event - device-mapper event library
pciaccess pciaccess - Library providing generic access to the PCI bus and devices.
libsynce libsynce - A helper library for SynCE, a framework to sync WinCE devices
libavdevice libavdevice - FFmpeg device handling library
DeviceKit-disks DeviceKit-disks - DeviceKit-disks daemon
blkid blkid - Block device id library
devmapper devmapper - device-mapper library
libv4l2 libv4l2 - v4l2 device access library
hal-storage hal-storage - hal library for storage devices and volumes
libudev libudev - Library to access udev device information
vojta|vojta-dell ~ $> pkg-config --list-all | grep -i dvd
dvdread libdvdread - Low level DVD access library
dvdnavmini libdvdnavmini - DVD Navigation mini library
libdvdcss libdvdcss - DVD access and decryption library.
dvdnav libdvdnav - DVD Navigation library
vojta|vojta-dell ~ $>
Především ta prostřední skupina mi přijde zajímavá./sys/devices
.
Utilita tu už taky byla, jmenuje se sg_map
. Nová verze sg_map26 překvapivě funguje nad /sys
... Takže pokud nepoužíváš jádro 2.4...
Hovoříš o linuxu a máš něco proti souborům? Dobré ráno. V linuxu je všechno důležité soubor, a pokud ne soubor, tak alespoň virtuální filesystém. sysfs
je standardní rozhraní a má světlou budoucnost (TM).
V linuxu to takto prostě funguje, filesystém a soubory jsou rozhraní k jádru, zařízením a dalším věcem. Je to základní princip fungování, ne něco špatného či nevhodného. Není lepší způsob, protože sysfs není špatný způsob.
Pět minut je fakt málo.
find
někde na /proc nebo /sys, to je prostě blbost.
Tiskni
Sdílej: