Skip to content

This explains how to create your own Steam OS.

Notifications You must be signed in to change notification settings

TeslaKang/SteamOS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 

Repository files navigation

SteamOS

This explains how to create my own Steam OS


Install Linux


Install Arch linux + KDE DE.(We recommand using manjaro minimal version)
https://manjaro.org/download/



Create the downloaded ISO file into a USB disk by DD mode
We recommend the rufus program



Secure space for installation in Windows


After connecting the Linux installation USB to the PC, use the Del key or F2 key (different for each device) to enter BIOS and select the installation USB


When you boot, you will see the Manjaro Linux installation screen as shown below

Run Install Manjaro Linux to start the installer

When installing, be sure to set the language to English


Select region, then select keyboard

Now comes the most important part: deciding where to install it
If you make a mistake here, the existing Windows may be destroyed, so be careful

Select the disk to install from number 1
If you want to install by reducing the size of the existing partition without dividing the partition, select “Install alongside” from number 2, select the partition you want to install, and then adjust the size
If you previously secured a partition to install on, just select “Replace a partition” in number 3 and then select the partition you want to install on
You are an expert, I know a lot about partitions, and if you want to control things in more detail..
After selecting number 4, you can manually specify partitions
(For number 4, you must mount the / and /boot/efi partitions. Others are optional.)
Additionally, it is recommended that the file system be EXT4
In the case of BTRFS, the file system is often damaged during use, and even the slightest damage makes it unrecoverable

Set up a user account

The name must be deck
Please enter your password appropriately
And be sure to uncheck “Log in automatically without asking for the passwd
If you choose that, you will run into some problems because the files that handle that option are different during installation and when configuring KDE

It briefly shows the information to be installed

When you're ready, click Install to begin installation

manjaro asking again

Click Install now


Installation takes approximately 5-10 minutes

When finished, reboot

After re-entering BIOS..

Select Manjaro Linux and boot


When you enter the password you set during installation, Manjaro Linux will welcome you


The basic installation is now complete



# Configure Linux
Linux is now installed
Before installing Steam OS, you need to set up some basic settings
Run System Settings


Select Startup and Shutdown..

Select Behavior

Set the deck to automatically log in
Then select Open KDE Wallet Setting


Select Change Password, enter nothing for the password and press Ok
If you set a password here, you will be repeatedly asked for the password later


When you click Apply, you will be asked for a password. Enter the password you entered during installation


Click on the DOS window at the bottom to run konsole
Linux starts and ends with the console, so you should always be familiar with the console

If you are a Korean/Chinese/Japanese user, install the font by sudo pacman -S noto-fonts-cjk
When you first run the command, a warning (?) is displayed. Just ignore it and enter the password you entered during installation
Please note that the password input is not visible, so do not assume that it cannot be entered

An error occurs saying that the package information has not been updated
Type sudo pacman -Sy as described above
When it's all over..
Type sudo pacman -S noto-fonts-cjk again


This time... trying to update the Linux key
Press Y or just Enter

Now install the font
Just press Y or Enter


Now let's install discover
(Manjaro has its own package installer, but Steam OS and KDE mainly use discover.)
In the console, run sudo pacman -S discover.

If you go to Start -> System, you will see Discover
To commemorate the installation(?), let's run it

It runs well
For reference, if you right-click on the taskbar and select Pin to Task Manager, an icon will appear on the taskbar for convenient use later


Come back to the konsole..
sudo pacman -S cpupower ark bc onboard gcc jq to install
cpupower is a program that can set up the CPU, and ark is a program that processes compressed files
bc is a program that allows calculation(?) on the command line, and onboard is an on-screen (touch) keyboard
gcc is a compiler, and jq is a program needed to install decky-loader, which will be installed later


Now let's try updating the entire system
Just type sudo pacman -Syu

They seem to be installing quite a lot..
Just press y or enter to start installation
After installation is complete, reboot and you will have the latest version of Linux

When the screen lock is enabled on a UMPC without a keyboard, it is difficult to enter the password..
Try unlocking the screen

Launch Settings and select Workspace Behaviors

Unlock as above

Now try turning off Search (if it's on, it can find things in the background and use a lot of CPU)
If you disable it, a warning is displayed
Just ignore it and click Apply


Now let's install Chrome
Personally, I think Chrome is better than Firefox, which is installed by default
(People using Firefox can skip this.)
Chrome will be installed through flapak, so install it with sudo pacman -S flatpak in the konsole


Now run Discover and type chrome to search for Chrome
Just click install


If Chrome does not appear, it may be because the flatpak settings are incorrect
Click on Discover's settings, add dl.flathub.org to the flatpak address, and try again.Click on Discover's settings, add dl.flathub.org to the flatpak address, and try again

Just find Chrome in the Start menu and run it
Please note that if it is not on startup, it will appear after rebooting

Try deleting “Welcome to Manjaro” that appears when you run Manjaro Linux

You can remove it by running sudo pacman -R manjaro-hello

Also, since you installed Chrome, you don't need firefox either
You can delete it with sudo pacman -R firefox

When you enter the sudo command, you will be asked for your password
If this bothers you, you can disable it using the method below

In the konsole, type kate /etc/sudoers.d/deck


deck ALL=(root) NOPASSWD:ALL
Just enter , click Save, and enter your password
Now, when you run sudo commands in the console, you will no longer be asked for an annoying password

The basic settings are now complete

Dual booting made easy


You installed Linux, but if you want to boot into Linux, you have to go into the BIOS and select Linux every time
GPD Win 4 or Max 2, which have a keyboard, are fine, but for devices without a keyboard, you can only select the OS when the keyboard is connected through a USB hub
So let's try to solve it
Run the konsole

Go to the folder containing the kernel with cd /boot
Check which files exist with ls -l
The important files here are the kernel file starting with vmlinux and the initial RAM disk file starting with initramfs
In the case of Manjaro Linux, the version number is attached to the kernel
In my case..
linux 6.6 is vmlinuz-6.6-x86_64 / initramfs-6.6-x86_64.img
linux 6.7 is vmlinuz-6.7-x86_64 / initramfs-6.7-x86_64.img

Run sudo cat grub/grub.cfg.
A lot of content is printed..
If you move up with the mouse wheel..
You can see the file name in the /boot directory registered there
The important ones there are "/boot/vmlinuz-6.6-x86_64", "root=UUID=3b86ac23-ef58-4c54-b841-02d595eba78b", "/boot/initramfs-6.6-x86_64.img"
Also remember the UUID of the root volume, "a25f8b7d-c15a-4d9f-9d6a-4b6c98a4ecac"
Please note that UUID is a unique value given during installation, so they all have different values
Write down the three contents above in a notepad


The work on Linux is now complete

Boot into Windows
Download GameAssist
When you run the GameAssist, a rEFind tab that wasn't there before will appear
Modifying the bootloader may make your device unbootable
In other words, you must pay enough attention
However, the boot loader can be restored very easily, so if you have basic knowledge, there will be no major difficulties


First select the EFI partition
In most cases, there will be only one partition, so it will be selected automatically
Then click Refind Install to install
Refind will now be registered as a bootable item and you will be able to select it in BIOS


A gamepad driver is also installed so that it can be operated with a gamepad instead of keys. If necessary, ext2/3 drivers and ntfs drivers can also be installed
If you are not sure, you can leave it as default
Since most UMPCs have vertical LCDs, select the rotation portion appropriately and set it so that the OS selection screen appears correctly
If the screen is abnormal when booting, you can modify the resolution
The resolutions of 0, 1, 2, and 3 are different for each device, so you can set them after testing

The OS item detects the system and automatically creates Windows and Linux related items
For Windows, there is no need to configure anything differently, but for Linux, you need to enter the previous information to operate properly

The volume part is the file system delimiter where the kernel file is located
If you have only one Linux installed on your system, you can enter information such as the kernel name, loader
Write a name starting with vmlinuz in /boot
If you have installed more than one Linux, if the kernel name is the same, the correct file system cannot be found, so in that case, just write down the name or uuid of the partition
In my case, since I have 4 Linux installed on my system, I decided to use UUID
loader is where the kernel is located
Just enter the same information as in the volume section
initrd is the location of the initial ramdisk file
Just enter the file name starting with initramfs
options are options given to the kernel. Here, only root is required, others are optional
The GameAssist is created with the following contents
You can just roughly fix it there
options "root=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx rw rd.udev.log_priority=3 vt.global_cursor_default=0 fbcon=rotate:0"
In my case..
options "root=UUID=3b86ac23-ef58-4c54-b841-02d595eba78b rw rd.udev.log_priority=3 vt.global_cursor_default=0 iomem=relaxed fbcon=rotate:0"
graphics on
fbcon=rotate:0 is the rotation direction of the kernel message when booting
It is not very important, but if it is a vertical screen, it is good to correct it by inserting numbers such as 1, 2, and 3
Additionally, “iomem=relaxed amd_pstate=disable” was added
It's not that important, but I added it because there are some functions that won't work without that option
Also added "initrd=/boot/amd-ucode.img"
It is not required, but is a patch file related to CPU security updates
Now reboot
If you go into the BIOS and look at the boot item settings, you will see rEFInd for GameAssist, which was not visible
Select this


Now, when you reboot...

you will see an item where you can select Windows and Linux
(Unlike other loaders, you can select with the gamepad. For reference, the A key is selected.)
Try booting into Linux
If it doesn't work, reboot into Windows and correct the Refind item in the GameAssist
If you want to boot into Linux without going through Refind, select Manjaro in the BIOS and it will boot as before


Now, let's set up the refind configuration file in Linux so that you can easily edit it
Run the konsole

Type kate /etc/fstab.
If /boot/efi's permissions are set to 0077, it cannot be opened
So change to defaults


Please note that whenever you modify a system-related file, you will be asked for a password

Try rebooting

Run the konsole again
Run kate /boot/efi/EFI/refind/game_assist.conf

You can see that the content you saw in the GameAssist is exactly the same
In other words, you can modify refind settings in Linux as well
Multi-booting is now complete!!

Install gamescope-session


Basic Linux tasks are now complete
Let’s start by installing Steam OS-related files on Linux

First, install steam, gamescope, mangohud, etc. as explained in the overview
Run konson
Type sudo pacman -S steam gamescope-plus mangohud glfw-x11
Once installation is complete, Steam will be registered

Launch Steam


Working hard on downloading~~
Let sit until done


If it comes out like this, it is a success
Press X to exit

Now you just need to install the actual Steam OS.
After moving to the Documents folder(by cd ~/Documents) in the konsole.
Enter git clone https://github.com/TeslaKang/gamescope-session.git

Check the contents with ls -l


Install with ./install.sh
It's easy to install.


If you look at your desktop, you'll see a Steam icon and an icon for Game Mode
When you run Return to Gaming mode, you will be taken to Steam OS

If you don't go into game mode, it's because auto login is set to Plasma
After executing kate /etc/sddm.conf in konsole
Just delete all contents of [Autologin]
If you select automatic login during installation or set automatic login in the environment settings, the value will be registered and you will not be able to switch to game mode

Now run Return to Gaming mode and check if it works properly


Enter the language/time zone/account to enter Steam OS
Now it is the same as Steam Deck, so you can use it like Steam Deck


Try changing the desktop start icon to Steam Deck
Press Menu, select Power, and then select Desktop to switch to the desktop
Right-click on the Start icon and select "Configure Application Launcher..."
Click the icon and select “Choose”


There are so many icons that it is difficult to find them, so type "dis" and select the Steam Deck start icon


Changed to Steam Deck start icon

Now my device is a Steam Deck.

Just use it diligently.

Make custom key/power key work


​The Steam OS is now installed
However, the UMPC custom key or power key does not work, making actual use a bit difficult
Let's solve this
Expert have already created a solution, so all you have to do is install it

The related program is HandyGCCS
However, after using HandyGCCS for a few months, it is fine for regular use, but when using it in hibernation mode, there is an issue where the controller stops working after hibernating 10-20 times
Also, it cannot handle cover events from devices with covers like GPD Win Max2 or GPD Win Mini
A thirsty person digs a well, so I created something called HandyGCCS++
The basic HandyGCCS source is in Python, and each function is made into a module, making it difficult to manage, so I made it into just one file in C++
After using it for about a month, there seemed to be no major problems, so we recommend that future users use HandyGCCS++

First, go to https://github.com/TeslaKang/HandyGCCS and take a look
If the device is not there, it is difficult to actually use it, so you can either wait for it to be added or download HandyGCCS++ and add it yourself

First, launch the konsole
Type cd Documents to move to the documents folder(It is convenient to use the tab key after entering only one or two characters, so get used to using the tab key~~)
git clone https://github.com/TeslaKang/HandyGCCS.git
Type cd HandyGCCS


Launch ./stop.sh to stop previously running services
For install sudo ./install.sh
For launch sudo ./start.sh


To know if it's currently running well
You can find out by running ./log.sh


If you want to change the settings for the key
After stopping the service with ./stop.sh
kate /etc/handygccs/handygccs.conf

Just restart the service with ./start.sh

Install GameAssist for Steam OS


Although Steam itself has a TDP or GPU clock setting function, it is tailored to the Steam deck, so it is lacking in other high-end UMPCs
Let's solve this using the Game Assistant for Steam OS
GameAssist for Steam OS was implemented through decky-loader
So, you need to install decky-loader first
First, go to https://github.com/SteamDeckHomebrew/decky-loader and take a look
Installation is "curl -L https://github.com/SteamDeckHomebrew/decky-installer/releases/latest/download/install_release.sh | sh​"
Now run the konsole
In the konsole, type "curl -L https://github.com/SteamDeckHomebrew/decky-installer/releases/latest/download/install_release.sh | sh"

Ugh... I can't install it because I don't have JQ
Try installing JQ
Enter sudo pacman -S jq to install JQ

If JQ installation is successful, enter the decky loader installation command
For reference, you can use the previous command by pressing the up arrow key

It takes a little time, but it installs well

Now let's install GameAssist
In the konsole, navigate to the Documents folder with cd ~/Documents
git clone https://github.com/TeslaKang/GameAssistSteamOS
Go to the folder with cd GameAssistSteamOS
Check the contents with ls -l

It should come out like above
Just enter ./depoly.sh to install

Now select “Return to Gaming mode” on the desktop to switch to gaming mode

If you look at the QAM menu (if you don't have the QAM key, press Menu(Guide) + A), there is a plug icon that wasn't there before
If you click on it, you will see GameAssist


Select Setting/Manager Items


Please note that each item in the GameAssist can be edited/added/deleted by the user
In other words, you can configure it and use it as you wish


In the case of AyaNeo Air, if you want to make the TDP a little finer
Go to Item Management, select CPU Package Power, and then select Edit


Set the step value to 0.5 and select OK


Package power can be set in 0.5W increments


There is also a function to change the settings of HandyGCCS


GameAssist has tried to include the basic features found in the SteamDeck whenever possible
However, there may be bugs, and it was my first time using Python or React, the languages ​​used in the decky loader plugin, so there was a lot of trial and error, and there may be many shortcomings
It would be much better if an expert refined this part later

Please note that GameAssist for Steam OS does not work on Steam Deck.

Activating hibernation mode


This is how to enable hibernation in Linux, which is necessary for the ultimate goal of running games between Windows and Steam OS without interruption
Run the konsole
Type cd /home
Enter sudo fallocate -l 16G swapfile(16G is your memory size. For users with 32G or more, 32G is too waste, so enter about 22G.)
sudo chmod 0600 swapfile
sudo mkswap swapfile
sudo swapon swapfile
Type kate /etc/fstab


/home/swapfile none swap defaults 0 0
Enter the above content at the end of the file and press Save
Then enter the password


Run sudo systemctl edit --full systemd-logind


Change the ProtectHome value to read-only about halfway through and press Ctrl+X to save and exit


Run kate /etc/mkinitcpio.conf in the console again
The original HOOKS had a # in front of them
Remove base and udev and add systemd
That is, it goes like this:
HOOKS="systemd autodetect modconf block keyboard keymap consolefont plymouth filesystems"
(Previously, it was processed by adding resume, but if you use systemd, resume is no longer needed)
Save


If you type sudo mkinitcpio -p linux in the konsole and then press the TAB key, the configuration file in the system will be automatically entered
(In the case of Manjaro Linux, it follows the rules of linux61, linux66, linux67, etc.)


You can see that it is well made as set up.
If you use HOOKS="systemd ..." described above and only one Linux is installed on the device
There is no need to input uuid and offset as described below
If you use the old method or more than one of Linux, you must enter uuid and offset in the kernel boot command as follows for it to work properly
Now it is time to find the uuid and offset of the swap file
Run sudo findmnt -no UUID -T /home/swapfile in the konsole
In my case "a25f8b7d-c15a-4d9f-9d6a-4b6c98a4ecac"


Run sudo filefrag -v /home/swapfile
Since a lot of content is output, move to the beginning with the mouse wheel and remember the red numbers
In my case 3055616


Now it is time to register in kernel options
Run kate /boot/efi/EFI/refind/game_assist.conf


In the Refind settings file of the previously registered GameAssis
Add resume=UUID=xxxxx resume_offset=yyyy
Please note that xxxxx and yyyy vary from person to person
Save it

Reboot
When you click the Start menu
Hibernation is now available
Just test to see if it works



There are some things to keep in mind when using hibernation mode
First, hibernation saves the current state of the OS to the SSD
So, after another OS accesses the disk saved in hibernation mode and writes files to it, when it wakes up from hibernation mode, the disk is logically broken because it is not aware of any changes to the disk
In the case of NTFS or EXT4, they are slightly damaged and can be recovered, but BTRFS becomes unrecoverable, so if you use hibernation, you should not use BTRFS
In other words, if possible, write operations should not be performed in areas used by each other
However, because MicroSD can be removed midway, it is safe to use in hibernation mode
In other words, the best way is to share all data through MicroSD if possible
Linux also has a function to determine whether Windows has exited hibernation mode
So, Windows goes into hibernation mode first, and when Linux boots, the Windows partition is mounted as read-only and cannot be written to, so it operates safely(?)
However, if Windows just shuts down and boots into Linux, Linux mounts the Windows partition as writable
In this state, exit Linux into hibernation mode, boot into Windows, and then exit Windows into hibernation mode again
When you wake up from hibernation with Linux, Linux cannot determine whether Windows has exited hibernation mode and is writable, so modifying files on the Windows partition will damage the Windows partition
Therefore, if you use hibernate mode, you should avoid writing to each other between the Windows and Linux partitions if possible
Please be careful!!

About

This explains how to create your own Steam OS.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published