Vývojáři svobodného 3D softwaru Blender představili (𝕏, Mastodon, Bluesky) nejnovějšího firemního sponzora Blenderu. Je ním společnost Anthropic stojící za AI Claude a úroveň sponzoringu je Patron, tj. minimálně 240 tisíc eur ročně. Anthropic oznámil sponzorství v tiskové zprávě Claude for Creative Work.
VNC server wayvnc pro Wayland kompozitory postavené nad wlroots - ne GNOME, KDE nebo Weston - byl vydán ve verzi 0.10.0. Vydána byla také verze 1.0.0 související knihovny neatvnc.
Bylo oznámeno vydání Fedora Linuxu 44. Ve finální verzi vychází šest oficiálních edic: Fedora Workstation a Fedora KDE Plasma Desktop pro desktopové, Fedora Server pro serverové, Fedora IoT pro internet věcí, Fedora Cloud pro cloudové nasazení a Fedora CoreOS pro ty, kteří preferují neměnné systémy. Vedle nich jsou k dispozici také další atomické desktopy, spiny a laby. Podrobný přehled novinek v samostatných článcích na stránkách
… více »David Malcolm se na blogu vývojářů Red Hatu rozepsal o vybraných novinkách v GCC 16, jež by mělo vyjít v nejbližších dnech. Vypíchnuta jsou vylepšení čitelnosti chybových zpráv v C++, aktualizovaný SARIF (Static Analysis Results Interchange Format) výstup a nová volba experimental-html v HTML výstupu.
Byla vydána verze R14.1.6 desktopového prostředí Trinity Desktop Environment (TDE, fork KDE 3.5, Wikipedie). Přehled novinek v poznámkách k vydání, podrobnosti v seznamu změn.
Jon Seager z Canonicalu včera na Ubuntu Community Hubu popsal budoucnost AI v Ubuntu. Dnes upřesnil: AI nástroje budou k dispozici jako Snap balíčky, vždy je může uživatel odinstalovat. Ve výchozím nastavení budou všechny AI nástroje používat lokální AI modely.
Nový ovladač Steam Controller jde do prodeje 4. května. Cena je 99 eur.
Greg Kroah-Hartman začal používat AI asistenta pojmenovaného gkh_clanker_t1000. V commitech se objevuje "Assisted-by: gkh_clanker_t1000". Na social.kernel.org publikoval jeho fotografii. Jedná se o Framework Desktop s AMD Ryzen AI Max a lokální LLM.
Ubuntu 26.10 bude Stonking Stingray (úžasný rejnok).
Webový prohlížeč Dillo (Wikipedie) byl vydán ve verzi 3.3.0. S experimentální podporou FLTK 1.4. S příkazem dilloc pro ovládání prohlížeče z příkazové řádky. Vývoj prohlížeče se přesunul z GitHubu na vlastní doménu dillo-browser.org (Git).
/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.
)), tak smůla.
A může mi někdo ještě osvětlit atribut O_EXCL u open(), když není uveden O_CREAT? V manuálové stránce se popisuje nedefinované chování, ale wodim/cdrecord ho tak používají.
Hledání CD-ROM mechanik a jejich vložení do seznamu má ve Windows verzi 34 řádků (počítám i řádky, které mají jen otevírací/uzavírací závorky {,}).
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: