this post was submitted on 25 Nov 2023
79 points (91.6% liked)

Linux

48311 readers
908 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS
 

I currently use Windows 10 and I’d like to try out Linux. My plan is to set up a dual boot with OpenSUSE tumbleweed and KDE Plasma. I’ve read so many different opinions about choosing a distro, compatibility with gaming and Nvidia drivers, and personal issues with the ethos of different companies like Canonical. I value privacy and I’d rather avoid a Linux distro that’s implementing something like ads or telemetry…if that’s even a thing that’s happening?

As a complete beginner, what sort of advice would you all have for me? Should I avoid OpenSUSE or KDE Plasma for some reason? Are there any ‘10 things to do first when installing Linux for the first time’ recommendations?

Despite all the ‘beginner friendly’ guides and tutorials around, I still feel a little lost and like I’m going into this blind.

EDIT: Thanks to everyone who's offered advice, I really appreciate all the help and the patience with my dumb questions! There's a lot to look through and it's been a busy day for me, but I'll get back to reading through everything and replying as soon as I can!

you are viewing a single comment's thread
view the rest of the comments
[–] d3Xt3r@lemmy.nz 2 points 1 year ago* (last edited 1 year ago)

None of the comments here explain how WINE works, so allow me to elaborate a bit.

WINE is like a translator or a compatibility layer. When a Windows program tries to perform a function that would normally require Windows, WINE steps in and translates that request into something the Linux system can understand and process.

As you may know, Windows programs work by making API calls (eg using Win32 APIs) to operate and perform basic tasks. WINE takes these API calls and translates them to their Linux equivalents (POSIX calls, to be specific, which means Wine can run on several Unix-like systems). This way, when a program asks to say, open a file, or display something on the screen, WINE converts these requests into a form that Linux can execute.

WINE's approach is about providing compatibility for user-level applications rather than replicating the internal workings of the Windows kernel. It includes various libraries and components that mimic the behavior of those in Windows. This helps in executing the Windows applications as if they are running in their native environment.

  • The core of it is NTDLL. NTDLL.dll is a core Windows library that provides low-level system functions to interact with the Windows NT kernel. In WINE, ntdll.dll is adapted to work with the Linux kernel instead.

  • Then you have the Win32 API libraries, providing the basic APIs that Windows applications use for functions like window management, text rendering, and system calls. Examples include user32.dll (for user-interface functions), gdi32.dll (for graphics device interface functions), and kernel32.dll (for basic system functions).

  • Shell32.dll for handling Windows Shell API functions related to file operations and the user interface.

  • DirectX Support, for running games and multimedia applications. WINE implements parts of DirectX, like Direct3D for 3D graphics, DirectDraw for 2D graphics, and DirectSound for sound processing. Note that WINE's implementation converse Direct3D calls to OpenGL, whereas there are community projects like DXVK and VKD3D which translates these calls to Vulkan.

  • Finally there's a Registry Implementation, so that applications that need to read or write to the registry can function correctly.

Of course, there's a LOT more to it, the above is just an example of some key components. Basically Wine has reimplemented (coded from scratch) various libraries and executables that, on the outside, look like standard Windows dlls/exes, but internally they use POSIX APIs to talk to the Linux kernel and other POSIX components. This, along with the Syscall translations, bridges the gap between Windows programs and Linux.

Now naturally, this is neither a perfect, nor a complete implementation of Windows APIs; plus there are some things which Wine will never implement (such as ntoskrnl.exe), so not every program will work as expected - so check out the Wine AppDB for compatibility reports with various Windows apps.