predator-os source-code book
predator-os-advance-guide-book, Included all source code descriptions
Predator-OS Linux
Soure code
Advance Edition
Polymorphic Security Platform
A security-centric
Free open-source Linux
Penetration testing and Ethical hacking and you can use it as:
Privacy, hardened, secure, anonymized
(2024)
Preface
It was developed in 2021, by Hossein Seilani who is also the developer of https://emperor-os.ir/ Linux too. The Predator-OS is a free open-source community project, Free (as in freedom). The distro is for penetration testing and ethical hacking and also privacy, hardened, secure, anonymized Linux. Predator Linux is based on Debian, kernel 6.6 LTS and 6.1 LTS and using a fully customized plasma desktop with a special menu of tools.
Predator Linux has around 1300 pre-installed tools, which are split into 40 several categories. Predator Tools are imported from both Debian and Debian stable repositories and GitHub page. Most kernel and user configs are customized by default to prevent any hacking, non-privileged access and reduce the attack surface. Many built-in firewalls and defensive tools allow end-users to control the Predator-OS. Predator also supports much privacy, anonymized, security tools, and also both it to be run as Live-CD or from a USB Drive and installation mode.
Details
OS Type: Linux
Based on: Debian Stable
Kernel: 6.6
Origin: Emperor-os Team , Iran
Desktop: Plasma
Other Desktop: as soon as possible
Category: penetration testing, security, privacy, Forensics, Live Medium, hardened, anonymized
Downloading a Predator-OS ISO Image
https://www.seilany.ir/predator-os/download/Predator-OS-v3.1-amd64-26-06-2024.iso
Contents
1.
Preface 3
Details 4
Downloading a Predator-OS ISO Image 4
1. Why this book? 16
2. What is Predator-OS? 17
3. Why Predator-OS Linux? 18
4. Why Predator-OS is different? 19
5. New features Included in Predator-OS v3.1 20
6. Improving performance and tuned kernel level and user levels 29
7. Operates at 9 different modes: 30
8. History 32
9. Based on Debian stable 20.04.3 LTS mini 33
10. Number of tools 33
11. Kernel custom 34
12. Improving performance and tuned kernel level and user levels: 35
13. The Predator-OS Developers 36
14. Predator-OS News: 36
15. Hardware requirements 37
16. Full compatibility on live system 37
17. GRUB boot menu 40
/etc/default/grub 40
What GRUB Does? 40
What /etc/default/grub Contains: 40
How it Works: 40
18. Predator-os Source code of grub 41
19. GRUB_CMDLINE_LINUX_DEFAULT 44
20. /boot/grub/grub.cfg 46
Key Points about /boot/grub/grub.cfg: 46
21. Grub boot menuentry source code 47
Grub menu Structure of predator-os grub: 48
22. GRUB live files 50
Booting a Live System with GRUB: 50
GRUB Configuration for Live Systems: 50
23. plymouth 53
What is Plymouth? 53
What's inside the directory? 53
Plymouth source code 54
24. Predator-os Themes 57
25. .bashrc 57
Benefits of using .bashrc: 57
1. HISTCONTROL=ignoreboth 58
2. shopt -s histappend 58
3. HISTSIZE=100 58
4. HISTFILESIZE=200 58
5. shopt -s checkwinsize 58
26. Bashrc Source code 59
27. Custome predator-os alias 59
Adding Aliases to Bash Profile: 60
28. Predator-os Prompt Configuration (PS1): 61
29. Less Terminal Colors (LESS_TERMCAP variables): 61
3. Bash Shell Configuration (export and bind): 62
30. NVIDIA Optimus Configuration (likely for laptops): 62
31. Etc configs 63
32. Aida 64
Benefits of using AIDE: 64
/etc/aida/aida.conf 65
33. Apt 65
1. /etc/apt: 65
2. /var/lib/apt: 66
34. /etc/apt/sources.list.d/predator-os.list 66
35. Calamares installer 66
/etc/calamares/settings 66
36. Chrootkit 67
1. RUN_DAILY=“true” 68
2. RUN_DAILY_OPTS=““ 68
3. DIFF_MODE=“true” 68
4. MAILTO=“root” 68
5. IGNORE_FILE=“/etc/chkrootkit/chkrootkit.ignore” 68
37. Initramfs 69
What is an initramfs? 69
What does MODULES=most mean? 69
38. Hdparam 69
39. Login settings 72
40. Log files 73
Why is logrotate important? 73
What does /etc/logrotate.conf specify? 73
Benefits of using /etc/logrotate.conf: 74
41. Shell 74
42. predator-os theme: 75
Predator-os theme Location: 75
43. Xorriso in predator-os 76
44. Mksquashfs in predator-os 78
45. Kernel parameters 80
46. General System Performance: 80
kernel.timer_freq 80
vm.dirty_background_ratio 80
vm.dirty_ratio 80
vm.swappiness 80
vm.vfs_cache_pressure 80
47. Networking: 80
net.ipv4.tcp_window_scaling 80
net.ipv4.tcp_tw_reuse 80
net.core.rmem_max 80
net.core.wmem_max 80
net.core.netdev_max_backlog 80
net.ipv4.tcp_rmem 80
net.ipv4.tcp_wmem 80
net.core.default_qdisc 80
net.ipv4.tcp_congestion_control 80
net.core.rmem_default 80
net.core.wmem_default 80
net.ipv6.conf.all.disable_ipv6 (if set to 1, disables IPv6) 80
net.ipv4.route.flush 80
net.ipv4.route.max_size 80
net.ipv4.route.gc_timeout 80
net.ipv4.conf.all.forwarding (controls IP forwarding) 80
net.ipv4.conf.all.rp_filter 80
net.ipv4.route.min_adv_mss 80
net.ipv4.tcp_low_latency 80
net.ipv4.tcp_early_retrans 80
net.ipv4.tcp_mtu_probing 80
net.ipv4.tcp_slow_start_after_idle 80
net.core.wmem_max 80
net.core.rmem_default 80
net.core.wmem_default 80
net.ipv4.icmp_echo_ignore_all (disables responding to ICMP echo requests) 80
net.ipv4.icmp_echo_ignore_broadcasts (ignores ICMP echo broadcasts) 80
net.ipv4.tcp_syncookies (enables SYN cookies for DoS attack prevention) 80
net.ipv4.conf.all.log_martians (logs suspicious packets) 80
net.ipv4.tcp_max_syn_backlog 80
net.ipv4.tcp_synack_retries 80
net.ipv4.tcp_syn_retries 80
net.core.busy_poll 81
net.core.busy_read 81
net.ipv4.tcp_rfc1337 81
net.ipv4.tcp_timestamps 81
net.ipv6.conf.all.forwarding (controls IPv6 forwarding) 81
48. Memory Management: 81
vm.overcommit_memory 81
fs.aio-max-nr 81
vm.dirty_background_bytes 81
vm.dirty_bytes 81
vm.max_map_count 81
kernel.msgmax 81
kernel.msgmnb 81
kernel.shmmax 81
kernel.shmall 81
vm.compact_memory 81
vm.drop_caches 81
vm.min_free_kbytes 81
vm.mmap_rnd_bits 81
vm.mmap_rnd_compat_bits 81
49. Security: 81
kernel.printk (controls kernel message logging) 81
kernel.softlockup_panic 81
kernel.panic_on_oops 81
kernel.panic 81
kernel.unknown_nmi_panic 81
kernel.watchdog_thresh 81
net.ipv4.conf.all.accept_redirects (disables accepting redirects) 81
net.ipv4.conf.default.accept_redirects (disables accepting redirects) 81
net.ipv4.conf.all.secure_redirects (disables secure redirects) 81
net.ipv4.conf.default.secure_redirects (disables secure redirects) 81
net.ipv6.conf.all.accept_redirects (disables accepting redirects) 81
net.ipv6.conf.default.accept_redirects (disables accepting redirects) 81
net.ipv4.conf.all.send_redirects (disables sending redirects) 81
net.ipv4.icmp_echo_ignore_all (disables responding to ICMP echo requests) 81
net.ipv4.icmp_echo_ignore_broadcasts (ignores ICMP echo broadcasts) 81
vm.dirty_expire_centisecs (sets the time to wait before writing dirty pages) 81
vm.dirty_writeback_centisecs (sets the interval for writing dirty pages) 81
net.ipv4.tcp_syncookies (enables SYN cookies for DoS attack prevention) 81
net.ipv4.conf.all.log_martians (logs suspicious packets) 81
net.ipv4.tcp_max_syn_backlog (maximum number of queued SYN packets) 81
net.ipv4.tcp_synack_retries (number of retries for SYN-ACK packets) 81
net.ipv4.tcp_syn_retries (number of retries for SYN packets) 81
fs.protected_symlinks (protects symbolic links from deletion) 82
fs.protected_hardlinks (protects hard links from deletion) 82
fs.protected_fifos (protects FIFOs from deletion) 82
fs.protected_regular (protects regular files from deletion) 82
fs.suid_dumpable (disables core dumping for SUID files) 82
net.ipv4.conf.default.log_martians (logs suspicious packets on the default interface) 82
net.ipv4.icmp_ignore_bogus_error_responses (ignores bogus ICMP error responses) 82
net.ipv6.conf.all.accept_ra (disables accepting Router Advertisements) 82
net.ipv6.conf.default.accept_ra (disables accepting Router Advertisements) 82
net.ipv6.conf.all.use_tempaddr (controls the use of temporary IPv6 addresses) 82
net.ipv6.conf.default.use_tempaddr (controls the use of temporary IPv6 addresses) 82
fs.pipe-max-size (sets the maximum size of pipes) 82
kernel.unprivileged_bpf_disabled (disables unprivileged eBPF access) 82
net.core.bpf_jit_harden (enables BPF JIT hardening) 82
dev.tty.ldisc_autoload (disables automatic loading of line disciplines) 82
vm.unprivileged_userfaultfd (disables unprivileged userfaultfd) 82
kernel.kexec_load_disabled (disables kexec loading) 82
50. Other: 82
net.core.busy_poll (tuning for busy-polling) 82
net.core.busy_read (tuning for busy-reading) 82
net.ipv4.tcp_rfc1337 (enables TCP timestamps) 82
net.ipv4.tcp_timestamps (controls TCP timestamps) 82
net.ipv6.conf.all.forwarding (controls IPv6 forwarding) 82
kernel.core_pattern (sets the pattern for core dumps) 82
51. Kernel Self Protection (KSPP): 82
kernel.kptr_restrict (restricts kernel address exposure) 82
kernel.dmesg_restrict (restricts kernel memory address exposure via dmesg) 82
kernel.perf_event_paranoid (controls access to performance events) 82
kernel.kexec_load_disabled (disables kexec loading) 82
kernel.yama.ptrace_scope (restricts ptrace capabilities) 82
user.max_user_namespaces (disables User Namespaces) 82
kernel.unprivileged_bpf_disabled (disables unprivileged eBPF access) 82
net.core.bpf_jit_harden (enables BPF JIT hardening) 82
52. Networking: 82
net.ipv4.conf.all.send_redirects (disables sending redirects) 82
net.ipv6.conf.all.forwarding (disables IPv6 forwarding) 82
53. Memory Management: 82
vm.mmap_rnd_bits (adds randomness to userspace ASLR) 82
54. Description of kernel parameters 84
Security Kernel Parameters: 91
Kernel Self Protection (KSPP) Parameters: 96
55. Kernel configuration 99
56. predator-os kernel configuration 99
57. Description of kernel configuration 100
58. Debian sourcelist 103
59. ##Debian 12.5 bookworm version 105
60. palsma desktop menu 105
1. Kickoff Application Launcher: 105
2. System Settings and Power Menu: 106
3. KDE Global Menu: 106
4. Virtual Desktops: 106
5. Widgets and Panels: 106
61. Predator-os menu source code 106
62. Included the collection of bootloaders (PXE network bootloader) 107
Syslinux offers different bootloaders depending on the situation: 107
63. fix boot the Grub in dual boot installation 107
64. Increased d-bus message bus size 108
D-Bus and Message Bus Size: 108
Why Increase the Message Bus Size? 109
Potential Downsides: 109
Changing the D-Bus Message Bus Size: 109
65. Changed the password authentication configuration algorithm 110
1. Password Hashing Algorithm: 110
2. Password Shadowing: 110
3. 'use_authtok' Option: 110
66. Changed the password aging policies 111
Modifying /etc/login.defs: 111
67. Changed the history length policies 111
Limited Shell History: 112
Limited History File Size: 112
68. Disabled access time updates 112
Benefits of Disabling Access Time Updates: 112
Downsides of Disabling Access Time Updates: 113
69. Enabled hardware acceleration 113
Hardware Acceleration: 113
Configuration Sections: 113
Options for Acceleration and Rendering: 114
70. Bluetooth Performance tuning 114
General Power Management: 115
Connection Management: 115
Performance and Quality: 115
Advanced Options: 116
Important Considerations: 116
71. shell performance tuning 117
Shell Features: 117
Shell Behavior: 117
Shell Performance: 118
Overall, these shell performance tuning options can enhance your terminal experience by: 118
72. Block devices performance tuning 118
DMA (Direct Memory Access) Enablement: 118
Read-Ahead Buffer Size: 119
I/O Scheduler: 119
Log Compression: 119
Important Considerations: 119
73. Disabled IRQ balancing for the Ethernet device 120
74. Included plasma performance setting 121
Font Rendering: 121
Plasma Performance Settings: 121
Adjusting Font Rendering Settings: 121
Benefits of Optimization: 122
Important Considerations: 122
75. Disabled all the power option plan 122
Reasons for Disabling Power Saving: 123
Downsides of Disabling Power Saving: 123
76. Included nekoray proxy tools 124
Nekoray - A Proxy Manager: 124
77. Included hiddify proxy tools 124
Hiddify - Proxy and Anti-Filtering Solution 124
78. Configured Tor and Proxychains for anonymous browsing 125
79. Configured i2p Invisible Internet Project 126
80. New alias to get downloading in the fastest way possible 127
81. Increased Udev buffer 128
Udev and Device Events: 128
Udev Buffer and Performance: 129
Benefits of Increasing Buffer Size: 129
Things to Consider: 129
Alternative Approaches: 129
82. Disable GPS (Global Positioning System) 130
Disabling GPS for Privacy: 130
Benefits of Disabling GPS: 130
Downsides of Disabling GPS: 130
GPS Daemon Sockets: 130
Understanding Sockets Doesn't Affect Disabling GPS: 131
83. Disabled the automatic loading of specific kernel modules 131
Disabled Modules List: 132
Reasons for Disabling Automatic Loading: 132
Potential Downsides: 132
84. Predator-os hardening and security config 133
85. Predator-os hardening and security config 135
86. Further Security Enhancements: 136
87. Further Security Enhancements: 137
88. Social Medias 139
Telegram 139
GitHub 139
Youtube 139
Email 139
Linkedin 139
pinterest 139
Emperor-OS 140
Little-Psycho 140
Hubuntu 140
Artystone 140
Why this book?
Predator-OS Linux is not built to be a simple set of tools, but rather a flexible, Polymorphic security platform that professional penetration testers, security enthusiasts, students, and amateurs can customize to suit their specific needs. Also, the Linux Predator-OS is not just a collection of various information security tools pre-configured to prepare you. To get the most out of Predator, it is important to have a solid understanding of Linux and how to use them in your environment.
Although, Predator-OS is multipurpose and works in 10 different security modes. But it is primarily designed to help with penetration testing. Also, this book is not only to help you when using Linux Predator-OS, but also to improve your understanding and simplify your experience so that when you are involved in a penetration test. You don’t have to worry about losing precious minutes to install new software or new settings or activate a new network service. In this book, first you will be introduced to Linux, then you will get to know Predator-OS in more detail.
This book will help to better understand this operating system and is intended to help both beginners and professional Linux users, as well as users who are looking to deepen their knowledge about security settings. In addition, this book can be used as a road map, or a training reference on Linux operating system configuration and security settings.
This book is designed so that you can focus on Linux Predator right from the start.
What is Predator-OS?
Predator is a GNU/Linux distribution. It is based on Debian stable. It is a complete operating system for Cybersecurity users and environments. Including software and systems for installation and management all based on the Linux kernel and free software. When I created Predator-OS, in 2021, I sought to have two principal features. First, performance and more security. It would also be a non-commercial distribution. I focused on the predator to be a polymorphic security platform for beginners and professional users and for academics and universities.
Remember that hackers are big people. Those who create valuable things and build the world. On the other side, there are crackers who only lose money. We have a lot of respect for real hackers. Those who usually hide in the shadows and whose names are rarely heard.
Predator-OS is a good choice for those who love security. This distribution has a great advantage over its competitors and has an easy and attractive user interface. Even if you are not familiar with Linux, you will feel good about this distribution.
He is well-versed in the philosophy of open source and has applied this point in his development process. There are many open-source tools in this operating system for database analysis. Wireshark provides network packet analysis tools for analyzing information in networks, Bluetooth, wireless networks, databases, forensics, and more. Predator has been in development since 2021. This operating system supports a 64-bit platform. You can test Predator before installing it on live. It uses the PLASMA desktop by default and is released under the GPL general license.
Why Predator-OS Linux?
You install Kali Linux; but after installing it, you realize that it is hardly usable. Despite the advanced Kali kernel, the network cards and mouse don’t work well after installation, and the heavy NVIDIA graphics card and GPU lack properly installed drivers. In Kali Live mode, it indicates that these advanced drivers have not reached the core yet.
This is especially true for those who are drawn to the security field, whether it is a hobby, a hobby, or a line of work.
By observing these problems among users, we realized that we could guide users into the world of security by creating a more structured and user-friendly Linux distribution. Helping our community while simplifying all the complexities of Linux.
Predator-OS Linux provide a polymorphic security platform for systems and network administrators, security experts, digital forensics operations and cybersecurity engineers. It was focused on Pentesting, Ethical Hacking, Secure, Privacy, Hardened and Anonymized Linux.
The Predator-OS is available in edition security now. With other editions such as Desktop, IOT, mobile, Virtual machine, Raspberry Pi and Docker being released soon.
The default Desktop is PLASMA but the other Desktops such as KDE plasma, Mate, Gnome will be released soon.
The system is designed to be familiar for the security expert and is easy to use for the new entry student; but it does not try to hide its internals, as other general-purpose distributions try to do.
Why Predator-OS is different?
The Predator-OS Linux has its own unique features, which you can see 100 features on the site, and it also has features compared to security distributions, including:
1) Easy installation and better hardware support than Kali distribution
2) Suitable for newbies users and useful for general work compared to Parrot and Kali distribution
3) Included all Parrot Linux tools
4) Lighter and lower download file size despite the tools More than the Black Arch distribution
5) Ability to boot live and also installation, compared to the deft Linux despite having all the tools of this distribution
6) included the feature of booting in text mode and having CLI tools such as the dracOS distribution that It lacks graphical tools.
7) Covers all Bugtraq Linux tools
8) Included More web penetration testing tools than Samurai Linux
9) Included more tools than BackBox Linux
10) Included all Pentoo Linux tools
11) Included specialized PC crime detection tools and the ability to run Windows tools in Linux, such as deft and CAINE Linux
12) Included Kodachi Linux features in the field of privacy and anonymity
13) Included secure and privacy features of Discreete Linux
14) Included all Santoku Linux tools in the field of Mobile pentesting
15) Included the Whonix distribution features for more security
16) Included all Attifyos Linux tools in the field of IoT penetration testing and even more with user-friendly interface
17) Included all stressLinux tools in the field of stress testing and more
18) Included the Features of anonymity on the web such as IprediaOS distribution
19) Cover many of the tools of the following site: insecure.org
New features Included in Predator-OS v3.1
Included to more than 2 TB password list.
Included to more than 500 lists of the red and blue team tools.
Included to more than 200 lists of AWS-cloud tools.
Included to more than 10 sets of roadmaps in cybersecurity
Included to more than 100 search engines in security and penetration testing
Included to more than 300 educational scripts in security and penetration testing
Included to more than 100 security training websites and penetration testing for kids.
Included to more than 10 tools for running cybersecurity lab and penetration testing
Included to more than 40 websites for running a lab in cybersecurity testing.
Included to the source of 800 Malware files in 80 different groups (400 MB file)
Included to 1000 websites for OSINT.
Included to more than 70 online and self-reading websites in cybersecurity.
Included to more than 11 offline and self-study training categories in cybersecurity.
Included to 600 forensic and reverse engineering tools.
Included to more than 6000 Google dorks and exploits as offline
More details:
1)Included to more than 2 TB password list.
Included to more than 500 lists of the red and blue team tools
Included to more than 200 lists of AWS-cloud tools
Included to more than 10 sets of roadmaps in cybersecurity
Included to more than 100 search engines in security and penetration testing
Included to more than 300 educational scripts in security and penetration testing.
Included to more than 100 security training websites and penetration testing for kids.
Included to more than 10 tools for running cybersecurity lab and penetration testing
Included to the source of 800 Malware files in 80 different groups (500 MB file)
Included to 1000 websites for OSINT.
Included to more than 70 online and self-reading websites in cybersecurity.
Included to 600 forensic and reverse engineering tools.
Included to more than 6000 Google dorks and exploits as offline
Improving performance and tuned kernel level and user levels
1) In order to improve the performance of the CPU frequency range has been changed intel_pstate to acpi-cpufreq by default.
2) The BIOS frequency limitation has been disabled by default in order to improve the performance of the CPU frequency range,
3)In order to improve the performance of the hard disk and boot time, the watchdog has been disabled by default.
4) Improving the performance of the hard disk by changing the I/O scheduler for SATA, HDD, and NVMe disks.
5) Improved CPU performance by changing the default kernel scheduler to a Linux-zen kernel.
6) Improving network and Internet performance by changing the Bottleneck Bandwidth and Round-trip propagation time (BBR).
7) Improved RAM memory function by changing the randomize_va_space status.
8) Improved virtual memory performance by replacing zswap instead of swap by default.
9) The hardware threads (physical CPU) for each CPU core have been enabled.
10) Improving the paralleling of tasks by allowing independent tasks (running threads) by sharing some processor resources.
11) Changed power saving mode to performance mode by default, In order to improve the performance of the disk and network IO.
12) All CPU governor frequency has switched in performance.
13) Reducing kernel log-level reports to a low level in order to improve kernel performance and increase security and create silent boot mode.
14) and also, improving TCP performance, increasing inode cache memory, disk cache, improving network and bandwidth parameters, etc.
Operates at 9 different modes:
The Predator-OS has 9 different modes and operates at the following modes for easy and faster access to all tools and it also is possible to change Linux Predator at: defensive, offensive, privacy, hardened, secured, settings and pretesting modes quickly.
History
Predator-OS Linux started in 2021, initially it was supposed to be a privacy and anonymous Linux. It was due to the many problems users reported in the use of other Linux distributions in the field of security and the stopping of many distributions, this distribution was created.
At first, it was decided to make Predator-OS based on Debian. But due to having pre-installed security tools; as well as Debian being a rolling release, the distribution would have many updates and upgrades. And for this issue, I created the distribution in the fix release, so that updates can be done periodically. The best option for Debian stable distribution was the LTS version, which is known for its quality, stability, and wide selection of available software.
The first version of Predator-OS (version 1.0) was released nine months later after some issues and was based on the Debian stable Mini 18.04 at the time. In that first year of development, the focus was on security, privacy, anonymous distribution along with penetration testing tools.
After version 1.0, Predator-OS releases an update annually with new features and improved hardware support. I considered the PLASMA desktop for it because of its simplicity and speed, as well as better customization than other desktops.
In version 2 of the Predator-OS distribution, about 25 new features were released that switched from Debian stable 18.04 to 20.04.
In version 2 many things were considered, both in distribution optimization, turning, and tools.
I was trying to create a distribution with the best performance in several working modes in the field of security, which can cover all cases according to the extent of security. Finally, I created mods for the Predator-OS and it now works in 9 modes.
In version 2.5 of this distribution, it was released with 50 modifications and new features. Most of the focus of version 2.5 was on performance.
In version 3, the distribution will be towards artificial intelligence and the use of intelligent defense mechanisms in attack and defense mode.
Based on Debian stable 20.04.3 LTS mini
Debian stable is open-source software that was developed by Canonical in October 2004. Debian stable is a Linux-based operating system. It is designed for computers, smartphones, and network servers. A UK based company called Canonical Ltd. develops the system. All the principles used to develop the Debian stable. Multi-Platform Operating System
Currently, it officially supports amd64 hardware release architectures. I will release ARM architecture soon. Furthermore, with more than 1300 packages, the pre-installed software can meet almost any need, whether at home or in the enterprise.
Number of tools
When you boot up Predator-OS, you will quickly notice that a security learning process into a variety of different contexts and activities organizes the main menu. Predator Linux has neat 1000 pre-installed tools for cybersecurity and pentesting, and also system administrators. These tools are split into 40 categories.
Kernel custom
The predator Linux kernel has been recompiled and tuned as much as possible to optimize the system, secure, hardened and anonymous it and have the latest patches and hardware support and firmware.
Improving performance and tuned kernel level and user levels:
1) In order to improve the performance of the CPU frequency range has been changed intel_pstate to acpi-cpufreq by default.
2) The BIOS frequency limitation has been disabled by default in order to improve the performance of the CPU frequency range,
3)In order to improve the performance of the hard disk and boot time, the watchdog has been disabled by default.
4) Improving the performance of the hard disk by changing the I/O scheduler for SATA, HDD, and NVMe disks.
5) Improved CPU performance by changing the default kernel scheduler to a Linux-zen kernel.
6) Improving network and Internet performance by changing the Bottleneck Bandwidth and Round-trip propagation time (BBR).
7) Improved RAM memory function by changing the randomize_va_space status.
8) Improved virtual memory performance by replacing zswap instead of swap by default.
9) The hardware threads (physical CPU) for each CPU core have been enabled.
10) Improving the paralleling of tasks by allowing independent tasks (running threads) by sharing some processor resources.
11) Changed power saving mode to performance mode by default, in order to improve the performance of the disk and network IO.
12) All CPU governor frequency has switched in performance.
13) Reducing kernel log-level reports to a low level in order to improve kernel performance and increase security and create silent boot mode.
14) and also, improving TCP performance, increasing inode cache memory, disk cache, improving network and bandwidth parameters, etc.
The Predator-OS Developers
The Predator-OS has been designed and developed by Hossein seilani who is the developer of Emperor-OS Linux too. And the website and documents are designed by him as well.
He is originally from Iran.
Predator-OS News:
Most important news about Predator-OS:
More general (and regular) news about Predator-OS are sent to main we site:
Hardware requirements
Predator-OS Linux is only compatible with 64-bit processors.
Recommended system requirements:
2 GHz dual-core processor or better
4 GB system memory
25 GB of free hard drive space
Internet access is helpful
Either a DVD drive or a USB port for the installer media
Full compatibility on live system
You can run predator-so on live mode and you will have all features of it in live mode.
Souece code description
All source code files are availbe on my github:
https://github.com/hosseinseilani/predator-os
GRUB boot menu
/etc/default/grub
The /etc/default/grub file in Linux is a configuration file that stores settings for the GRUB (GRand Unified Bootloader) bootloader. It defines various parameters that control how GRUB behaves and appears during the boot process.
Here is a breakdown of its role:
What GRUB Does?
GRUB is a bootloader responsible for loading the operating system kernel (the core of the operating system) into memory when you start your computer.
It offers a menu where you can choose which operating system to boot (if you have multiple) or access recovery options.
What /etc/default/grub Contains:
This file contains various settings for GRUB, including:
The default boot entry (which OS to boot by default)
The timeout duration for the GRUB menu (how long it displays before booting the default)
Customization options for the menu appearance (colors, font)
Kernel command-line arguments (parameters passed to the kernel during boot)
Whether to automatically detect other operating systems on your disk
How it Works:
GRUB does not directly use the file itself. It serves as a template for generating the actual GRUB configuration file (/boot/grub/grub.cfg).
When you make changes to /etc/default/grub, you need to run a command (update-grub or grub2-mkconfig depending on your system) to update the grub.cfg file based on the new settings.
The grub.cfg file is what GRUB actually reads to display the menu and control the boot process.
This configuration is used for Hardened and Performance Tuning
Predator-os Source code of grub
1.GRUB_DEFAULT=“0”
Output: This line sets the default boot entry to the first entry (index 0) in the GRUB menu.
Effect: During boot, if no user input is provided within the timeout period (GRUB_TIMEOUT), GRUB will automatically boot the default entry.
2. GRUB_TIMEOUT=“10”
Output: This line defines the time (in seconds) that the GRUB menu will be displayed before booting the default entry.
Effect: You will see the GRUB menu for 10 seconds. If you do not select an option within this timeframe, the default entry will be booted automatically.
3. GRUB_DISTRIBUTOR=“Debian”
Output: This line sets the Linux distribution identifier. It is primarily informational and used by some tools to tailor behavior based on distribution.
Effect: In most cases, you won't notice a direct impact.
4. GRUB_CMDLINE_LINUX_DEFAULT=“...”
Output: This line specifies kernel command-line arguments that will be appended to most boot entries by default.
Effect: The provided arguments (e.g., quiet splash noprompt) can influence boot behavior like disabling boot messages or setting performance options.
5. GRUB_CMDLINE_LINUX=““
Output: This line sets an empty kernel command-line for specific entries (if used within a menuentry block).
Effect: It allows you to override the default arguments (GRUB_CMDLINE_LINUX_DEFAULT) for a particular boot entry.
6. #GRUB_DISABLE_OS_PROBER=“false”
Output: This line is commented out, meaning it is not active. If uncommented and set to true, it would disable automatic detection of other operating systems on your disk.
Effect: With automatic detection disabled, you'd need to manually configure entries for any additional OSes.
7. #GRUB_BADRAM=“...”
Output: This line is commented out. If uncommented and set with comma-separated memory addresses, it would mark those areas as bad RAM.
Effect: The system would avoid using those memory regions during boot and operation.
8. #GRUB_TERMINAL=“console”
Output: This line is commented out. If uncommented and set to a specific terminal type, it would dictate the console used by GRUB.
Effect: The default console (console) is generally used for GRUB interaction.
9. GRUB_GFXMODE=“1024x768x24”
Output: This line sets the graphics mode for the GRUB menu (resolution and color depth).
Effect: You'll see the GRUB menu displayed at the specified resolution (1024x768 pixels) and color depth (24 bits).
10. #GRUB_DISABLE_LINUX_UUID=“true”
Output: This line is commented out. If uncommented and set to true, it would disable the use of UUIDs (unique identifiers) for Linux entries in the GRUB menu.
Effect: Boot entries might use device names instead of UUIDs, which can be less reliable due to potential name changes.
11. #GRUB_DISABLE_RECOVERY=“true”
Output: This line is commented out. If uncommented and set to true, it would disable the recovery menu entry for troubleshooting purposes.
Effect: You wouldn't see the recovery menu option in GRUB, making it more difficult to access recovery tools in case of system issues.
12. GRUB_INIT_TUNE=“480 440 1”
Output: This line configures initial parameters for audio initialization during boot (values may vary based on hardware).
Effect: It helps fine-tune audio settings for GRUB, though the specific effects might not be noticeable to the user.
13. export GRUB_COLOR_NORMAL=“light-gray/black”
Output: This line defines the color scheme for the normal text in the GRUB menu.
Effect: The GRUB menu text will appear in light gray on a black background
GRUB_CMDLINE_LINUX_DEFAULT
Here is a description of each item in the GRUB_CMDLINE_LINUX_DEFAULT string:
quiet: This option suppresses most boot messages that would normally be displayed during the kernel startup process. This can be useful for providing a cleaner boot experience.
splash: This option instructs the kernel to display a graphical boot splash screen instead of text-based messages. This can also improve the boot experience by providing a more visually appealing startup process.
noprompt: This option prevents the GRUB boot loader from displaying a prompt after the kernel has been loaded. This can be useful for automating the boot process or for preventing accidental configuration changes.
priority=critical: This option specifies that only critical kernel messages should be printed during boot. This can be useful for reducing the amount of clutter on the console during boot.
retbleed=off: This option disables the Spectre Retbleed mitigation. Spectre Retbleed is a security vulnerability that affects certain Intel CPUs. Disabling this mitigation can improve performance, but it may also make your system more vulnerable to attack. Use with caution.
mitigations=off: This option disables all Spectre/Meltdown mitigations. Spectre and Meltdown are security vulnerabilities that affect many modern processors. Disabling these mitigations can improve performance, but it will also make your system more vulnerable to attack. Use with caution.
nosoftlockup: This option disables kernel panics on soft lockups. A soft lockup is a condition where the kernel appears to be frozen, but it is actually still making progress. Disabling kernel panics on soft lockups can prevent the system from rebooting unnecessarily.
mce=ignore_ce: This option instructs the kernel to ignore Machine Check Exceptions (MCEs). MCEs are errors that are reported by the hardware. Ignoring MCEs can mask hardware problems, but it can also improve system stability. Use with caution.
audit=0: This option disables kernel auditing. Kernel auditing is a feature that tracks security-relevant events on the system. Disabling kernel auditing can improve performance, but it can also make it more difficult to track security incidents.
amd_pstate.enable=1: This option enables AMD CPU performance state control (P-State). P-State is a technology that allows the CPU to dynamically adjust its clock speed and voltage in order to conserve power. Enabling P-State can improve battery life on laptops.
amd-pstate=active: This option sets the AMD CPU performance state to active. This means that the CPU will be allowed to dynamically adjust its clock speed and voltage according to the workload.
intel_pstate=disable: This option disables Intel CPU performance state control (P-State). This is the equivalent of the amd_pstate.enable=1 option for Intel CPUs.
nowatchdog: This option disables the kernel watchdog timer. The kernel watchdog timer is a feature that can reboot the system if it detects that the kernel has frozen. Disabling the watchdog timer can prevent the system from rebooting unnecessarily, but it can also make the system more susceptible to crashes. Use with caution.
loglevel=0: This option sets the kernel log level to 0. This means that no kernel messages will be logged. This can be useful for reducing the amount of log data that is generated.
fsck.mode=skip: This option instructs the kernel to skip the filesystem check on boot. The filesystem check is a utility that scans the filesystem for errors and repairs them if necessary. Skipping the filesystem check can improve boot speed, but it can also allow filesystem errors to go undetected. It is generally recommended to run the filesystem check periodically using dedicated tools.
elevator=noop: This option sets the I/O scheduler for block devices to the “noop” scheduler. The I/O scheduler is responsible for ordering disk I/O requests in a way that optimizes performance. The “noop” scheduler is a simple scheduler that doesn't perform any reordering. This can improve boot speed, but it may not be optimal for all workloads. There are other I/O schedulers available that can provide better performance for specific use cases.
debugfs=off: This option disables debugging support for the filesystem. This can reduce memory usage and improve performance, but it can also make it more difficult to debug filesystem problems.
/boot/grub/grub.cfg
The /boot/grub/grub.cfg file in Linux is the actual configuration file used by the GRUB (GRand Unified Bootloader) bootloader. It contains all the instructions GRUB needs to display the boot menu and load the chosen operating system kernel.
Key Points about /boot/grub/grub.cfg:
Generated from template: This file is not directly edited by users. Instead, it is automatically generated based on the settings defined in another file, /etc/default/grub.
Content: It contains instructions for various aspects of the boot process, including:
The layout and appearance of the GRUB menu (text, colors, font).
Entries for each operating system or recovery option available.
Kernel command-line arguments to be passed to the chosen kernel during boot.
Process Flow:
You modify settings in /etc/default/grub.
You run a command like update-grub or grub2-mkconfig (depending on your system) to update the /boot/grub/grub.cfg file based on the new settings in /etc/default/grub.
GRUB reads the /boot/grub/grub.cfg file when you boot your computer.
Based on the instructions in this file, GRUB displays the menu and loads the chosen operating system.
Importance:
The /boot/grub/grub.cfg file is crucial for a smooth boot process. It ensures GRUB displays the correct boot options and knows how to load the chosen kernel.
Modifying /boot/grub/grub.cfg (with Caution):
While technically possible, it is generally not recommended to edit this file directly.
Modifying it incorrectly can lead to boot problems.
It is safer to make changes in the template file (/etc/default/grub) and update the configuration using the appropriate command.
Grub boot menuentry source code
menuentry “Predator-OS ,Kernel 6.6.15” --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-6.6.15-amd64-advanced-2f625ce0-37bf-444e-85f2-ffeafe8c6440' {
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
set root='hd0,gpt2'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2 2f625ce0-37bf-444e-85f2-ffeafe8c6440
else
search --no-floppy --fs-uuid --set=root 2f625ce0-37bf-444e-85f2-ffeafe8c6440
fi
echo 'Loading Linux 6.6.15-amd64 ...'
linux /boot/vmlinuz-6.6.15-amd64 root=UUID=2f625ce0-37bf-444e-85f2-ffeafe8c6440 ro quiet splash noprompt priority=critical retbleed=off mitigations=off nosoftlockup mce=ignore_ce audit=0 amd_pstate.enable=1 amd-pstate=active intel_pstate=disable nowatchdog loglevel=0 fsck.mode=skip elevator=noop debugfs=off
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-6.6.15-amd64
}
submenu “Advance Options for Predator-OS ,Kernel 6.6.15”{
menuentry “Predator-OS ,Kernel 6.6.15 (recovery mode)” --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-6.6.15-amd64-recovery-2f625ce0-37bf-444e-85f2-ffeafe8c6440' {
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
set root='hd0,gpt2'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2 2f625ce0-37bf-444e-85f2-ffeafe8c6440
else
search --no-floppy --fs-uuid --set=root 2f625ce0-37bf-444e-85f2-ffeafe8c6440
fi
echo 'Loading Linux 6.6.15-amd64 ...'
linux /boot/vmlinuz-6.6.15-amd64 root=UUID=2f625ce0-37bf-444e-85f2-ffeafe8c6440 ro single
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-6.6.15-amd64
This configuration is used for Hardened and Performance Tuning
Description:
The provided text is a snippet from a GRUB 2 configuration file, specifically a menuentry block that defines a boot option for a Linux system named “Predator-OS, Kernel 6.6.15”. Here is a breakdown of the code:
Grub menu Structure of predator-os grub:
menuentry “Predator-OS ,Kernel 6.6.15”: This line defines a new boot option with the specified label.
--class debian --class gnu-linux --class gnu --class os: These options categorize the entry for GRUB's menu display (e.g., filtering by OS type).
$menuentry_id_option 'gnulinux-6.6.15-amd64-advanced-2f625ce0-37bf-444e-85f2-ffeafe8c6440': This sets a unique identifier for the entry.
{ ... }: This code block contains the instructions for GRUB to prepare and boot the system.
load_video: Loads the video driver for displaying the boot messages.
insmod gzio: Loads the module for handling compressed files (e.g., kernel image).
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi: This conditional statement checks the platform (Xen virtual machine) and loads additional modules for compressed formats if necessary.
insmod part_gpt: Loads the module for interpreting GPT (GUID Partition Table) formatted disks.
insmod ext2: Loads the module for accessing ext2 filesystems, likely where the kernel resides.
set root='hd0,gpt2': Sets the root partition where the operating system is located (disk 0, partition 2 with GPT).
search: This line attempts to locate the root partition using a filesystem UUID (unique identifier) if the feature_platform_search_hint is enabled.
It searches for the partition with UUID 2f625ce0-37bf-444e-85f2-ffeafe8c6440.
If feature_platform_search_hint is disabled, it simply uses the previously set root value.
echo 'Loading Linux 6.6.15-amd64 ...': Prints a message indicating the kernel is being loaded.
linux /boot/vmlinuz-6.6.15-amd64 root=UUID=2f625ce0-37bf-444e-85f2-ffeafe8c6440 ro quiet splash noprompt priority=critical retbleed=off mitigations=off nosoftlockup mce=ignore_ce audit=0 amd_pstate.enable=1 amd-pstate=active intel_pstate=disable nowatchdog loglevel=0 fsck.mode=skip elevator=noop debugfs=off: This line loads the kernel image (/boot/vmlinuz-6.6.15-amd64) and specifies various kernel command-line arguments. These arguments control boot behavior, including:
root=UUID=2f625ce0-37bf-444e-85f2-ffeafe8c6440: Sets the root partition again using the UUID.
ro: Mounts the root filesystem as read-only (initial boot).
quiet splash noprompt: Suppresses boot messages, displays a splash screen, and hides boot prompts.
Other options (like retbleed=off) potentially disable security mitigations or adjust performance settings (use with caution).
echo 'Loading initial ramdisk ...': Prints a message indicating the initial RAM disk is being loaded.
initrd /boot/initrd.img-6.6.15-amd64: Loads the initial RAM disk image (/boot/initrd.img-6.6.15-amd64) containing essential files for early system startup.
This configuration is used for Privacy and Anonymity
GRUB live files
Booting a Live System with GRUB:
GRUB can be used to boot a live system, which is a bootable operating system image that runs entirely from RAM without needing installation on the hard drive.
Live systems are often used for troubleshooting, testing new distributions, or data recovery.
To boot a live system using GRUB, you'd need a bootable live system image (often an ISO file) and a way to tell GRUB to load it. This might involve creating a custom menuentry block in your GRUB configuration or using tools specific to creating live USB drives.
GRUB Configuration for Live Systems:
Some live system distributions might have specific configurations in their GRUB settings to optimize the boot process for their particular live environment.
These configurations could involve options related to persistence (saving changes made during the live session), handling network connections, or loading specific drivers.
This configuration is used for Hardened and Performance Tuning
Download all grub live source code files here:
https://github.com/hosseinseilani
# eggs: grub.main.cfg
#
if loadfont $prefix/font.pf2 ; then
set gfxmode=1024x768x32
insmod efi_gop
insmod efi_uga
insmod video_bochs
insmod video_cirrus
insmod gfxterm
insmod jpeg
insmod png
terminal_output gfxterm
fi
set theme=/boot/grub/theme.cfg
menuentry "{{{fullname}}} Live/Installation" {
set gfxpayload=keep
{{{rmModules}}}
linux {{{vmlinuz}}} {{{kernel_parameters}}} auto noprompt priority=critical mitigations=off amd_pstate.enable=1 intel_pstate=disable loglevel=0 nowatchdog oops=panic module.sig_enforce=1 lockdown=confidentiality loglevel=0 fsck.mode=skip amd-pstate=active quiet splash
initrd {{{initrdImg}}}
}
menuentry "{{{fullname}}} Safe Mode" {
set gfxpayload=keep
{{{rmModules}}}
linux {{{vmlinuz}}} {{{kernel_parameters}}} auto noprompt priority=critical nomodeset apparmor=0 net.ifnames=0 noapic noapm nodma nomce nolapic nosmp vga=normal mitigations=off amd_pstate.enable=1 intel_pstate=disable loglevel=0 nowatchdog debugfs=off oops=panic module.sig_enforce=1 lockdown=confidentiality loglevel=0 fsck.mode=skip amd-pstate=active quiet splash
initrd {{{initrdImg}}}
}
menuentry "{{{fullname}}} Text Mode" {
set gfxpayload=keep
{{{rmModules}}}
linux {{{vmlinuz}}} {{{kernel_parameters}}} auto noprompt priority=critical init 3 mitigations=off amd_pstate.enable=1 intel_pstate=disable loglevel=0 nowatchdog debugfs=off oops=panic module.sig_enforce=1 lockdown=confidentiality loglevel=0 fsck.mode=skip amd-pstate=active quiet
initrd {{{initrdImg}}}
}
menuentry "{{{fullname}}} Forensics Mode" {
set gfxpayload=keep
{{{rmModules}}}
linux {{{vmlinuz}}} {{{kernel_parameters}}} forensic net.ifnames=0 noautomount noswap toram auto noprompt priority=critical mitigations=off amd_pstate.enable=1 intel_pstate=disable loglevel=0 nowatchdog debugfs=off oops=panic module.sig_enforce=1 lockdown=confidentiality loglevel=0 fsck.mode=skip amd-pstate=active quiet splash
initrd {{{initrdImg}}}
}
menuentry "{{{fullname}}} NoAcpi Mode" {
set gfxpayload=keep
{{{rmModules}}}
linux {{{vmlinuz}}} {{{kernel_parameters}}} noapic auto noprompt priority=critical mitigations=off amd_pstate.enable=1 intel_pstate=disable loglevel=0 nowatchdog debugfs=off oops=panic module.sig_enforce=1 lockdown=confidentiality loglevel=0 fsck.mode=skip amd-pstate=active quiet splash
initrd {{{initrdImg}}}
}
menuentry "{{{fullname}}} iommu Mode" {
set gfxpayload=keep
{{{rmModules}}}
linux {{{vmlinuz}}} {{{kernel_parameters}}} iommu=soft auto noprompt priority=critical mitigations=off amd_pstate.enable=1 intel_pstate=disable loglevel=0 nowatchdog debugfs=off oops=panic module.sig_enforce=1 lockdown=confidentiality loglevel=0 fsck.mode=skip amd-pstate=active quiet splash
initrd {{{initrdImg}}}
}
menuentry "{{{fullname}}} Encrypted Mode" {
set gfxpayload=keep
{{{rmModules}}}
linux {{{vmlinuz}}} {{{kernel_parameters}}} persistent=cryptsetup persistence-encryption=luks persistent persistence auto noprompt priority=critical mitigations=off amd_pstate.enable=1 intel_pstate=disable loglevel=0 nowatchdog debugfs=off oops=panic module.sig_enforce=1 lockdown=confidentiality loglevel=0 fsck.mode=skip amd-pstate=active quiet splash
initrd {{{initrdImg}}}
}
menuentry "{{{fullname}}} Recovery Mode" {
set gfxpayload=keep
{{{rmModules}}}
linux {{{vmlinuz}}} {{{kernel_parameters}}} recovery nomodeset auto noprompt priority=critical mitigations=off amd_pstate.enable=1 intel_pstate=disable loglevel=0 nowatchdog debugfs=off oops=panic module.sig_enforce=1 lockdown=confidentiality loglevel=0 fsck.mode=skip amd-pstate=active quiet
initrd {{{initrdImg}}}
}
menuentry 'Boot from local' {
exit
}
This configuration is used for Hardened and more security
plymouth
The directory /usr/share/plymouth/ in Linux stores files related to the Plymouth boot splash screen.
What is Plymouth?
Plymouth is a project that provides a graphical boot splash screen instead of the traditional text-based messages during the boot process.
It aims to improve the user experience by offering a visually appealing startup sequence.
What's inside the directory?
This directory typically contains various subdirectories and files that define the appearance and behavior of the Plymouth splash screen:
Themes: Subdirectories within /usr/share/plymouth/themes/ hold theme files (.plymouth format) that specify the visuals for the splash screen. These themes can include backgrounds, logos, animations, and color schemes.
Scripts: Some themes might also utilize scripts (.script format) to control the logic and behavior of the splash screen, such as displaying progress bars or messages.
Default theme: The default Plymouth theme is usually located in a subdirectory here.
Configuration files: You might find additional configuration files like plymouthd.conf (systemd) or plymouth.conf (upstart) that control overall behavior like enabling/disabling Plymouth or setting default themes.
How it works:
During boot, the kernel interacts with Plymouth to display the graphical elements defined in the chosen theme.
This can involve displaying images, animations, and progress bars while the kernel loads the operating system components in the background.
Customization:
Some distributions allow customization of the Plymouth theme by choosing from pre-installed themes or creating your own.
However, modifying themes requires editing configuration files and theme files, which might involve some technical knowledge.
Plymouth source code
https://github.com/hosseinseilani/predator-os-plymouth
/usr/share/plymouth/themes/little-psycho/predator-plymouth.plymouth
[Plymouth Theme]
Name=Vortex Ubuntu
Description=Ubuntu logo with spinning colored stripes
ModuleName=script
[script]
ImageDir=/usr/share/plymouth/themes/predator-plymouth
ScriptFile=/usr/share/plymouth/themes/predator-plymouth/predator-plymouth.script
UseFirmwareBackground=false
Source code:
/usr/share/plymouth/themes/little-psycho/predator-plymouth.script
Window.SetBackgroundTopColor (0, 0, 0);
Window.SetBackgroundBottomColor (0, 0, 0);
bg_image = Image ("bg.png");
bg_image = bg_image.Scale (Window.GetWidth (),Window.GetHeight ());
bg = Sprite (bg_image);
bg.SetZ (-10);
yPos = (2/5);
if (Plymouth.GetMode () == "shutdown")
{
yPos = 0.5;
}
s = 0.75;
logo_image = Image ("logo.png");
logo_image = logo_image.Scale (120 * s , 120 * s);
logo = Sprite (logo_image);
logo.SetX (Window.GetWidth () / 2 - logo_image.GetWidth() / 2);
logo.SetY ((Window.GetHeight() * yPos) - logo_image.GetHeight() / 2);
istatic = Image ("static.png");
istatic = istatic.Scale (istatic.GetWidth() * s * 0.3 ,istatic.GetHeight() * s * 0.3 );
static = Sprite (istatic);
static.SetX (Window.GetWidth () / 2 - istatic.GetWidth() / 2);
static.SetY ((Window.GetHeight() * yPos) - istatic.GetHeight() / 2);
ic1 = Image ("1.png");
ic1 = ic1.Scale (ic1.GetWidth() * s ,ic1.GetHeight() * s );
c1 = Sprite (ic1);
c1.SetX (Window.GetWidth () / 2 - ic1.GetWidth() / 2);
c1.SetY ((Window.GetHeight() * yPos) - ic1.GetHeight() / 2);
ic2 = Image ("2.png");
ic2 = ic2.Scale (ic2.GetWidth() * s ,ic2.GetHeight() * s );
c2 = Sprite (ic2);
c2.SetX (Window.GetWidth () / 2 - ic2.GetWidth() / 2);
c2.SetY ((Window.GetHeight() * yPos) - ic2.GetHeight() / 2);
ic3 = Image ("3.png");
ic3 = ic3.Scale (ic3.GetWidth() * s ,ic3.GetHeight() * s );
c3 = Sprite (ic3);
c3.SetX (Window.GetWidth () / 2 - ic3.GetWidth() / 2);
c3.SetY ((Window.GetHeight() * yPos) - ic3.GetHeight() / 2);
ic4 = Image ("4.png");
ic4 = ic4.Scale (ic4.GetWidth() * s ,ic4.GetHeight() * s );
c4 = Sprite (ic4);
c4.SetX (Window.GetWidth () / 2 - ic4.GetWidth() / 2);
c4.SetY ((Window.GetHeight() * yPos) - ic4.GetHeight() / 2);
ic5 = Image ("5.png");
ic5 = ic5.Scale (ic5.GetWidth() * s ,ic5.GetHeight() * s );
c5 = Sprite (ic5);
c5.SetX (Window.GetWidth () / 2 - ic5.GetWidth() / 2);
c5.SetY ((Window.GetHeight() * yPos) - ic5.GetHeight() / 2);
ic6 = Image ("6.png");
ic6 = ic6.Scale (ic6.GetWidth() * s ,ic6.GetHeight() * s );
c6 = Sprite (ic6);
c6.SetX (Window.GetWidth () / 2 - ic6.GetWidth() / 2);
c6.SetY ((Window.GetHeight() * yPos) - ic6.GetHeight() / 2);
ic7 = Image ("7.png");
ic7 = ic7.Scale (ic7.GetWidth() * s ,ic7.GetHeight() * s );
c7 = Sprite (ic7);
c7.SetX (Window.GetWidth () / 2 - ic7.GetWidth() / 2);
c7.SetY ((Window.GetHeight() * yPos) - ic7.GetHeight() / 2);
ic8 = Image ("8.png");
ic8 = ic8.Scale (ic8.GetWidth() * s ,ic8.GetHeight() * s );
c8 = Sprite (ic8);
c8.SetX (Window.GetWidth () / 2 - ic8.GetWidth() / 2);
c8.SetY ((Window.GetHeight() * yPos) - ic8.GetHeight() / 2);
ic9 = Image ("9.png");
ic9 = ic9.Scale (ic9.GetWidth() * s ,ic9.GetHeight() * s );
c9 = Sprite (ic9);
c9.SetX (Window.GetWidth () / 2 - ic9.GetWidth() / 2);
c9.SetY ((Window.GetHeight() * yPos) - ic9.GetHeight() / 2);
ic10 = Image ("10.png");
ic10 = ic10.Scale (ic10.GetWidth() * s ,ic10.GetHeight() * s );
c10 = Sprite (ic10);
c10.SetX (Window.GetWidth () / 2 - ic10.GetWidth() / 2);
c10.SetY ((Window.GetHeight() * yPos) - ic10.GetHeight() / 2);
t=0;
fun update ()
{
t++;
c1.SetImage(ic1.Rotate(t * 0.009));
c2.SetImage(ic2.Rotate(t * 0.007));
c3.SetImage(ic3.Rotate(t * 0.006));
c4.SetImage(ic4.Rotate(t * 0.0053));
c5.SetImage(ic5.Rotate(t * 0.0048));
c6.SetImage(ic6.Rotate(t * 0.004));
c7.SetImage(ic7.Rotate(t * 0.0035));
c8.SetImage(ic8.Rotate(t * 0.003));
c9.SetImage(ic9.Rotate(t * 0.0025));
c10.SetImage(ic10.Rotate(t * 0.002));
}
Plymouth.SetRefreshFunction (update);
#----------------------------------------- Progress Bar --------------------------------
if (Plymouth.GetMode () == "boot")
{
ipb = Image ("pb.png");
pb = ipb.Scale (1 , 3);
pb = Sprite (ipb);
pb.SetX (Window.GetWidth () / 2 - 50);
pb.SetY ((Window.GetHeight() * (2/3)) - ipb.GetHeight() / 2);
fun progress_callback (duration, progress)
{
pb.SetImage(ipb.Scale ( progress * 100, 3));
}
Plymouth.SetBootProgressFunction(progress_callback);
}
Predator-os Themes
The directory /usr/share/themes/ in Linux stores themes used by various applications and the desktop environment. These themes define the visual appearance of elements like windows, buttons, menus, icons, and cursors.
https://github.com/hosseinseilani/predator-os-theme
This configuration is Used for Hardened and more security and Tuning
.bashrc
The .bashrc file, short for “Bourne Again Shell Initialization RC” file, is a configuration file that runs whenever you open a new bash shell terminal session on Linux or macOS. It allows you to customize your bash shell environment to improve your workflow and productivity.
Here is a breakdown of what the .bashrc file does:
Customization: You can define various settings and configurations in the .bashrc file to personalize your bash experience. This can include:
Aliases: Create shortcuts for frequently used commands to save time typing.
Environment variables: Set variables containing values you use often in your commands.
Prompt configuration: Change the appearance of your command prompt (the text you see before typing commands).
Function definitions: Define reusable functions to automate repetitive tasks.
Other settings: You can configure shell history, completion options, and more.
Personalization: The .bashrc file is specific to your user account. Any changes you make in this file only affect your bash sessions.
Automatic execution: Whenever you start a new interactive bash shell session (by opening a terminal window or tab), the .bashrc file is automatically sourced (executed). This ensures your custom settings are applied for each new session.
Benefits of using .bashrc:
Efficiency: Aliases and functions can save you time by reducing the need to type long commands repeatedly.
Convenience: Environment variables can store values you use frequently, making commands more concise.
Improved workflow: A customized prompt and other settings can enhance your command line experience.
1. HISTCONTROL=ignoreboth
This line sets the HISTCONTROL shell option to ignoreboth.
The HISTCONTROL option controls how duplicate and leading-whitespace lines are handled in the bash history.
With ignoreboth, the history:
Ignores: Won't record lines that are exactly the same as the previous command in the history.
Ignores: Won't record lines that start with a space.
2. shopt -s histappend
This line uses the shopt command to set the histappend shell option.
By default, bash overwrites the existing history file when a new session starts.
Setting histappend tells bash to append new commands to the existing history file, preserving your past commands across sessions.
3. HISTSIZE=100
This line sets the HISTSIZE variable to 100.
HISTSIZE defines the maximum number of commands stored in the bash history.
In this case, the history will remember a maximum of 100 commands.
4. HISTFILESIZE=200
This line sets the HISTFILESIZE variable to 200.
HISTFILESIZE defines the maximum number of lines written to the history file on disk.
Here, the history file will store a maximum of 200 lines, even if HISTSIZE allows more commands in memory (older commands might be removed to stay within this limit).
5. shopt -s checkwinsize
This line uses the shopt command to set the checkwinsize shell option.
By default, bash assumes the terminal window size doesn't change during a session.
Setting checkwinsize tells bash to check the window size after each command.
This ensures environment variables like LINES and COLUMNS (which represent the number of rows and columns in the terminal) are updated if the window size changes. This can be useful for tools that rely on accurate terminal dimensions.
Bashrc Source code
Custome predator-os alias
alias up='sudo nala update'
alias ug='sudo apt dist-upgrade'
alias fix='sudo apt -f install'
alias fm='sudo thunar'
alias sy='sudo synaptic'
alias reb='systemctl reboot'
alias off='systemctl poweroff'
alias top='htop'
alias mon='atop'
alias adl='aria2c -x16 -s16'
alias wdl='wget --limit-rate=0 --tries=16'
alias fx='firefox'
alias mer='mercury-browser '
alias cat='batcat --theme=ansi'
alias cat='batcat'
alias adel='sudo python2.7 /opt/ADEL-Android-Data-Extractor-Lite/adel.py -h'
alias repo=“sudo software-properties-qt”
alias predator-updater='sudo python3 /usr/bin/predator-os-updater.py'
Describtion:
up: Updates package lists with nala (presumably a custom update manager).
ug: Upgrades packages with apt dist-upgrade.
fix: Fixes broken package dependencies with apt -f install.
fm: Opens the file manager with thunar. You can change this to another preferred file manager like dolphin or nemo.
sy: Opens the synaptic package manager for graphical package management.
reb: Reboots the system with systemctl reboot.
off: Powers off the system with systemctl poweroff.
Monitoring and Analysis:
top: Uses htop for a more visually appealing process monitor.
mon: Uses atop to monitor system resources over time.
Downloading:
adl: Sets up aria2c for fast multi-threaded downloads with specific options (16 connections, 16 segments).
wdl: Sets up wget for faster downloads with no rate limit and 16 retries.
Web Browsing:
fx: Opens Firefox.
mer: Opens Mercury browser.
Custom Aliases:
cat: Uses batcat with a theme for a nicer code viewer.
adel: Runs a script for data extraction (presumably ADEL-Android-Data-Extractor-Lite).
repo: Opens the software properties tool for managing additional repositories (likely for Qt related packages).
predator-updater: Runs a custom script for updating Predator OS (presumably written in Python 3).
Customization Tips:
You can further personalize these aliases based on your workflow.
Consider aliases for frequently used commands like ls, cd, grep, etc.
Explore tools like tldr to get quick summaries of command usage and create aliases for them.
Be mindful of potential security implications when creating aliases, especially for commands involving sudo.
Adding Aliases to Bash Profile:
These aliases are currently defined in your terminal session. To make them persistent across sessions, you can add them to your bash profile file (e.g., .bashrc). Here is how:
Open your bash profile with a text editor: nano ~/.bashrc
Add your alias definitions at the end of the file.
Save the file and source it for the changes to take effect: source ~/.bashrc
Remember, customizing your aliases can significantly improve your terminal workflow and efficiency.
Predator-os Prompt Configuration (PS1):
OS_ICON=Predator
PS1=“\n \[\033[0;33m\]╭─────\[\033[0;38m\]\[\033[0;37m\]\[\033[44m\] $OS_ICON \u \[\033[0m\]\[\033[0;37m\]\[\033[0;34m\]─────\[\033[0;32m\]\[\033[0;30m\]\[\033[42m\] \w \[\033[0m\]\[\033[0;32m\] \n \[\033[0;34m\]╰ \[\033[1;32m\]\$ \[\033[0m\] “
1. Bash Prompt Configuration (PS1):
This block defines the appearance of your bash command prompt using the PS1 variable.
It uses escape sequences (characters starting with \e) to control color, positioning, and text insertion.
Let's break down the code step-by-step:
Lines with \033 and color codes define color changes for different elements of the prompt.
\[\033[0;33m\]╭─────\[\033[0;38m\]\[\033[0;37m\] creates the top border with text.
$OS_ICON inserts the value of the OS_ICON variable (likely set to “Predator”).
\u displays the username.
Similar constructs create the bottom border and working directory display with colored elements.
\[\033[1;32m\]\$ \[\033[0m\] displays the $ symbol (cursor) in green and resets color.
Less Terminal Colors (LESS_TERMCAP variables):
LESS_TERMCAP_mb=$'\e[1;32m'
LESS_TERMCAP_md=$'\e[1;32m'
LESS_TERMCAP_me=$'\e[0m'
LESS_TERMCAP_se=$'\e[0m'
LESS_TERMCAP_so=$'\e[01;33m'
LESS_TERMCAP_ue=$'\e[0m'
LESS_TERMCAP_us=$'\e[1;4;31m'
These lines define color codes for the less pager command, likely used for viewing text files.
Variables like LESS_TERMCAP_so and LESS_TERMCAP_us set colors for specific elements in the less output, such as highlighted search terms.
export LC_ALL=C
export LC_ALL=C
bind 'set show-all-if-ambiguous on'
bind 'set blink-matching-paren on'
bind 'set completion-ignore-case on'
3. Bash Shell Configuration (export and bind):
These lines likely come from a .bashrc or similar shell configuration file.
export LC_ALL=C (repeated): This line is set twice, potentially a mistake. Setting LC_ALL to C forces the use of the C locale, which might affect character encoding and formatting.
bind commands: These lines configure some keyboard shortcuts for the bash shell:
set show-all-if-ambiguous on: Shows all possible completions even if tHere is no ambiguity.
set blink-matching-paren on: Makes matching parentheses blink for easier identification.
set completion-ignore-case on: Makes bash completion case-insensitive.
NVIDIA Optimus Configuration (likely for laptops):
__NV_PRIME_RENDER_OFFLOAD=1
__VK_LAYER_NV_optimus=NVIDIA_only
__GLX_VENDOR_LIBRARY_NAME=nvidia
These lines might be related to setting up NVIDIA Optimus technology on a laptop with dual graphics cards (integrated and dedicated).
The variables like __NV_PRIME_RENDER_OFFLOAD=1 and __VK_LAYER_NV_optimus=NVIDIA_only potentially favor the dedicated NVIDIA GPU for graphical tasks.
__GLX_VENDOR_LIBRARY_NAME=nvidia might instruct the system to use the NVIDIA graphics library for OpenGL functions.
Etc configs
The /etc directory in Linux is a crucial directory that stores system-wide configuration files and settings for various applications and services. It is often referred to as the “et cetera” directory, meaning “and so on” because it holds miscellaneous system files essential for the overall functionality and security of your Linux system.
Here is a breakdown of the importance and contents of the /etc directory:
Importance:
Configuration files within /etc dictate how various system components, services, and applications behave.
They define settings like network configuration, user accounts, security policies, software package management, and more.
Modifying these files (with caution) allows you to customize the behavior of your system to your needs
This configuration is used for Hardening and security
Aida
AIDE, which stands for Advanced Intrusion Detection Environment, is a free and open-source intrusion detection tool specifically designed for Unix-like operating systems, particularly Linux. It helps system administrators monitor the integrity of files and directories on their systems.
Here is a breakdown of how AIDE works:
Database Creation: During initial setup, AIDE creates a database containing checksums (unique hash values) of all critical system files and directories.
Regular Scans: AIDE can be configured to run scans periodically (e.g., daily, weekly) to recalculate checksums of the same files and directories.
Comparison: AIDE compares the newly calculated checksums with the values stored in its database.
Alerting: If any discrepancies are found (checksums don't match), it indicates a potential unauthorized modification to a system file. This could be a sign of malware, hacking attempts, or accidental file changes.
Benefits of using AIDE:
File Integrity Monitoring: AIDE provides a way to detect unauthorized changes to important system files.
Early Warning System: It can act as an early warning system for potential security breaches.
Easy to Use: AIDE is relatively easy to set up and use for basic file integrity monitoring.
Open Source: Being open-source allows for customization and community support.
/etc/aida/aida.conf
database_in=file:/var/lib/aide/aide.db
database_out=file:/var/lib/aide/aide.db.new
database_new=file:/var/lib/aide/aide.db.new
gzip_dbout=yes
ActLog = Full+growing+ANF+I
RotLog = Full
CompSerLog = Full+I+compressed
MidlSerLog = Full+I
LastSerLog = Full+ARF
Log = OwnerMode+n+growing+s+X
FreqRotLog = Log-growing-s
LowLog = Log-growing-s
LoSerMemberLog = Full+I+ANF
SerMemberLog = Full+I
HiSerMemberLog = Full+I+ARF
LowDELog = SerMemberLog+ANF+ARF
SerMemberDELog = Full+ANF
LinkedLog = Log-n
Apt
In Linux systems that use the APT (Advanced Package Tool) for package management, there isn't actually a single folder named /apt. APT itself is a collection of tools and libraries spread across various directories. However, APT relies on several directories to function properly. Here is a breakdown of the key directories involved in APT package management:
1. /etc/apt:
This directory stores APT configuration files that define how APT operates on your system. Some important files here include:
/etc/apt/sources.list: This file lists the software repositories (sources) from which APT retrieves packages.
/etc/apt/preferences: This file allows you to configure preferences for package selection and installation during package operations using apt.
2. /var/lib/apt:
This directory contains essential data for APT's operation, including:
/var/lib/apt/lists: This subdirectory stores package lists downloaded from the repositories listed in /etc/apt/sources.list. These lists contain information about available packages, versions, and dependencies.
/var/lib/apt/cache: This subdirectory stores downloaded package files (.deb files) after fetching them from repositories. APT retrieves packages from here for installation.
/var/lib/apt/state: This subdirectory stores the package management state, including information about installed packages and their versions.
This configuration is used for Hardening and security
/etc/apt/sources.list.d/predator-os.list
deb [arch=amd64] https://www.seilany.ir/predator-os/predator-updater-ppa ./
This configuration is used for tuning performance
Calamares installer
/etc/calamares/settings
The directory /etc/calamares/branding is related to customizing the look and feel of the Calamares installer on a Linux distribution. Calamares is a popular open-source graphical installer used by many Linux distributions to provide a user-friendly experience during the installation process.
What is inside the directory?
This directory can contain subdirectories and files that define the branding elements for the Calamares installer specific to that particular distribution. Here is a breakdown of the contents:
Subdirectories: Each subdirectory might represent a different branding theme or variant. These subdirectories typically contain:
branding.desc: This file is a descriptor file in a key-value format that defines branding elements like the product name, welcome message, and copyright information displayed during installation.
Images: Subdirectories or the main directory might hold images used for the installer, such as logos, backgrounds, and slideshow elements.
QML files (optional): Some branding customizations might utilize QML (Qt Meta Language) files to create custom UI elements or animations for the installer.
How it works:
During the boot process, Calamares searches for branding information in this directory.
The presence of a branding directory allows the distribution to customize the installer's appearance and messages to reflect its branding identity.
If no branding directory is found, Calamares uses a default theme.
Benefits of branding:
Improved User Experience: A customized installer with the distribution's logo and messages can create a more familiar and welcoming experience for users installing the system.
Branding Consistency: Branding in the installer reinforces the distribution's overall branding strategy
This configuration is used for Hardening and security
Chrootkit
The file /etc/chkrootkit.conf is a configuration file for the chkrootkit tool in older Linux systems. Chkrootkit is a command-line tool used to scan for potential rootkits (hidden malicious software) on your system. However, it is important to note that chkrootkit is considered deprecated or outdated by many security professionals.
Here is a breakdown of why this file might be present and what it does:
Configuration: This file likely contains settings that control how chkrootkit scans your system. It might specify:
Directories and files to scan.
Options for logging and reporting of scan results.
How to handle potential rootkit detections.
Deprecated Status: While you might find this file on some older systems, chkrootkit itself is considered outdated.
It may not be effective against modern rootkits that employ advanced techniques to evade detection.
Many distributions have moved on to more actively maintained and reliable tools for rootkit detection.
The provided lines appear to be configuration settings for a tool, likely related to system security and potential for running daily automated tasks. Here is a breakdown of what each line likely controls:
1. RUN_DAILY=“true”
This line sets the RUN_DAILY variable to “true”.
This suggests the script or tool is configured to run daily (potentially at system startup or using a cron job).
2. RUN_DAILY_OPTS=““
This line sets the RUN_DAILY_OPTS variable to an empty string (““).
This variable likely holds options for the daily run but is currently empty.
Depending on the tool, these options might specify what actions to perform during the daily run.
3. DIFF_MODE=“true”
This line sets the DIFF_MODE variable to “true”.
This suggests the tool might be comparing something (like files or system states) and looking for differences.
4. MAILTO=“root”
This line sets the MAILTO variable to “root”.
This defines the email recipient for any notifications sent by the tool.
In this case, emails would be sent to the “root” user account.
5. IGNORE_FILE=“/etc/chkrootkit/chkrootkit.ignore”
This line sets the IGNORE_FILE variable to /etc/chkrootkit/chkrootkit.ignore.
This suggests the tool might be using an ignore file to specify files or patterns to exclude from its checks.
The file path points towards a potential link to the now outdated chkrootkit tool (mentioned previously).
Initramfs
What is an initramfs?
An initramfs is a compressed file system image loaded into memory very early during the boot process.
It contains essential drivers and utilities needed to mount the main root filesystem and complete the boot process.
Since the main root filesystem might not be accessible yet (e.g., on encrypted drives), the initramfs provides a temporary environment to get the system up and running.
What does MODULES=most mean?
The MODULES variable in the configuration file defines which kernel modules are included in the initramfs image.
In this case, most is a predefined option that instructs mkinitramfs to include a broad range of modules:
This typically includes file system drivers (e.g., ext4, NTFS), basic block device drivers (e.g., SATA, SCSI), and some essential network modules.
The exact selection of modules with “most” might vary depending on your system and kernel version.
This configuration is used for Tuning performance
Hdparam
The file /etc/hdparm.conf is a configuration file for the hdparm command-line utility on Linux systems. Hdparm is a versatile tool used to control and query various parameters of your hard disk drives (HDDs) or solid-state drives (SSDs). This configuration file allows you to define default settings for hdparm that are applied when you use the tool without specifying any options.
readahead = 256
scheduler = noop
/dev/discs/disc1/disc {
mult_sect_io = 32
spindown_time = 36
write_cache = off
}
/dev/cdroms/cdrom0 {
mult_sect_io = 16
write_cache = on
dma = on
apm = off
readahead = 4096
scheduler = deadline
offline_collection = on
acoustic_management = 128
spindown_time = 120
reallocated_sector_ct = on
smart = on
# Enable NCQ (Native Command Queuing)
queue_depth = 32
# Increase the I/O timeout to 180 seconds
ioctl_timeout = 180
# Enable tagged command queuing
tag_queue_depth = 32
# Set the I/O scheduler read/write quantum to 1024 KB
quantum = 1024
# Increase the maximum number of read/write requests in flight to 128
nr_requests = 128
# Set the disk's interface speed to SATA3 (6.0 Gbps)
interface_speed = 6
}
/dev/hda {
mult_sect_io = 16
write_cache = on
dma = on
apm = off
readahead = 4096
scheduler = deadline
offline_collection = on
acoustic_management = 128
spindown_time = 120
reallocated_sector_ct = on
smart = on
# Enable NCQ (Native Command Queuing)
queue_depth = 32
# Increase the I/O timeout to 180 seconds
ioctl_timeout = 180
# Enable tagged command queuing
tag_queue_depth = 32
# Set the I/O scheduler read/write quantum to 1024 KB
quantum = 1024
# Increase the maximum number of read/write requests in flight to 128
nr_requests = 128
# Set the disk's interface speed to SATA3 (6.0 Gbps)
interface_speed = 6
}
/dev/sda {
mult_sect_io = 16
write_cache = on
dma = on
apm = off
readahead = 4096
scheduler = deadline
offline_collection = on
acoustic_management = 128
spindown_time = 120
reallocated_sector_ct = on
smart = on
# Enable NCQ (Native Command Queuing)
queue_depth = 32
# Increase the I/O timeout to 180 seconds
ioctl_timeout = 180
# Enable tagged command queuing
tag_queue_depth = 32
# Set the I/O scheduler read/write quantum to 1024 KB
quantum = 1024
# Increase the maximum number of read/write requests in flight to 128
nr_requests = 128
# Set the disk's interface speed to SATA3 (6.0 Gbps)
interface_speed = 6
}
/dev/sdb {
mult_sect_io = 16
write_cache = on
dma = on
apm = off
readahead = 4096
scheduler = deadline
offline_collection = on
acoustic_management = 128
spindown_time = 120
reallocated_sector_ct = on
smart = on
# Enable NCQ (Native Command Queuing)
queue_depth = 32
# Increase the I/O timeout to 180 seconds
ioctl_timeout = 180
# Enable tagged command queuing
tag_queue_depth = 32
# Set the I/O scheduler read/write quantum to 1024 KB
quantum = 1024
# Increase the maximum number of read/write requests in flight to 128
nr_requests = 128
# Set the disk's interface speed to SATA3 (6.0 Gbps)
interface_speed = 6
}
This configuration is used for Hardening and security
Login settings
The file /etc/login.defs is a crucial configuration file in Linux systems that defines default settings for user accounts and the login process. It acts as a central location to manage various aspects of user management, including:
Password settings: You can define parameters like minimum password length, password aging (how often users must change passwords), and password encryption methods.
Account defaults: Options can be set for features like automatic group membership for new users, default shell for login sessions, and limitations on login attempts in case of password errors.
Mail spool configuration: The file can specify the location and naming conventions for user mailboxes.
#
# Password aging controls:
#
# PASS_MAX_DAYS Maximum number of days a password may be used.
# PASS_MIN_DAYS Minimum number of days allowed between password changes.
# PASS_WARN_AGE Number of days warning given before a password expires.
#
PASS_MAX_DAYS 30
PASS_MIN_DAYS 1
PASS_WARN_AGE 7
Log files
The file /etc/logrotate.conf is the main configuration file for the logrotate utility in Linux systems. Logrotate is a crucial tool for managing log files – files that record system events, application activities, and errors. The configuration file defines how and when log files are rotated, compressed, and archived.
Why is logrotate important?
Log files can grow large over time, consuming valuable disk space.
Unmanaged log files can become difficult to search and analyze.
Logrotate helps maintain a balance:
Keeping essential log information for troubleshooting purposes.
Preventing log files from taking up excessive storage space.
What does /etc/logrotate.conf specify?
The configuration file defines rotation rules for various log files. Here is a breakdown of what it might contain:
Log file definitions: Each log file to be rotated is specified by its path (e.g., /var/log/apache2/access.log).
Rotation schedule: You can define how often logs are rotated based on:
Time intervals (e.g., daily, weekly)
File size limits (e.g., rotate when the log file reaches 10 MB)
Number of archived logs: You can specify how many rotated logs to keep for historical reference. For example, keeping the last 7 daily rotations or the last 4 weekly rotations.
Compression: Logrotate can compress archived logs (often using gzip) to save disk space.
Post-rotation actions: The configuration can define actions to take after a log rotation, such as running a script to notify the administrator or restart a service that writes to the log.
Benefits of using /etc/logrotate.conf:
Automated log management: It automates the process of rotating, compressing, and archiving log files, reducing manual intervention.
Efficient disk space usage: By keeping log files under control, you can prevent them from consuming excessive storage space.
Improved log analysis: Having well-managed and organized logs makes it easier to analyze system activity and troubleshoot issues.
This configuration is used for tuning performance and security
Shell
The file /etc/shells in Linux systems is a plain text file that lists the valid shells, or login shells, available on the system. These shells are programs that provide a command-line interface (CLI) environment for users to interact with the operating system.
Here is a breakdown of the functionality and importance of /etc/shells:
Purpose:
The primary function of /etc/shell is to act as a security measure.
System utilities like chsh (change shell) and some login services rely on this file to determine whether a user is attempting to switch to a legitimate shell or an unauthorized program.
If a user tries to change their login shell to a program not listed in /etc/shells, the operation will be denied.
Contents:
The file typically contains a list of full paths to valid shells, one per line.
Common shells you might find listed include:
/bin/bash (the default shell on many Linux systems)
/bin/sh (a historical and widely compatible shell)
/bin/zsh (an advanced shell with extended features)
/usr/bin/fish (a user-friendly shell with a modern design)
This configuration is used for tuning performance
predator-os theme:
A Plasma theme refers to the visual customization options available for the KDE Plasma desktop environment, a popular interface for Linux operating systems. It allows users to change the look and feel of their desktop beyond just the wallpaper.
Here is a breakdown of what Plasma themes offer:
Visual Tweaks: You can modify various graphical elements like the panel, widgets, menus, and notifications to create a cohesive aesthetic.
Color Schemes: Plasma themes often include color palettes that adjust the overall look of your desktop, including application windows and KDE/Qt apps.
Customization Potential: KDE Plasma is known for its deep level of customization. Plasma themes can be quite varied, ranging from sleek and modern to more playful or artistic styles.
There are two main types of Plasma themes:
Plasma Styles: These themes focus on the appearance of the panel, widgets, and other Plasma-specific UI elements.
Global Themes: These more comprehensive themes encompass not only Plasma styles but also color schemes, icons, login screens, and even application styles for a more unified look.
Predator-os theme Location:
AURORAE_DIR=“/usr/share/aurorae/themes”
SCHEMES_DIR=“/usr/share/color-schemes”
PLASMA_DIR=“/usr/share/plasma/desktoptheme”
LAYOUT_DIR=“/usr/share/plasma/layout-templates”
LOOKFEEL_DIR=“/usr/share/plasma/look-and-feel”
KVANTUM_DIR=“/usr/share/Kvantum”
WALLPAPER_DIR=“/usr/share/wallpapers”
These are all directory paths related to the customization options available on the KDE Plasma desktop environment:
AURORAE_DIR /usr/share/aurorae/themes: This directory likely stores themes specifically for the Aurorae window manager, a window manager option within KDE Plasma. Aurorae themes would provide visual customizations for your windows.
SCHEMES_DIR /usr/share/color-schemes: This directory holds color scheme options for your Plasma desktop. These schemes can adjust the overall color palette of your desktop, including application windows and KDE/Qt applications.
PLASMA_DIR /usr/share/plasma/desktoptheme: This is the directory containing Plasma desktop themes themselves. These themes can include changes to the panel, widgets, menus, notifications, and potentially even the application window borders.
LAYOUT_DIR /usr/share/plasma/layout-templates: This directory stores layout templates for your Plasma desktop. These templates define the arrangement of panels, widgets, and other elements on your screen.
LOOKFEEL_DIR /usr/share/plasma/look-and-feel: This directory contains look-and-feel themes for Plasma. Look-and-feel themes seem to be less common these days, but they may have offered broader customizations beyond just visuals, potentially including some functional changes.
KVANTUM_DIR /usr/share/Kvantum: Kvantum is a theming engine used by KDE applications. Themes in this directory would provide visual customizations for those applications.
WALLPAPER_DIR /usr/share/wallpapers: This directory, as the name suggests, stores wallpapers for your Plasma desktop
This configuration is used for Hardening and security
Xorriso in predator-os
The xorriso command is a powerful tool for working with ISO 9660 file system images, commonly used for CDs, DVDs, and Blu-rays. Here is a breakdown of its capabilities:
Creating ISO Images: You can use xorriso to create new ISO images from directory structures on your hard drive. It copies files and folders, preserving attributes like permissions and timestamps, and creates an ISO image compliant with the ISO 9660 standard.
Adding to Existing ISOs: xorriso allows you to add new files and folders to existing ISO images. This is useful for creating multi-session discs or updating existing content.
xorriso -as mkisofs -J -joliet-long -l -iso-level 3 -isohybrid-mbr /usr/lib/ISOLINUX/isohdpfx.bin -partition_offset 16 -V 'V2.5.5' -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot -e boot/grub/efiboot.img -isohybrid-gpt-basdat -no-emul-boot -udf -o /home/eggs/mnt/Predator-OS-V2.5.5_amd64_2023-11-12_2121.iso /home/eggs/mnt/iso/
This command creating a bootable ISO image named Predator-OS-V2.5.5_amd64_2023-11-12_2121.iso likely for a system named Predator OS. Let's break down the command options:
xorriso -as mkisofs: This is the core command using xorriso with the -as mkisofs argument. This tells xorriso to act like the mkisofs command, a common tool for creating ISO images.
-J -joliet-long: These options enable Joliet extensions with long filenames for better compatibility with Windows systems.
-l: This option creates symbolic links within the ISO image, which can be useful for certain file system structures.
-iso-level 3: This sets the ISO image level to 3, which specifies the ISO 9660 standard compliance level.
-isohybrid-mbr /usr/lib/ISOLINUX/isohdpfx.bin -partition_offset 16: These options create a hybrid ISO image with a Master Boot Record (MBR) for compatibility with traditional BIOS systems. The isohdpfx.bin file is included at a 16-sector offset.
-V 'V2.5.5': This sets the volume label of the ISO image to “V2.5.5”.
-b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table: These options seem related to setting up the boot process for the ISO image, possibly using ISOLinux, a common boot loader for Live CDs.
-eltorito-alt-boot -e boot/grub/efiboot.img -isohybrid-gpt-basdat -no-emul-boot: These options create a hybrid ISO image that's also bootable with UEFI systems using the Extensible Firmware Interface (EFI). The efiboot.img file is likely included for this purpose.
-udf: This option enables Universal Disk Format (UDF) support within the ISO image, which allows for features like file sizes exceeding the ISO 9660 limitations.
-o /home/eggs/mnt/Predator-OS-V2.5.5_amd64_2023-11-12_2121.iso /home/eggs/mnt/iso/: These options specify the output filename (Predator-OS-V2.5.5_amd64_2023-11-12_2121.iso) and the source directory (/home/eggs/mnt/iso/) for the ISO creation process.
Mksquashfs in predator-os
The mksquashfs command is a tool used to create SquashFS filesystem images. SquashFS is a compressed, read-only file system format commonly used in various Linux environments. Here is a breakdown of what mksquashfs does:
Creating SquashFS Images: Its primary function is to create SquashFS filesystem images from a directory structure. You specify the source directory containing the files and folders you want to include in the image, and mksquashfs compresses and packages them into a single SquashFS file.
Compression: SquashFS utilizes compression techniques to reduce the size of the file system image. This makes it ideal for situations where storage space is limited, such as embedded systems or live CDs.
Read-Only Format: SquashFS is a read-only file system format. This means you cannot modify files within the SquashFS image once it is created. It is intended for scenarios where data integrity is crucial, or where writes are not necessary (like bootable media).
Customization Options: mksquashfs offers various options for customizing the creation process. You can specify the compression algorithm (e.g., gzip, zstd), block size, exclude specific files or directories, and set file permissions within the SquashFS image.
mksquashfs squashfs-root/ filesystem.squashfs -no-recovery -always-use-fragments -b 1M -no-duplicates -comp zstd -Xcompression-level 22
This command is creating a compressed SquashFS filesystem image named filesystem.squashfs using the mksquashfs tool. Let's break down the options used:
mksquashfs squashfs-root/ filesystem.squashfs: This specifies the source directory (squashfs-root/) containing the files and folders to be included in the SquashFS image. The output filename for the generated image is filesystem.squashfs.
-no-recovery: This option removes the recovery information from the SquashFS image. Recovery information can be helpful for debugging purposes but increases the image size.
-always-use-fragments: This instructs mksquashfs to always use fragment blocks, even for small files. Fragmentation can potentially reduce wasted space in the image, but it might affect performance in some scenarios.
-b 1M: This sets the block size for the SquashFS image to 1 megabyte (1M). The block size determines how data is grouped within the image. A larger block size can improve compression but might lead to some internal fragmentation.
-no-duplicates: This option tells mksquashfs to avoid storing duplicate files within the image. If there are identical files in the source directory, only one copy will be included in the final image, saving space.
-comp zstd: This specifies the compression algorithm to be used. In this case, zstd is chosen, which is a modern and efficient compression algorithm often preferred over the traditional gzip.
-Xcompression-level 22: This option sets the compression level for the zstd algorithm. The value 22 specifies a high compression level, which will result in a smaller image size but might take longer to create.
This configuration is used for Hardening and tuning performance and anonymity
Kernel parameters
General System Performance:
kernel.timer_freq
vm.dirty_background_ratio
vm.dirty_ratio
vm.swappiness
vm.vfs_cache_pressure
Networking:
net.ipv4.tcp_window_scaling
net.ipv4.tcp_tw_reuse
net.core.rmem_max
net.core.wmem_max
net.core.netdev_max_backlog
net.ipv4.tcp_rmem
net.ipv4.tcp_wmem
net.core.default_qdisc
net.ipv4.tcp_congestion_control
net.core.rmem_default
net.core.wmem_default
net.ipv6.conf.all.disable_ipv6 (if set to 1, disables IPv6)
net.ipv4.route.flush
net.ipv4.route.max_size
net.ipv4.route.gc_timeout
net.ipv4.conf.all.forwarding (controls IP forwarding)
net.ipv4.conf.all.rp_filter
net.ipv4.route.min_adv_mss
net.ipv4.tcp_low_latency
net.ipv4.tcp_early_retrans
net.ipv4.tcp_mtu_probing
net.ipv4.tcp_slow_start_after_idle
net.core.wmem_max
net.core.rmem_default
net.core.wmem_default
net.ipv4.icmp_echo_ignore_all (disables responding to ICMP echo requests)
net.ipv4.icmp_echo_ignore_broadcasts (ignores ICMP echo broadcasts)
net.ipv4.tcp_syncookies (enables SYN cookies for DoS attack prevention)
net.ipv4.conf.all.log_martians (logs suspicious packets)
net.ipv4.tcp_max_syn_backlog
net.ipv4.tcp_synack_retries
net.ipv4.tcp_syn_retries
net.core.busy_poll
net.core.busy_read
net.ipv4.tcp_rfc1337
net.ipv4.tcp_timestamps
net.ipv6.conf.all.forwarding (controls IPv6 forwarding)
Memory Management:
vm.overcommit_memory
fs.aio-max-nr
vm.dirty_background_bytes
vm.dirty_bytes
vm.max_map_count
kernel.msgmax
kernel.msgmnb
kernel.shmmax
kernel.shmall
vm.compact_memory
vm.drop_caches
vm.min_free_kbytes
vm.mmap_rnd_bits
vm.mmap_rnd_compat_bits
Security:
kernel.printk (controls kernel message logging)
kernel.softlockup_panic
kernel.panic_on_oops
kernel.panic
kernel.unknown_nmi_panic
kernel.watchdog_thresh
net.ipv4.conf.all.accept_redirects (disables accepting redirects)
net.ipv4.conf.default.accept_redirects (disables accepting redirects)
net.ipv4.conf.all.secure_redirects (disables secure redirects)
net.ipv4.conf.default.secure_redirects (disables secure redirects)
net.ipv6.conf.all.accept_redirects (disables accepting redirects)
net.ipv6.conf.default.accept_redirects (disables accepting redirects)
net.ipv4.conf.all.send_redirects (disables sending redirects)
net.ipv4.icmp_echo_ignore_all (disables responding to ICMP echo requests)
net.ipv4.icmp_echo_ignore_broadcasts (ignores ICMP echo broadcasts)
vm.dirty_expire_centisecs (sets the time to wait before writing dirty pages)
vm.dirty_writeback_centisecs (sets the interval for writing dirty pages)
net.ipv4.tcp_syncookies (enables SYN cookies for DoS attack prevention)
net.ipv4.conf.all.log_martians (logs suspicious packets)
net.ipv4.tcp_max_syn_backlog (maximum number of queued SYN packets)
net.ipv4.tcp_synack_retries (number of retries for SYN-ACK packets)
net.ipv4.tcp_syn_retries (number of retries for SYN packets)
fs.protected_symlinks (protects symbolic links from deletion)
fs.protected_hardlinks (protects hard links from deletion)
fs.protected_fifos (protects FIFOs from deletion)
fs.protected_regular (protects regular files from deletion)
fs.suid_dumpable (disables core dumping for SUID files)
net.ipv4.conf.default.log_martians (logs suspicious packets on the default interface)
net.ipv4.icmp_ignore_bogus_error_responses (ignores bogus ICMP error responses)
net.ipv6.conf.all.accept_ra (disables accepting Router Advertisements)
net.ipv6.conf.default.accept_ra (disables accepting Router Advertisements)
net.ipv6.conf.all.use_tempaddr (controls the use of temporary IPv6 addresses)
net.ipv6.conf.default.use_tempaddr (controls the use of temporary IPv6 addresses)
fs.pipe-max-size (sets the maximum size of pipes)
kernel.unprivileged_bpf_disabled (disables unprivileged eBPF access)
net.core.bpf_jit_harden (enables BPF JIT hardening)
dev.tty.ldisc_autoload (disables automatic loading of line disciplines)
vm.unprivileged_userfaultfd (disables unprivileged userfaultfd)
kernel.kexec_load_disabled (disables kexec loading)
Other:
net.core.busy_poll (tuning for busy-polling)
net.core.busy_read (tuning for busy-reading)
net.ipv4.tcp_rfc1337 (enables TCP timestamps)
net.ipv4.tcp_timestamps (controls TCP timestamps)
net.ipv6.conf.all.forwarding (controls IPv6 forwarding)
kernel.core_pattern (sets the pattern for core dumps)
Kernel Self Protection (KSPP):
kernel.kptr_restrict (restricts kernel address exposure)
kernel.dmesg_restrict (restricts kernel memory address exposure via dmesg)
kernel.perf_event_paranoid (controls access to performance events)
kernel.kexec_load_disabled (disables kexec loading)
kernel.yama.ptrace_scope (restricts ptrace capabilities)
user.max_user_namespaces (disables User Namespaces)
kernel.unprivileged_bpf_disabled (disables unprivileged eBPF access)
net.core.bpf_jit_harden (enables BPF JIT hardening)
Networking:
net.ipv4.conf.all.send_redirects (disables sending redirects)
net.ipv6.conf.all.forwarding (disables IPv6 forwarding)
Memory Management:
vm.mmap_rnd_bits (adds randomness to userspace ASLR)
Description of kernel parameters
Here is a description of the provided kernel parameters related to General System Performance:
1. kernel.timer_freq
Function: This parameter controls the frequency of the system timer interrupt. A higher frequency means more frequent timer ticks, potentially leading to higher precision for timing-sensitive tasks but also causing more overhead.
Impact:
Higher values: Improve timing precision but increase CPU usage.
Lower values: Reduce CPU usage but decrease timing precision.
Recommendation: The optimal value depends on your specific hardware and workload. Common values range from 100 to 1000 Hz (ticks per second).
2. vm.dirty_background_ratio
Function: This parameter sets the percentage of memory that the kernel can write back to disk asynchronously in the background. When dirty pages (modified pages) reach this threshold, the kernel starts writing them back in the background.
Impact:
Higher values: Delay disk writes, potentially improving performance but increasing the risk of data loss if the system crashes before writes complete.
Lower values: More frequent disk writes, potentially reducing performance but improving data integrity.
Recommendation: The optimal value depends on your workload's write patterns and your tolerance for data loss. A common recommendation is between 10 and 20.
3. vm.dirty_ratio
Function: This parameter is similar to vm.dirty_background_ratio but sets a hard threshold. Once the dirty memory reaches this percentage, the kernel forces synchronous writeback, potentially stalling processes until the writeback completes.
Impact:
Higher values: Similar to higher vm.dirty_background_ratio, delays writeback but with a guaranteed write at this threshold.
Lower values: More frequent synchronous writeback, potentially impacting performance but ensuring data integrity closer to the modification time.
Recommendation: This value should typically be set slightly higher than vm.dirty_background_ratio to provide a buffer before synchronous writeback becomes necessary. A common recommendation is 5 points higher than vm.dirty_background_ratio.
4. vm.swappiness
Function: This parameter controls how aggressively the kernel uses swap space. Swap space is disk space used as an extension of RAM. A higher value indicates the kernel is more likely to swap out inactive memory pages to free up physical RAM.
Impact:
Higher values: More frequent swapping, potentially impacting performance but freeing up physical RAM for active processes.
Lower values: Less frequent swapping, potentially improving performance for memory-intensive tasks but limiting available RAM for other processes.
Recommendation: The optimal value depends on the amount of physical RAM available and your workload's memory usage patterns. A common recommendation for systems with sufficient RAM (4GB+) is 10 or lower.
5. vm.vfs_cache_pressure
Function: This parameter controls how aggressively the kernel reclaims memory used by the virtual filesystem (VFS) cache. The VFS cache stores recently accessed file data for faster retrieval.
Impact:
Higher values: More aggressive cache invalidation, potentially freeing up memory for other processes but increasing disk reads.
Lower values: Larger VFS cache, potentially improving performance for frequently accessed files but limiting memory available for other uses.
Recommendation: The optimal value depends on your workload's file access patterns and available RAM. A common recommendation is between 50 and 100.
TCP Window Scaling (net.ipv4.tcp_window_scaling):
This parameter controls whether TCP window scaling is enabled. Window scaling allows for larger receive and send windows, improving data transfer efficiency for connections with high bandwidth-delay product.
Enabled (1): Improves performance for high-bandwidth connections.
Disabled (0): Limits window size, potentially impacting performance on high-bandwidth connections.
TCP Time Wait Reuse (net.ipv4.tcp_tw_reuse):
This parameter controls whether the kernel can reuse sockets in the TIME_WAIT state for new connections. This can improve performance by avoiding the overhead of creating new sockets.
Enabled (1): Allows reuse of TIME_WAIT sockets, potentially improving performance.
Disabled (0): Disables reuse, following the standard behavior of waiting for the connection to fully close.
Socket Buffer Sizes (net.core.rmem_max, net.core.wmem_max, net.ipv4.tcp_rmem, net.ipv4.tcp_wmem, net.core.rmem_default, net.core.wmem_default):
These parameters define the maximum and default sizes (in bytes) of receive (rmem) and send (wmem) buffers for TCP sockets.
net.core.rmem_max/wmem_max: Set the global maximum receive/send buffer size for all sockets.
net.ipv4.tcp_rmem/wmem: Set the maximum receive/send buffer size specifically for TCP sockets.
net.core.rmem_default/wmem_default: Set the default receive/send buffer size for new sockets.
Increasing buffer sizes can improve performance for high-bandwidth connections, but using excessively large buffers can waste memory.
Network Device Backlog (net.core.netdev_max_backlog):
This parameter defines the maximum number of packets that can be queued for a network device before the kernel starts dropping packets.
A higher value allows the queue to absorb temporary bursts of incoming packets, but using an excessively large value can lead to packet delays.
TCP Congestion Control (net.ipv4.tcp_congestion_control):
This parameter specifies the TCP congestion control algorithm used. The default option (often “bbr”) controls the rate at which data is sent to avoid network congestion. Different algorithms may be better suited for specific network conditions.
IPv6 Disabling (net.ipv6.conf.all.disable_ipv6):
Setting this parameter to 1 disables IPv6 support on the system.
Routing:
net.ipv4.route.flush: Forces the kernel to flush the routing table, potentially useful after making configuration changes.
net.ipv4.route.max_size: Sets the maximum size of the routing table.
net.ipv4.route.gc_timeout: Defines the time (in seconds) after which unused entries in the routing table are garbage collected.
IP Forwarding (net.ipv4.conf.all.forwarding):
This parameter controls whether the system acts as an IP router, forwarding packets between networks.
Enabled (1): Enables IP forwarding.
Disabled (0): Disables IP forwarding.
Reverse Path Filtering (net.ipv4.conf.all.rp_filter):
This parameter controls whether the kernel performs Reverse Path Filtering (RPF). RPF ensures that incoming packets originate from a valid source on the network.
Enabled (1): Enables RPF for additional security.
Disabled (0): Disables RPF.
Minimum Advertised MSS (net.ipv4.route.min_adv_mss):
This parameter sets the minimum Maximum Segment Size (MSS) advertised by the system during TCP connections. MSS defines the largest block of data a sender can transmit in a single TCP segment.
TCP Performance Optimizations (net.ipv4.tcp_low_latency, net.ipv4.tcp_early_retrans, net.ipv4.tcp_mtu_probing, net.ipv4.tcp_slow_start_after_idle):
These parameters enable various TCP optimizations aimed at improving performance for low-latency connections or after periods of inactivity. They may not be suitable for all network environments.
net.ipv4.icmp_echo_ignore_all (1): Disables responding to all ICMP echo requests (pings).
net.ipv4.icmp_echo_ignore_broadcasts (1): Ignores ICMP echo requests sent to broadcast addresses.
SYN Cookies (net.ipv4.tcp_syncookies):
This parameter controls whether the system uses SYN cookies to defend against SYN flood Denial-of-Service (DoS) attacks. When the connection queue is full, SYN cookies are sent instead of SYN-ACK packets, allowing legitimate connections to proceed.
Enabled (1): Enables SYN cookies for DoS protection.
Disabled (0): Disables SYN cookies, potentially making the system more vulnerable to DoS attacks.
Logging Suspicious Packets (net.ipv4.conf.all.log_martians):
This parameter enables logging of suspicious packets that might indicate routing problems or spoofing attempts.
TCP Connection Backlog (net.ipv4.tcp_max_syn_backlog):
This parameter sets the maximum number of queued SYN packets waiting for a response from the client.
TCP Retries (net.ipv4.tcp_synack_retries, net.ipv4.tcp_syn_retries):
These parameters define the number of retries for SYN-ACK packets (server response to client SYN) and SYN packets (client initiating connection) before the connection attempt is considered failed.
Busy Polling and Reading (net.core.busy_poll, net.core.busy_read):
These parameters control a performance optimization that reduces context switching overhead for network I/O by keeping the CPU busy with polling operations. They may not be beneficial for all workloads and can increase CPU usage.
TCP Timestamps (net.ipv4.tcp_rfc1337, net.ipv4.tcp_timestamps):
These parameters control whether TCP timestamps are enabled. Timestamps can be used for improved timing and retransmission calculations but may add some overhead.
net.ipv4.tcp_rfc1337 (enabled by default): Enables timestamps according to RFC 1337.
net.ipv4.tcp_timestamps: May offer more control over specific timestamping behavior.
Overcommit Memory (vm.overcommit_memory):
This parameter controls how aggressively the kernel allows memory allocation requests to proceed even if insufficient physical RAM is available.
Values:
0 (Strict): Prevents memory allocation exceeding available physical RAM.
1 (Soft Limit): Allows allocation to exceed physical RAM but may trigger swapping or process termination if memory becomes heavily contended.
2 (Always): Allows unlimited memory allocation regardless of physical RAM, relying heavily on swapping.
Asynchronous I/O Max Requests (fs.aio-max-nr):
This parameter sets the maximum number of outstanding asynchronous I/O (AIO) requests allowed per process. AIO allows processes to initiate I/O operations without blocking.
A higher value allows more concurrent AIO requests but may increase memory usage.
Dirty Memory Background Threshold (vm.dirty_background_bytes):
This parameter works similarly to vm.dirty_background_ratio but specifies a threshold in bytes instead of a percentage. When the amount of dirty memory (modified pages) reaches this value, the kernel starts writing them back to disk in the background.
A higher value delays disk writes, potentially improving performance but increasing the risk of data loss if the system crashes before writes complete.
Total Dirty Memory (vm.dirty_bytes):
This parameter reflects the total amount of dirty memory (modified pages) currently in the system.
Maximum Memory Mappings (vm.max_map_count):
This parameter sets the maximum number of memory mappings allowed per process. A memory mapping establishes a connection between a process's virtual address space and a physical memory region (file or device).
A higher value allows more memory mappings but may increase memory management overhead.
Kernel Message Limits (kernel.msgmax, kernel.msgmnb, kernel.shmmax, kernel.shmall):
These parameters define limits for kernel message queues and shared memory segments used for inter-process communication (IPC).
kernel.msgmax: Maximum size (in bytes) of a message in a message queue.
kernel.msgmnb: Minimum number of bytes that must be in a message queue to be read.
kernel.shmmax: Maximum size (in bytes) of a shared memory segment.
kernel.shmall: Minimum number of pages a shared memory segment can occupy.
Increasing these values allows for larger message queues and shared memory segments but can consume more memory.
Memory Compaction (vm.compact_memory):
This parameter controls kernel behavior regarding memory compaction. Compaction involves rearranging memory pages to reduce fragmentation and potentially improve memory utilization.
Values:
0 (Disabled): Disables memory compaction.
1 (Automatic): Enables automatic compaction triggered under specific conditions.
>= 2 (Forced): Forces compaction at regular intervals (higher values indicate shorter intervals).
Dropping Memory Caches (vm.drop_caches):
This parameter allows you to manually trigger the dropping of various memory caches (page cache, inode cache, etc.) to free up memory.
Values:
1: Drop page cache.
2: Drop inode cache.
3: Drop all caches (page, inode, dentry).
Minimum Free Memory (vm.min_free_kbytes):
This parameter sets the minimum amount of free memory (in kilobytes) that the kernel tries to maintain. The kernel may reclaim memory from processes or swap cache to meet this threshold.
Memory Mapping Randomization (vm.mmap_rnd_bits, vm.mmap_rnd_compat_bits):
These parameters control the randomization applied to virtual memory addresses for memory mappings. Randomization helps mitigate certain security vulnerabilities.
vm.mmap_rnd_bits: Controls the number of random bits used in the randomization process.
vm.mmap_rnd_compat_bits: Sets the minimum number of random bits used for compatibility with older systems.
Higher values provide stronger randomization but may have a slight performance impact.
Security Kernel Parameters:
Logging:
kernel.printk: This parameter controls the level of kernel message logging. Higher values result in more verbose logs, which can be helpful for debugging but also fill up disk space faster.
Panics:
kernel.softlockup_panic: This parameter determines whether the system panics (halts) when a soft lockup (a prolonged stall due to contention for resources) is detected.
kernel.panic_on_oops: This parameter controls whether the system panics on encountering an “OOPS” (kernel error).
kernel.panic: This parameter defines the behavior after a system panic. Valid options include rebooting, halting, or entering a kexec shell (if configured).
kernel.unknown_nmi_panic: This parameter determines whether the system panics upon encountering an unknown Non-Maskable Interrupt (NMI), a critical hardware interrupt.
Watchdog:
kernel.watchdog_thresh: This parameter sets the watchdog timer threshold in seconds. If the kernel doesn't heartbeat to the watchdog within this time, the watchdog might trigger a system reset.
Redirects:
net.ipv4.conf.all.accept_redirects (and similar parameters for default interface and IPv6): These parameters control whether the system accepts ICMP redirect messages. Accepting redirects can be exploited to redirect traffic to malicious destinations. Disabling them (set to 0) is generally recommended for security.
net.ipv4.conf.all.secure_redirects (and similar parameters for default interface and IPv6): These parameters control whether the system accepts secure redirects (redirects with a specific flag set). Secure redirects aim to mitigate the risk of redirect exploitation, but they may not be universally supported. Disabling them (set to 0) might be necessary for compatibility with some networks.
Note: Disabling redirects might affect your ability to automatically switch to alternative network paths if the primary path becomes unavailable.
net.ipv4.conf.all.send_redirects: This parameter controls whether the system sends ICMP redirect messages to other hosts. Sending redirects can potentially be used to influence routing decisions on other machines. Disabling it (set to 0) might be a security best practice.
Networking:
net.ipv4.icmp_echo_ignore_all: Disables responding to all ICMP echo requests (pings). This can be useful to hide a system from basic network scans but may also make troubleshooting more difficult.
net.ipv4.icmp_echo_ignore_broadcasts: Ignores ICMP echo requests sent to broadcast addresses. This can help reduce network traffic from broadcast pings.
net.ipv4.tcp_syncookies: Enables SYN cookies to defend against SYN flood Denial-of-Service (DoS) attacks. When the connection queue is full, SYN cookies are sent instead of SYN-ACK packets, allowing legitimate connections to proceed.
net.ipv4.conf.all.log_martians: Enables logging of suspicious packets that might indicate routing problems or spoofing attempts.
net.ipv4.tcp_max_syn_backlog: Sets the maximum number of queued SYN packets waiting for a response from the client.
net.ipv4.tcp_synack_retries: Defines the number of retries for SYN-ACK packets (server response to client SYN) before the connection attempt is considered failed.
net.ipv4.tcp_syn_retries: Defines the number of retries for SYN packets (client initiating connection) before the connection attempt is considered failed.
Memory Management:
vm.dirty_expire_centisecs: Sets the time (in centiseconds) to wait before writing dirty pages (modified pages) back to disk. A higher value delays writeback, potentially improving performance but increasing the risk of data loss if the system crashes before writes complete.
vm.dirty_writeback_centisecs: Sets the interval (in centiseconds) at which the kernel writes dirty pages back to disk in the background. This parameter works in conjunction with vm.dirty_expire_centisecs to control writeback behavior.
Security:
fs.protected_symlinks (and similar parameters): These parameters control whether the system allows deleting specific file types: symbolic links, hard links, FIFOs (named pipes), and regular files. Enabling protection (setting to 1) prevents accidental or malicious deletion of these files.
fs.suid_dumpable: Disables core dumping (creating a memory snapshot) for SUID (Set User-ID) files. SUID files run with the permissions of the owner, and core dumps could potentially reveal sensitive information. Disabling dumps can enhance security but might limit debugging capabilities.
Networking:
net.ipv4.conf.default.log_martians: This parameter specifically controls logging of suspicious packets on the default network interface. It complements net.ipv4.conf.all.log_martians which enables logging for all interfaces.
net.ipv6.conf.all.accept_ra (and similar parameter for default interface): These parameters control whether the system accepts Router Advertisements (RAs) for IPv6. RAs provide configuration information to IPv6 clients, but accepting them from untrusted sources can be risky. Disabling them (set to 0) might be necessary for security on specific networks.
net.ipv6.conf.all.use_tempaddr (and similar parameter for default interface): These parameters control the use of temporary IPv6 addresses. Temporary addresses are automatically generated for outbound connections and can improve privacy. Disabling them (set to 0) might be required for some network configurations.
Security:
net.ipv4.icmp_ignore_bogus_error_responses: This parameter controls whether the system ignores bogus ICMP error responses. Bogus responses can be used in denial-of-service attacks.
kernel.unprivileged_bpf_eBPF_disabled: This parameter disables unprivileged eBPF (eXtended Berkeley Packet Filter) access. eBPF allows powerful in-kernel programs, and restricting access can enhance security.
net.core.bpf_jit_harden: This parameter enables BPF Just-In-Time (JIT) hardening. JIT compilation can improve performance but might introduce security vulnerabilities. Hardening mitigates these risks.
dev.tty.ldisc_autoload: This parameter disables automatic loading of line disciplines for terminal devices (like /dev/ttyS0). Line disciplines handle character processing for terminals, and disabling auto-loading can improve security by preventing unexpected behavior.
vm.unprivileged_userfaultfd: This parameter disables unprivileged userfaultfd access. Userfaultfd allows user-space applications to handle page faults more efficiently. Disabling access for unprivileged users can enhance security.
kernel.kexec_load_disabled: This parameter disables kexec loading. Kexec allows booting a new kernel from the running kernel. Disabling it can prevent potential security exploits.
fs.pipe-max-size: This parameter sets the maximum size (in bytes) of pipes used for inter-process communication. A larger size allows for transferring bigger data chunks, but an excessively large value might waste memory.
These parameters you provided all fall under the category of Kernel Self Protection (KSPP), a security feature set within the Linux kernel that aims to harden the kernel itself against potential exploits. Here is a detailed explanation of each:
1. kernel.unprivileged_bpf_disabled (disables unprivileged eBPF access):
Function: This parameter disables the ability for unprivileged users to run eBPF programs in the kernel. eBPF (eXtended Berkeley Packet Filter) is a powerful technology that allows users to write in-kernel programs for various purposes like network filtering and system monitoring. However, unprivileged access can be risky as malicious programs could potentially exploit vulnerabilities in the kernel.
Impact:
Enabled (0): Allows unprivileged users to run eBPF programs, potentially useful for customization but increasing the attack surface.
Disabled (1): Disables unprivileged eBPF access, enhancing security by limiting potential exploit vectors. (This is the recommended setting for most systems.)
2. net.core.bpf_jit_harden (enables BPF JIT hardening):
Function: This parameter enables Just-In-Time (JIT) hardening for eBPF programs. JIT compilation translates bytecode into machine code for faster execution. However, it can introduce security vulnerabilities if not properly hardened.
Impact:
Enabled (1): Enables BPF JIT hardening, mitigating potential security risks associated with JIT compilation. (This is the recommended setting for most systems.)
Disabled (0): Disables BPF JIT hardening, potentially improving performance but increasing the risk of security vulnerabilities.
3. dev.tty.ldisc_autoload (disables automatic loading of line disciplines):
Function: This parameter disables the automatic loading of line disciplines for terminal devices (like /dev/ttyS0). Line disciplines handle character processing for these devices, translating raw keystrokes into usable characters. Disabling auto-loading prevents unexpected behavior or potential vulnerabilities from untrusted line disciplines.
Impact:
Enabled (0): Allows automatic loading of line disciplines, which is the default behavior for most systems.
Disabled (1): Disables automatic loading, requiring manual configuration of line disciplines if needed. This can enhance security by preventing potential exploits through unexpected line discipline behavior. (Consider this for systems with high security requirements or where you want more control over terminal behavior.)
4. vm.unprivileged_userfaultfd (disables unprivileged userfaultfd):
Function: This parameter disables unprivileged userfaultfd access. Userfaultfd is a system call that allows user-space applications to handle page faults (memory access errors) more efficiently. However, unprivileged access could be exploited to bypass security measures.
Impact:
Enabled (0): Allows unprivileged userfaultfd access, potentially improving application performance for handling page faults.
Disabled (1): Disables unprivileged userfaultfd access, enhancing security by limiting potential exploitation methods. (This is the recommended setting for most systems.)
5. kernel.kexec_load_disabled (disables kexec loading):
Function: This parameter disables the ability to load a new kernel image using the kexec system call. Kexec allows booting a new kernel from the running kernel, which can be useful for upgrades or troubleshooting. However, it can also be exploited to introduce malicious code.
Impact:
Enabled (0): Allows loading a new kernel with kexec, which is the default behavior.
Disabled (1): Disables kexec loading, enhancing security by preventing potential exploitation attempts. (Consider this for systems with high security requirements where unauthorized kernel loading needs to be prevented.)
Kernel Self Protection (KSPP) Parameters:
KSPP is a set of features within the Linux kernel that aim to harden the kernel itself against potential exploits. Here is a breakdown of the provided KSPP parameters and their impact on security:
1. kernel.kptr_restrict (restricts kernel address exposure):
Function: This parameter controls the exposure of kernel memory addresses through various interfaces like /proc or kernel logs. Restricting access can prevent attackers from using leaked addresses to craft exploits.
Impact:
Lower values (0): Allow unrestricted exposure of kernel addresses, potentially useful for debugging but increasing the attack surface.
Higher values (1 or 2): Restrict exposure, making it more difficult for attackers to exploit leaked addresses. (This is the recommended setting for most systems.)
2. kernel.dmesg_restrict (restricts kernel memory address exposure via dmesg):
Function: This parameter specifically controls exposure of kernel memory addresses through the dmesg command, which displays kernel log messages. Restricting them can prevent attackers from gleaning sensitive information from logs.
Impact:
Enabled (0): Allows unrestricted exposure of kernel addresses in dmesg output.
Disabled (1): Restricts exposure, potentially masking some log information but enhancing security. (This is a good security practice, especially for production systems.)
3. kernel.perf_event_paranoid (controls access to performance events):
Function: This parameter controls access to hardware performance events exposed by the kernel. These events can be used for profiling and monitoring, but allowing unrestricted access could be exploited for malicious purposes.
Impact:
Lower values (0): Allow unrestricted access to performance events.
Higher values (1 or 2): Restrict access, requiring additional privileges or specific configurations for utilization. (Consider a higher value if performance monitoring isn't a critical need for your system.)
4. kernel.kexec_load_disabled (already discussed previously):
Disables the ability to load a new kernel image using kexec. This prevents potential exploitation attempts through unauthorized kernel loading.
5. kernel.yama.ptrace_scope (restricts ptrace capabilities):
Function: This parameter controls the capabilities available to the ptrace system call. Ptrace allows attaching to and manipulating running processes. Restricting capabilities can prevent attackers from using ptrace for malicious debugging or code injection.
Impact:
Lower values (0): Allow unrestricted ptrace capabilities.
Higher values (1 or 2): Restrict capabilities, requiring additional privileges or specific configurations for ptrace usage. (Consider a higher value for enhanced security, especially on multi-user systems.)
6. user.max_user_namespaces (disables User Namespaces):
Function: This parameter sets the maximum number of User Namespaces allowed on the system. User Namespaces provide a way to isolate user processes and their resources. While useful for certain scenarios, disabling them (setting to 0) can simplify the security landscape.
Impact:
Positive value: Allows creation of User Namespaces.
0: Disables User Namespaces, potentially improving security by reducing attack vectors but also limiting specific use cases. (Consider disabling if User Namespaces aren't a requirement for your system.)
7. kernel.unprivileged_bpf_disabled (already discussed previously):
Disables the ability for unprivileged users to run eBPF programs in the kernel. This mitigates the risk of exploiting vulnerabilities in eBPF programs.
8. net.core.bpf_jit_harden (already discussed previously):
Enables Just-In-Time (JIT) hardening for eBPF programs, reducing potential security vulnerabilities associated with JIT compilation.
This configuration is used for Tuning performance, hardening and security
Kernel configuration
The provided configuration appears to be for a kernel image, likely from the /boot/config file. Let us break down the parameters and their potential impact:
In Linux systems, the /boot directory typically stores files essential for the boot process, including the kernel image (vmlinuz) and the initial ramdisk (initrd.img).
The file you mentioned, /boot/config-$(uname -r), is likely a compressed configuration file for the currently running kernel. Here is a breakdown of its components:
/boot/: This directory stores boot-related files.
/config-: This prefix likely indicates it is a configuration file.
/$(uname -r): This part uses a command substitution.
uname -r: This command outputs the version of the running kernel (e.g., 5.15.72-0ubuntu1).
$( ): This syntax captures the output of the command and expands it within the filename.
So, the filename essentially becomes something like /boot/config-5.15.72-0ubuntu1 (depending on your actual kernel version). This file likely contains the kernel configuration options used to build the currently running kernel image.
cat /boot/config-$(uname -r)
predator-os kernel configuration
CONFIG_INTEL_SGX_LEGACY_SME=n
CONFIG_AMD_SME=n
CONFIG_TRANSPARENT_MEM_ENCRYPTION=n
CONFIG_X86_MEM_ENCRYPT=n
CONFIG_DISABLE_PRINTK=y
CONFIG_DEBUG_SET_LIBRARY=n
CONFIG_HIGHMEM=y
CONFIG_NO_HZ=n
CONFIG_SMP_OPTIZATIONS=y
CONFIG_PREEMPT_RT=y
CONFIG_CFS_QUOTA_USES_PERCENT=y
CONFIG_IO_URING=y
CONFIG_TCP_FASTOPEN=y
CONFIG_BBR=y
CONFIG_TRANSPARENT_HUGEPAGE=y
CONFIG_SLAB_FREELIST_SLUB_SIZE=y
CONFIG_MEMCG_KMEM=y
CONFIG_COMPACTION=y
CONFIG_TCP_CONGESTION_CONTROL=y
CONFIG_NET_ACT_TFO=y
CONFIG_RPS=y
CONFIG_GRO=y
CONFIG_SCHED_DEADLINE=y
CONFIG_CFS_QUOTA=y
CONFIG_PREEMPT_Voluntary=y
CONFIG_FTRACE=n
CONFIG_BLK_DEV_IO_SCHEDULER=mq-deadline
CONFIG_ELEVATOR_DELAY_TYPE=noop
CONFIG_TRIM_FS=y
CONFIG_NET_ACT_TFO=y
CONFIG_DMA_ALLOCATOR=pcom
CONFIG_BLK_CG_DELAY=y
CONFIG_SLAB_SIZE_KB=8
CONFIG_IRQ_FORCED_REENABLE=y
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
CONFIG_SCHED_DEADLINE=y
CONFIG_NET_FILTER=n
CONFIG_OVERMOUNT_CHECK=n
CONFIG_CRYPTO_DEV_VIRTIO=n
sudo update-initramfs -u $(uname -r)
Description of kernel configuration
Security:
CONFIG_INTEL_SGX_LEGACY_SME=n, CONFIG_AMD_SME=n: These options disable Software Guard Extensions (SGX) and Secure Memory Encryption (SME) for Intel and AMD processors respectively. These technologies can provide additional security features but may also introduce complexity and potential vulnerabilities. Disabling them here might simplify the kernel and potentially improve security.
CONFIG_DISABLE_PRINTK=y: This enables printk disabling, potentially reducing kernel log messages and improving performance but also making troubleshooting more difficult.
CONFIG_FTRACE=n: Disables function tracer, a debugging feature that can impact performance. Disabling it can improve performance but reduces debugging capabilities.
CONFIG_NET_FILTER=n: Disables the netfilter subsystem, which is responsible for packet filtering and firewalls. This significantly weakens security as it allows almost any network traffic. Enabling netfilter (not set in this configuration) is highly recommended for most systems.
Memory Management:
CONFIG_HIGHMEM=y: Enables support for high memory addresses on systems with more than 1GB of physical RAM.
CONFIG_TRANSPARENT_HUGEPAGE=y: Enables Transparent Huge Pages (THP), which can improve performance for memory-intensive workloads by using larger page sizes. However, THP can also lead to memory fragmentation issues in some scenarios.
CONFIG_SLAB_FREELIST_SLUB_SIZE=y: Optimizes memory allocation for kernel objects.
CONFIG_MEMCG_KMEM=y: Enables memory control groups for the kernel, allowing finer-grained control over kernel memory usage.
CONFIG_COMPACTION=y: Enables memory compaction, which can help reduce memory fragmentation and improve performance.
Performance:
CONFIG_NO_HZ=n: Disables tickless mode, where the kernel can delay timer interrupts for performance benefits. Enabling it (not set here) can improve power efficiency on idle systems but might impact real-time tasks.
CONFIG_SMP_OPTIZATIONS=y: Enables optimizations for multi-processor (SMP) systems.
CONFIG_PREEMPT_RT=y: Enables real-time preemption, allowing high-priority tasks to interrupt lower-priority tasks for better responsiveness.
CONFIG_CFS_QUOTA_USES_PERCENT=y: Enables CPU quota accounting based on percentages.
CONFIG_IO_URING=y: Enables IO_uring, a high-performance I/O submission and completion mechanism.
CONFIG_TCP_FASTOPEN=y: Enables TCP Fast Open, which can improve TCP connection establishment time.
CONFIG_BBR=y: Enables the BBR congestion control algorithm for TCP, which can improve performance for certain network conditions.
CONFIG_RPS=y: Enables Receive Packet Steering (RPS), which can distribute network traffic across multiple CPU cores for better performance.
CONFIG_GRO=y: Enables Generic Receive Offload (GRO), which can reduce CPU overhead by processing multiple network packets in a single operation.
CONFIG_SCHED_DEADLINE=y: Enables the deadline scheduling policy, which can be useful for applications with strict timing requirements.
CONFIG_PREEMPT_Voluntary=y: Enables voluntary preemption, allowing tasks to yield the CPU to higher-priority tasks even if not interrupted.
CONFIG_BLK_DEV_IO_SCHEDULER=mq-deadline: Sets the default I/O scheduler for block devices to “mq-deadline”, which prioritizes meeting deadlines for I/O operations.
CONFIG_ELEVATOR_DELAY_TYPE=noop: Disables any delay for the elevator algorithm used for disk I/O scheduling. This can potentially improve performance but might lead to less fair I/O access for different processes.
CONFIG_TRIM_FS=y: Enables the TRIM command for solid-state drives (SSDs), which can improve performance and longevity.
CONFIG_DMA_ALLOCATOR=pcom: Sets the default DMA allocator to “pcom”, which can be a performance-oriented choice.
CONFIG_BLK_CG_DELAY=y: Enables block device I/O chunk group delay, which can potentially improve performance.
CONFIG_SLAB_SIZE_KB=8: Sets the default size for kernel memory allocation blocks to 8KB. This value can be adjusted based on system needs and workload characteristics.
CONFIG_IRQ_FORCED_REENABLE=y: Enables forced re-enabling of IRQs (interrupts) after errors, which can improve system stability.
--CONFIG_CPU_FREQ_
1. CONFIG_CPU_FREQ_GOV_PERFORMANCE=y:
This parameter sets the CPU frequency governor to “performance” mode. The CPU frequency governor controls how the CPU dynamically adjusts its clock speed based on workload and power consumption.
Impact:
Enabled: Prioritizes maximum CPU performance, keeping the CPU at the highest possible clock speed. This can improve performance for compute-intensive tasks but also increases power consumption and heat generation.
2. CONFIG_SCHED_DEADLINE=y (already discussed):
Enables the deadline scheduling policy, which can be useful for applications with strict timing requirements.
3. CONFIG_NET_FILTER=n (already discussed):
Critically Disabling Netfilter: Disables the netfilter subsystem, responsible for packet filtering and firewalls. This significantly weakens security as it allows almost any network traffic. Enabling netfilter (not set in this configuration) is highly recommended for most systems.
4. CONFIG_OVERMOUNT_CHECK=n:
This parameter controls whether the kernel performs an “overmount check” when mounting a filesystem on top of an existing mount point. This check helps prevent accidental data corruption but can add a slight overhead to the mounting process.
Impact:
Enabled (default): Performs the overmount check for additional safety.
Disabled: Skips the check, potentially improving mount speed but also increasing the risk of accidentally overwriting data. (Use with caution, recommended only for trusted environments.)
5. CONFIG_CRYPTO_DEV_VIRTIO=n:
This parameter controls whether the kernel builds support for the virtio crypto device. This device allows offloading cryptographic operations to a virtualized hardware accelerator.
Impact:
Enabled: Builds support for the virtio crypto device, which can improve performance for workloads involving cryptography if a compatible hardware accelerator is available.
Disabled: Does not build support, saving kernel space. Only enable if you specifically need and have the virtio crypto device.
Debian sourcelist
The Debian source list, also referred to as /etc/apt/sources.list or simply “sources.list”, is a crucial configuration file in Debian-based systems like Ubuntu. It specifies the repositories (software sources) that your package manager, typically apt, will use to locate, download, and install software packages.
Here is how it works:
The sources.list file contains lines specifying repositories, each line typically formatted like this:
deb [options] repository_name url distribution release component
Components: These are categories within a repository, such as “main”, “contrib”, “non-free”, etc. They group packages based on their license and availability.
Distribution: This specifies the Debian version (e.g., “bookworm” for Debian 12.5).
URL: This is the web address of the repository server.
Repository Name: This is an optional human-readable name for the repository.
Options (optional): Some options like deb-src can be used to specify repositories for source code packages.
Why is the source list important?
It determines what software packages are available to your system through apt.
Different repositories offer different types of software:
Official repositories: These contain packages that have gone through Debian's testing and packaging process, ensuring stability and compatibility.
Third-party repositories: These offer additional software not included in the official repositories but might require more caution due to potential compatibility or security concerns.
This configuration is used for Tuning performance
##Debian 12.5 bookworm version
deb http://deb.debian.org/debian/ bookworm non-free-firmware non-free contrib main
deb-src http://deb.debian.org/debian/ bookworm non-free-firmware non-free contrib main
deb http://deb.debian.org/debian-security/ bookworm-security non-free-firmware non-free contrib main
deb-src http://deb.debian.org/debian-security/ bookworm-security non-free-firmware non-free contrib main
deb http://deb.debian.org/debian/ bookworm-updates non-free-firmware non-free contrib main
deb-src http://deb.debian.org/debian/ bookworm-updates main contrib non-free non-free-firmware
deb https://deb.debian.org/debian/ bookworm-proposed-updates contrib main non-free non-free-firmware
deb-src https://deb.debian.org/debian/ bookworm-proposed-updates contrib main non-free non-free-firmware
#Debian testing repository
# deb http://deb.debian.org/debian/ bookworm-backports main contrib non-free non-free-firmware
# deb-src http://deb.debian.org/debian/ bookworm-backports main contrib non-free non-free-firmware
#Debian 13 trixie
# deb https://deb.debian.org/debian/ trixie main contrib
# deb http://mirrors.kernel.org/debian/ trixie contrib main
This configuration is used for Tuning performance
Palsma desktop menu
Plasma does not have a built-in menu like GNOME or other desktop environments. Instead, Plasma utilizes a concept called “Kickoff” which integrates various functionalities into a single interface. Here is a breakdown of how you can access applications and features in Plasma:
1. Kickoff Application Launcher:
This is the primary way to launch applications in Plasma. You can typically access it by clicking on the Plasma logo in the bottom left corner (default location) or using a keyboard shortcut (usually Meta key, which is the Windows key on most keyboards).
Kickoff displays a searchable list of applications installed on your system. You can also browse through categorized applications or recently used ones.
2. System Settings and Power Menu:
Clicking on the system tray area (usually the bottom right corner) often provides access to system settings and the power menu. This area might also display icons for frequently accessed applications or system functions.
3. KDE Global Menu:
Applications can optionally integrate with the KDE Global Menu, which appears as a horizontal bar at the top of the screen. This menu displays menus for the currently active application, similar to the traditional application menus in other desktop environments. Not all applications support the Global Menu, but many do.
4. Virtual Desktops:
Plasma allows creating multiple virtual desktops, providing a way to organize your workspace. You can switch between them using keyboard shortcuts or a visual indicator on the panel. Applications can be assigned to specific virtual desktops for better organization.
5. Widgets and Panels:
Plasma allows extensive customization using widgets and panels. You can add widgets like clocks, calendars, weather displays, or custom launchers to the panels for quick access to information and frequently used applications.
Predator-os menu source code
https://github.com/hosseinseilani/
This configuration is used for Tuning performance
Included the collection of bootloaders (PXE network bootloader)
syslinux is a suite of bootloaders, currently supporting DOS FAT and NTFS, filesystems (SYSLINUX), Linux ext2/ext3/ext4, btrfs, and xfs filesystems, (EXTLINUX), PXE network boots (PXELINUX), or ISO 9660 CD-ROMs (ISOLINUX).
Syslinux is a suite of bootloaders: Syslinux isn't a single program, but a collection of different bootloaders designed for various situations.
Bootloaders are small programs that run very early in the startup process of a computer. Their primary task is to locate and load the operating system kernel, which is the core of the operating system.
Syslinux offers different bootloaders depending on the situation:
DOS FAT and NTFS filesystems (SYSLINUX): This bootloader can boot systems from partitions formatted with the FAT or NTFS file systems, which are commonly used by Windows operating systems. However, it can also be used to boot Linux systems stored on such partitions.
Linux ext2/ext3/ext4, btrfs, and xfs filesystems (EXTLINUX): This bootloader is designed specifically for booting Linux systems from partitions formatted with Linux-specific file systems like ext2, ext3, ext4, btrfs, and xfs.
PXE network boots (PXELINUX): This bootloader is used for booting computers over a network. This is particularly useful for environments where local storage is limited or for diskless workstations.
ISO 9660 CD-ROMs (ISOLINUX): This bootloader allows booting systems from bootable CDs or DVDs created with the ISO 9660 format, which is the standard format for optical discs.
This configuration is used for Tuning performance
fix boot the Grub in dual boot installation
We added the :
GRUB_DISABLE_OS_PROBER=“false”
Enabling os-prober allows the GRUB bootloader to detect other operating systems installed on your system. Once your system restarts, the GRUB bootloader should detect other operating systems during the boot process. They will be listed as options in the GRUB menu.
GRUB: GRUB (GRand Unified Bootloader) is a popular bootloader used in many Linux systems. It is responsible for loading the operating system kernel during the boot process.
os-prober: This is a utility program used by GRUB to automatically detect other operating systems installed on the same machine. It scans for boot signatures on different partitions and creates appropriate entries in the GRUB menu.
GRUB_DISABLE_OS_PROBER=“false”: This setting instructs GRUB to enable the os-prober utility. When set to “false”, os-prober will run during the boot process and attempt to detect other operating systems.
Benefits of enabling os-prober:
Convenience: If you have multiple operating systems installed, having them automatically listed in the GRUB menu saves you the trouble of manually configuring entries for each one.
Flexibility: If you add or remove operating systems in the future, os-prober will automatically detect the changes and update the GRUB menu accordingly during subsequent boots.
Things to keep in mind:
While convenient, enabling os-prober might slightly increase the boot time as it takes time to scan for other systems.
os-prober might not always detect all operating systems perfectly. In some cases, you might need to manually configure GRUB entries.
Overall, enabling os-prober is a good practice for most multi-boot systems as it simplifies managing boot entries for different operating systems.
This configuration is used for Tuning performance
Increased d-bus message bus size
Increased the maximum message size for the D-Bus session bus.
The D-Bus message bus size refers to the maximum size of messages that can be sent or received through the D-Bus system, which is a message bus system used for interprocess communication (IPC) on Linux and other operating systems
D-Bus and Message Bus Size:
D-Bus (Desktop Bus): This is a message bus system used for inter-process communication (IPC) between applications on Linux and other Unix-like systems. It allows applications to exchange data and signals with each other in a structured and secure way.
Message Bus Size: D-Bus has a limit on the maximum size of messages that can be sent through the bus. This limit helps to prevent applications from overwhelming the system with large data transfers.
Why Increase the Message Bus Size?
There are a few reasons why someone might want to increase the D-Bus message bus size:
Large Data Transfers: If applications need to exchange large amounts of data through D-Bus (e.g., transferring images, complex configuration data), the default message size might be too small. Increasing the limit allows these applications to function properly.
Specific Use Cases: Some specific use cases, like media playback or scientific computing, might require sending larger messages through D-Bus. Increasing the limit can improve performance in such scenarios.
Potential Downsides:
Security: Larger messages can potentially be exploited by malicious applications to consume more system resources or introduce security vulnerabilities. It is important to only increase the limit if necessary and weigh the potential security risks.
Performance: Very large messages can take longer to transmit and process, impacting overall system performance. It is important to find a balance between message size and efficiency.
Changing the D-Bus Message Bus Size:
The specific method for changing the D-bus message bus size depends on your system configuration and distribution. It is generally done through configuration files like /etc/dbus-1/session.conf or /etc/dbus-1/system.conf.
Important Note: Increasing the D-Bus message bus size should be done with caution and only if absolutely necessary. It is recommended to consult your system documentation or a system administrator before making such changes.
This configuration is used for hardening and security
Changed the password authentication configuration algorithm
Included the password-hashing algorithm, password shadowing, and the 'use_authtok' option for password has changed. The password authentication configuration is set to use SHA-512 hashing.
1. Password Hashing Algorithm:
The configuration has been set to use SHA-512 for password hashing. This is a secure one-way hashing function used to store passwords on Linux systems. When a user enters their password, it is converted into a hash using the chosen algorithm (SHA-512 in this case). The system stores this hash instead of the plain text password. When a user attempts to log in, the entered password is hashed again and compared to the stored hash. If they match, the login is successful.
Using a strong hashing algorithm like SHA-512 makes it much more difficult for attackers to crack passwords even if they gain access to the password file.
2. Password Shadowing:
This is a security technique used in Linux systems to separate password hashes from usernames. Traditionally, password hashes were stored in the same file as usernames (e.g., /etc/passwd). This posed a security risk as anyone with access to this file could see the password hashes.
Shadowing stores password hashes in a separate file (usually /etc/shadow) that is only accessible by the root user. This significantly improves password security.
3. 'use_authtok' Option:
This option is likely related to the use of a separate file for storing authentication tokens. These tokens might be used for additional authentication mechanisms beyond passwords, such as two-factor authentication (2FA).
Enabling use_authtok indicates that the system might be configured to use such tokens along with passwords for enhanced security.
This configuration is used for hardening and security
Changed the password aging policies
Passwords will be expire after 30 days.
Users will need to wait at least one day before changing their passwords.
Users will be notified 7 days before their password expires.
Modified the respective lines in the “/etc/login.defs” file to change the password aging policies according to the specified values.
Password Expiration: Passwords will expire after 30 days. This enforces regular password changes, reducing the risk of compromised passwords being used for an extended period.
Minimum Password Age: Users will need to wait at least one day before changing their passwords. This prevents users from repeatedly changing their password within a short timeframe, which can be inconvenient and potentially introduce typos.
Password Warning: Users will be notified 7 days before their password expires. This gives users ample time to choose a new password before their current one expires and locks them out.
Modifying /etc/login.defs:
The configuration for password aging policies is typically stored in the /etc/login.defs file on Debian systems. This file contains various settings related to user accounts and login behavior. The changes mentioned likely involved modifying specific lines in this file with the desired values (e.g., PASS_MAX_DAYS, PASS_MIN_DAYS, PASS_WARN_AGE).
This configuration is used for hardening and security
Changed the history length policies
The shell will only keep the last 10 commands in the history list. When a new command is entered and the history exceeds the specified limit, the oldest command will be removed from the history.
The shell will only save the last 10 commands in the history file. If the history file already contains more than 10 lines, the oldest commands beyond the limit will be removed from the file.
Limited Shell History:
The shell will only keep the last 10 commands in the history list. This refers to the in-memory list of commands accessible through the up and down arrow keys during the current shell session. This reduces the amount of stored information and potentially improves performance by limiting the size of data retrieved for history navigation.
When a new command is entered and the history exceeds the limit (10 commands), the oldest command will be removed from the list. This ensures that the history list stays within the defined size limit.
Limited History File Size:
The shell will only save the last 10 commands in the history file. This refers to the persistent file (usually ~/.bash_history) that stores the command history across shell sessions. This limits the amount of disk space consumed by the history information.
If the history file already contains more than 10 lines, the oldest commands beyond the limit will be removed from the file. This ensures the history file doesn't grow excessively and only stores the most recent commands.
This configuration is used for hardening and security
Disabled access time updates
Disabling access time updates on system by adding the “noatime” option to the /etc/fstab file. This option can improve performance by preventing the access timestamp of files from being updated every time they are accessed.
Access Time: This is a timestamp associated with a file that indicates the last time the file was accessed (read). The operating system keeps track of these timestamps for various purposes, like file management or recently used files lists.
noatime Option: This is a mount option that can be added to the /etc/fstab file on Linux systems. It instructs the kernel to not update the access time of files every time they are accessed.
Benefits of Disabling Access Time Updates:
Performance Improvement: Frequently updating access times can add a slight overhead to file system operations. Disabling access time updates can improve overall system performance, especially for systems with frequent file accesses.
Reduced Disk Writes: Updating access times involves writing data to the disk. Disabling this reduces disk writes and potentially extends the lifespan of storage devices (like SSDs) that have limited write cycles.
Downsides of Disabling Access Time Updates:
Loss of Information: Access times can be useful for various tasks, such as identifying recently used files or understanding file access patterns. Disabling updates eliminates this information.
Applications Might Be Affected: Some applications might rely on access times for their functionality. Disabling updates could potentially impact their behavior.
This configuration is used for tuning performance
Enabled hardware acceleration
Provided a set of sections for different graphics devices. Each section specifies the device's identifier, driver, and various options related to acceleration, tear-free rendering, and Direct Rendering Infrastructure (DRI) version.
Intel Graphics
Nouveau (NVIDIA open-source driver)
Radeon (AMD open-source driver)
AMDGPU (AMD proprietary driver)
Nvidia
Hardware Acceleration:
This refers to utilizing the capabilities of the graphics processing unit (GPU) to offload graphical processing tasks from the central processing unit (CPU). This can significantly improve the performance of graphics-intensive applications like video playback, games, and 3D rendering.
Configuration Sections:
The provided information likely comes from a configuration file related to graphics drivers (e.g., /etc/X11/xorg.conf). Different sections specify settings for various graphics devices:
Intel Graphics: This section likely configures the driver for integrated graphics cards from Intel.
Nouveau (NVIDIA open-source driver): This section defines settings for the open-source driver for NVIDIA GPUs.
Radeon (AMD open-source driver): This section configures the open-source driver for AMD graphics cards.
AMDGPU (AMD proprietary driver): This section might be for a proprietary driver from AMD that offers more features and performance compared to the open-source driver.
Nvidia: This section likely defines settings for the proprietary NVIDIA driver, offering the most control and features for NVIDIA GPUs.
Options for Acceleration and Rendering:
Within each section, various options are likely specified for:
Acceleration: These options enable or disable hardware acceleration for different graphical operations (e.g., 2D, 3D).
Tear-free Rendering: These options might control technologies like VSync or Triple Buffering to prevent screen tearing during graphical rendering.
DRI Version: DRI (Direct Rendering Infrastructure) is a technology that allows applications to directly access the GPU hardware. The configuration might specify the DRI version supported by the driver.
This configuration is used for tuning performance
Bluetooth Performance tuning
Disable Bluetooth automatic power management
Set Bluetooth HCI snoop log
Enable Bluetooth coexistence mode
Adjust Bluetooth inquiry and pagetimeout
Set Bluetooth bitrate
Disable Bluetooth automatic suspend
Set Bluetooth power output
Adjust Bluetooth idle timeout
Adjust Bluetooth inquiry and page scan type
Enable Bluetooth high-quality audio
Adjust Bluetooth link supervision timeout
Enable Bluetooth extended inquiry response
Set Bluetooth link mode
Adjust Bluetooth inquiry and page scan interval
Adjust Bluetooth inquiry and page scan window
Disable Bluetooth LE scan throttling
Set Bluetooth HCI command timeout
Configure Bluetooth EDR mode
Set Bluetooth idle period
Set Bluetooth inquiry and page scan type
The provided list covers a wide range of Bluetooth performance tuning options. Here is a breakdown of each one and its potential impact:
General Power Management:
Disable Bluetooth automatic power management: This can potentially improve responsiveness by preventing the system from suspending or powering down the Bluetooth adapter to save power. However, it might also increase battery consumption.
Disable Bluetooth automatic suspend: Similar to the above, this keeps the adapter active even when not actively in use, potentially impacting battery life.
Set Bluetooth idle period/timeout: Controls how long the adapter stays idle before entering a low-power state. Adjusting these values can balance responsiveness and power consumption.
Connection Management:
Set Bluetooth inquiry and page scan: These settings control how the device searches for other Bluetooth devices. Adjusting parameters like scan type, interval, and window can optimize discovery time and energy usage.
Adjust Bluetooth link supervision timeout: This defines how often the device checks the connection with a paired device. Lower values improve responsiveness but might increase power usage.
Enable Bluetooth extended inquiry response: This allows including more information in the device advertisement, potentially improving connection compatibility.
Performance and Quality:
Set Bluetooth bitrate: This determines the data transfer speed between Bluetooth devices. Higher bitrates offer faster transfers but consume more power.
Enable Bluetooth high-quality audio: This prioritizes audio quality over power efficiency for Bluetooth audio playback.
Configure Bluetooth EDR mode: Enables Enhanced Data Rate for faster data transfers, but might not be compatible with all devices.
Advanced Options:
Set Bluetooth HCI snoop log: Enables capturing Bluetooth communication data for debugging or troubleshooting connection issues.
Enable Bluetooth coexistence mode: This helps the device coexist with other wireless technologies (like Wi-Fi) that might interfere with Bluetooth signals.
Set Bluetooth power output: Adjusts the transmission power of the Bluetooth adapter. Higher power can improve range but uses more battery.
Disable Bluetooth LE scan throttling: Low Energy (LE) scanning is used by some devices. Disabling throttling might improve scan performance but increase power consumption.
Set Bluetooth HCI command timeout: Defines the maximum time to wait for a response from a Bluetooth command. Adjusting this can be helpful for troubleshooting specific connection issues.
Set Bluetooth link mode: Defines the type of connection established with another device. Options might include sniff mode for low-power connections or inquiry mode for discovery.
Important Considerations:
These options are highly dependent on your specific hardware, software, and usage patterns. Experimenting with different settings might be necessary to find the optimal balance between performance, power consumption, and connection stability.
Modifying some settings might require advanced knowledge or specific tools. It is recommended to consult your system documentation or seek help from experienced users before making significant changes.
This configuration is used for tuning performance
shell performance tuning
Enable shell command completion
Optimize command line completion
Disable shell bell sound
Disable shell session logging
Enable shell arithmetic evaluation
Enable shell process backgrounding
Optimize shell command line editing
Optimize shell startup time
This list focuses on various techniques to improve the performance and efficiency of your shell experience. Let's break down each option:
Shell Features:
Enable shell command completion: This feature automatically suggests possible completions for commands, filenames, and arguments as you type. It can save time and reduce typos.
Optimize command line completion: While enabling completion is helpful, some configurations might be overly complex or slow down the shell. You can optimize completion by customizing the completion scripts for specific commands.
Enable shell arithmetic evaluation: This allows performing simple mathematical operations directly within the shell without needing separate tools like bc. It can be convenient for quick calculations.
Enable shell process backgrounding: This allows running commands in the background so you can continue using the shell while the command executes. It improves multitasking efficiency.
Shell Behavior:
Disable shell bell sound: This eliminates the audible bell sound the shell might generate for certain events (e.g., errors, completion). Disabling it can be a personal preference for a quieter environment.
Disable shell session logging: This prevents the shell from recording your commands and actions to a history file. It can be useful for privacy reasons, but you'll lose access to past commands for reference.
Shell Performance:
Optimize shell startup time: Certain configuration files or scripts executed during shell startup can impact its initial loading time. Optimizing these scripts or removing unnecessary ones can improve startup speed.
Optimize shell command line editing: This involves customizing how you interact with the command line. Techniques like using aliases for frequently used commands or keyboard shortcuts for editing can significantly improve your workflow and effective editing speed.
Overall, these shell performance tuning options can enhance your terminal experience by:
Saving time: Features like completion and backgrounding reduce the time spent typing commands and waiting for their execution.
Improving efficiency: Disabling unnecessary features like the bell sound or logging can streamline your workflow.
Boosting comfort: Optimizing startup time and command line editing offer a more responsive and comfortable experience.
This configuration is used for tuning performance
Block devices performance tuning
Enable DMA for all devices
Set the read-ahead buffer size
Set the I/O scheduler to noop
Enable log compression
The provided options focus on tuning block device performance, which affects how your system interacts with physical storage devices like hard drives and solid-state drives (SSDs). Here is a breakdown of each option and its potential impact:
DMA (Direct Memory Access) Enablement:
Enabling DMA allows the storage device to transfer data directly to and from system memory without involving the CPU. This significantly improves data transfer speeds compared to CPU-driven transfers. On modern systems, DMA is typically enabled by default.
Read-Ahead Buffer Size:
The read-ahead buffer is a temporary storage area in memory used to pre-load data from the disk in anticipation of future reads. Setting an appropriate size can improve performance when frequently accessing sequential data.
Too small: Might lead to frequent disk accesses as data isn't pre-loaded, impacting performance.
Too large: Wastes memory if the anticipated reads don't materialize, potentially impacting performance for other applications.
I/O Scheduler:
The I/O scheduler determines the order in which the system processes read and write requests to block devices. Different schedulers have different algorithms for optimizing performance based on workload.
noop (no-op): This is a simple scheduler with minimal overhead. It might be suitable for workloads with large sequential transfers or predictable access patterns. However, it might not be ideal for mixed workloads with random reads and writes.
Log Compression:
Enabling log compression for the filesystem (if supported) can improve performance by reducing the amount of data written to the disk during journaling operations. Journaling ensures data consistency in case of system crashes.
Benefits: Reduced disk writes can improve write performance and potentially extend disk lifespan (especially for SSDs).
Downsides: Might introduce a slight overhead during compression/decompression or require additional memory.
Important Considerations:
The optimal settings for these options depend on your specific hardware, workload (type of applications used), and usage patterns (e.g., mostly sequential transfers vs. random reads/writes).
Experimenting with different configurations might be necessary to find the best balance between performance and other factors.
Improper configuration could potentially harm performance or data integrity. Consult your system documentation or seek help from experienced users before making significant changes.
This configuration is used for tuning performance
Disabled IRQ balancing for the Ethernet device
Disabling IRQ balancing may impact performance and load balancing
You're absolutely right. Disabling IRQ balancing for the Ethernet device can have both advantages and disadvantages:
Advantages:
Reduced Latency: In some cases, disabling IRQ balancing can reduce latency for network traffic. This might be beneficial for real-time applications like online gaming or high-frequency trading where even small delays can significantly impact performance.
Deterministic Behavior: Disabling IRQ balancing ensures that interrupts from the network device are always handled by the same CPU core. This can be helpful for troubleshooting specific network issues or ensuring consistent behavior for critical network applications.
Disadvantages:
Performance Impact: Modern CPUs with multiple cores are designed to efficiently handle multiple tasks simultaneously. Disabling IRQ balancing prevents the system from distributing network interrupts across available cores, potentially leading to underutilization of CPU resources and reduced overall performance.
Load Imbalance: If network traffic is heavy, disabling IRQ balancing might overload the CPU core handling the interrupts, while other cores remain idle. This creates an imbalance and can negatively impact overall system responsiveness.
Important Considerations:
The decision to disable IRQ balancing for the Ethernet device depends on your specific needs and priorities.
If consistent low latency is crucial for specific applications, disabling balancing might be necessary.
However, for most users, the potential performance benefits of IRQ balancing outweigh the potential latency reduction from disabling it.
Alternatives:
Consider using tools like taskset to pin specific network-related processes to a particular CPU core. This can provide some of the deterministic behavior benefits without completely disabling balancing.
Explore advanced options within the network driver configuration that might allow fine-tuning interrupt handling for optimal performance.
This configuration is used for tuning performance
Included plasma performance setting
Adjust the font rendering settings
Enable subpixel hinting for font rendering
Configure font hinting style
The provided information describes settings related to font rendering optimization in the KDE Plasma desktop environment. Here is a breakdown:
Font Rendering:
This refers to the process of converting digital font information into pixels displayed on your screen. Different techniques can affect the appearance and clarity of text.
Plasma Performance Settings:
KDE Plasma offers various settings to optimize font rendering for performance or quality. The provided options likely refer to such settings within the Plasma configuration.
Adjusting Font Rendering Settings:
The specific options might include:
Enable subpixel hinting: This technique utilizes the subpixels of your display (red, green, blue) to improve the sharpness and clarity of fonts, especially for smaller sizes.
Configure font hinting style: Different hinting styles (e.g., full hinting, light hinting) can be chosen. Each style offers a different balance between sharpness, smoothness, and potential rendering artifacts.
Benefits of Optimization:
Improved Readability: Proper font rendering can make text easier to read, especially on high-resolution displays or for users with visual impairments.
Enhanced Aesthetics: Subpixel hinting can create sharper and more visually appealing fonts, improving the overall user experience.
Potential Performance Gains: Disabling certain hinting features (like full hinting) might lead to slightly faster rendering, but at the cost of visual quality.
Important Considerations:
The optimal font rendering settings depend on your personal preferences, display type (LCD, OLED), and desired balance between quality and performance.
Experimenting with different options can help you find the perfect combination for your needs.
This configuration is used for tuning performance
Disabled all the power option plan
AllowSuspend=no
AllowHibernation=no
AllowSuspendThenHibernate=no
AllowHybridSleep=no
The provided information describes disabling all power saving options in a Linux system. Here is a breakdown:
Power Option Plans: Similar to Windows, Linux systems might offer different power management profiles (sometimes called “power options” or “power plans”) that control how the system behaves regarding sleep, hibernation, and other power-saving features.
Disabled Options:
AllowSuspend=no: This disables the ability to suspend the system to RAM (sleep mode). When the system is idle, it will continue to run at full power.
AllowHibernation=no: This disables the ability to hibernate the system. In hibernation, the system saves its state to disk and then powers off completely. This allows you to resume your work later without losing data, but it takes longer to resume than sleep mode.
AllowSuspendThenHibernate=no: This disables the ability to automatically transition from suspend to hibernate after a period of inactivity.
AllowHybridSleep=no: This disables hybrid sleep, a combination of sleep and hibernation that saves system state to disk but keeps some essential components powered on for a faster resume.
Reasons for Disabling Power Saving:
There are several reasons why someone might disable all power saving options:
Performance: Disabling sleep and hibernation can improve system responsiveness, especially for applications sensitive to any delays. This might be important for tasks like real-time video editing or scientific computing.
Hardware Compatibility: In some cases, power saving features might conflict with specific hardware or drivers, causing instability. Disabling them can ensure system stability.
Server Environments: Servers typically run continuously and don't require power saving features. Disabling them simplifies configuration and reduces the risk of unexpected shutdowns.
Downsides of Disabling Power Saving:
Disabling power saving options can have some drawbacks:
Increased Power Consumption: The system will use more electricity as it won't enter low-power states when idle. This can be a concern for laptops or for users who prioritize energy efficiency.
Faster Hardware Wear: Components like hard drives and fans might experience increased wear and tear due to continuous operation.
Heat Generation: Continuous operation can lead to higher system temperatures, which can affect performance and component lifespan.
This configuration is used for hardening and anonymity
Included nekoray proxy tools
Nekoray - A Proxy Manager:
NekoRay is an open-source, cross-platform application designed to manage proxy configurations on Linux, Windows, and macOS.
It offers a user-friendly interface for creating, editing, and switching between different proxy profiles.
NekoRay supports various proxy types, including SOCKS5, HTTP, Shadowsocks, V2Ray, and more.
Possible Scenarios:
There are a few possibilities for how NekoRay proxy tools might have been included:
System Configuration: The system configuration might have been set up to use NekoRay as the primary tool for managing proxy connections. This could involve installing NekoRay and configuring default proxy settings through the application.
Application-Specific Use: A specific application or script might be utilizing NekoRay to route its network traffic through a proxy server. This could be for privacy reasons, accessing geo-restricted content, or managing network traffic for specific purposes.
Development Environment: If the configuration is related to a development environment, NekoRay might be used to manage proxy connections for testing or debugging purposes. Developers often use proxies to simulate different network conditions or access specific resources during development.
This configuration is used for hardening and anonymity
Included hiddify proxy tools
Hiddify - Proxy and Anti-Filtering Solution
Hiddify is a multi-platform solution that offers proxy functionalities along with features to circumvent internet filtering.
It provides a user-friendly application (Hiddify Next) for managing proxy connections on various operating systems like Windows, macOS, Linux, and mobile platforms (Android, iOS).
Hiddify supports various proxy protocols, including Sing-box, X-ray, TUIC, Hysteria, Reality, Trojan, SSH, etc.
Possible Scenarios:
There are a few possibilities for how Hiddify proxy tools might have been included:
System Configuration: The system configuration might have been set up to use Hiddify as the primary tool for managing proxy connections and potentially bypassing internet filtering restrictions. This could involve installing Hiddify and configuring proxy settings through the application.
Application-Specific Use: A specific application or script might be utilizing Hiddify to route its network traffic through a proxy server. This could be for privacy reasons, accessing geo-restricted content, or bypassing censorship limitations.
Personal Use: Hiddify is often used by individuals in regions with internet filtering to access unrestricted content. Including Hiddify suggests a setup that facilitates such access.
Additional Considerations:
Proxy Server Details: If Hiddify is being used, there might be additional information about the specific proxy server being utilized (address, port, authentication details). It is important to be aware of the source and reputation of the proxy server.
Legality: Bypassing internet filtering restrictions might be illegal in some regions. It is crucial to check the local laws and regulations regarding internet access before using such tools.
Configured Tor and Proxychains for anonymous browsing
The information “Configured Tor and Proxychains for anonymous browsing” indicates a setup aimed at enhancing online anonymity. Here is a breakdown of the components and their roles:
Tor (The Onion Router): This is a free and open-source anonymity network that routes your internet traffic through a distributed network of relays. Each relay peels away a layer of encryption, making it difficult to track the origin of the traffic. Tor is a popular tool for protecting privacy and bypassing censorship restrictions.
Proxychains: This is a command-line tool used to redirect various network applications (like web browsers, email clients) to route their traffic through a proxy server. In this case, the proxy server is likely set to be the Tor network.
Combined Functionality:
By configuring Tor and Proxychains together, the setup achieves the following:
Traffic Anonymization: Proxychains directs all application traffic through the Tor network. This encrypts the traffic and routes it through multiple relays, making it very difficult to trace the user's origin or online activity.
Benefits of this Setup:
Enhanced Privacy: Tor and Proxychains help obscure your online identity and location, making it harder for websites and services to track your browsing activity.
Bypassing Censorship: Tor can be used to access websites or services that might be blocked in your region.
Limitations to Consider:
Performance Impact: Routing traffic through Tor can introduce slower connection speeds due to the nature of the multi-hop relay network.
Not Foolproof: While Tor and Proxychains offer significant anonymity, they are not foolproof. Advanced adversaries with significant resources might still be able to de-anonymize users under certain circumstances.
This configuration is used for hardening and anonymity
Configured i2p Invisible Internet Project
I2P is designed to provide strong anonymity for its users. It achieves this by encrypting and routing traffic through multiple relays, making it challenging to identify the source or destination of the communication.The information describes configuring the Invisible Internet Project (I2P) for anonymous communication. Here is a breakdown:
I2P (Invisible Internet Project):
I2P is a free and open-source decentralized anonymous network. It allows users to communicate anonymously and securely without relying on centralized servers.
Similar to Tor, I2P encrypts traffic and routes it through a network of volunteer-run nodes. These nodes are called “routers” in I2P terminology.
The multi-layered encryption and decentralized nature of I2P make it difficult to track the origin or destination of communication, offering a high degree of anonymity.
Anonymity Through Encryption and Routing:
When using I2P, all traffic is encrypted before entering the network. This encryption disguises the content of the communication, making it unreadable to anyone intercepting it.
The encrypted traffic is then routed through a series of I2P routers. Each router only knows the previous and next router in the path, not the entire route or the source and destination of the traffic.
This “onion-like” routing makes it very difficult for anyone to track the communication back to its source or to identify the intended recipient.
Applications of I2P:
I2P is often used by individuals and organizations seeking to protect their privacy online. This can include journalists, activists, or users in regions with internet censorship.
I2P also facilitates anonymous communication and file sharing within the I2P network itself. Users can access websites, email services, and other applications specifically designed for the I2P network.
Important Considerations:
While I2P offers strong anonymity, it is not foolproof. Advanced adversaries with significant resources might still be able to de-anonymize users under certain circumstances.
I2P can experience slower connection speeds compared to the regular internet due to the multi-hop routing process.
The I2P network relies on volunteer-run routers. The overall performance and availability can vary depending on the network's current state.
This configuration is used for tuning performance
New alias to get downloading in the fastest way possible
$adl is a alias command for:
adl='aria2c -x16 -s16‘
For example:
adl <url>
$wdl is a alias command for:
wdl='wget --limit-rate=0 --tries=16‘
For example:
wdl <url>
The information you provided describes creating aliases for two popular download managers: aria2c and wget. Here is a breakdown:
Aliases for Download Managers:
The provided information defines two aliases, adl and wdl, using the alias command in the shell.
Aliases offer a convenient way to shorten frequently used commands.
adl for aria2c:
The adl alias is a shortcut for the aria2c command with specific options:
-x16: This option sets the number of download threads to 16. This can potentially improve download speed by utilizing multiple connections simultaneously (depending on your internet bandwidth and server configuration).
-s16: This option sets the number of connections per server to 16. Similar to download threads, this can increase download speed under ideal conditions.
wdl for wget:
The wdl alias is a shortcut for the wget command with specific options:
--limit-rate=0: This option removes any bandwidth limitation on the download. Wget typically limits download speed by default. Disabling this can potentially improve speed, but be aware it might overload the server or your internet connection.
--tries=16: This option sets the number of retry attempts to 16 in case of download failures. This can be helpful for downloads prone to interruptions.
This configuration is used for tuning performance
Increased Udev buffer
It affected the ability of udev to handle a large number of device events. Increasing the buffer size may be necessary if you have a system with a high volume of device events, such as in environments with many hot-pluggable devices.
Increasing the udev buffer size can address limitations in handling a large number of device events. Here is a breakdown:
Udev and Device Events:
Udev (User Device) is a critical system service responsible for managing device discovery and configuration in Linux environments.
When a new device is connected, removed, or changes state (e.g., plugged in, unplugged), udev receives an “event” notification from the kernel.
Udev processes these events to identify the device, load appropriate drivers, and create device nodes in the filesystem, making the device usable.
Udev Buffer and Performance:
Udev maintains a buffer to temporarily store device events received from the kernel.
If the buffer is too small and a large number of events occur rapidly (e.g., due to many hot-pluggable devices), the buffer might overflow.
This can lead to udev dropping events, potentially causing issues like missing devices, delayed device availability, or errors during device configuration.
Benefits of Increasing Buffer Size:
Increasing the udev buffer size allows it to handle a larger volume of device events without overflowing.
This can improve the overall responsiveness and reliability of device management, especially in environments with numerous devices or frequent device changes.
Things to Consider:
While increasing the buffer size can be beneficial, it is not always necessary. The optimal size depends on the specific workload and number of devices in your system.
A very large buffer might consume unnecessary memory resources.
It is generally recommended to increase the buffer size only if you encounter issues like missing devices or errors related to udev event handling.
Alternative Approaches:
In some cases, updating the kernel or udev version might include improvements to event handling, potentially eliminating the need for a larger buffer.
Consulting system documentation or seeking help from experienced users can provide guidance on the appropriate buffer size for your specific system configuration.
This configuration is used for hardening and privacy
Disable GPS (Global Positioning System)
For more anonymous and privacy
GPS (Global Positioning System) daemon sockets refer to the communication interfaces used by GPS daemons or services to interact with GPS receivers or GPS-related software applications. These sockets allow the GPS daemon to receive data from the GPS receiver and provide location, time, and other relevant information to the client applications.
The information you provided covers two aspects: disabling GPS for privacy and the role of GPS daemon sockets. Here is a breakdown of both:
Disabling GPS for Privacy:
GPS functionality can be disabled on various devices (smartphones, laptops) to enhance user privacy. Disabling GPS prevents the device from collecting and potentially sharing your location data with applications or services.
Benefits of Disabling GPS:
Increased Privacy: Disabling GPS limits the ability of apps and services to track your movements and location history. This can be beneficial for users concerned about location-based tracking.
Reduced Battery Consumption: GPS can consume battery power. Disabling it can improve battery life, especially if location services are not essential for your usage.
Downsides of Disabling GPS:
Loss of Location-Based Features: Apps that rely on GPS for functionality (e.g., navigation apps, ride-sharing services) will not work properly.
Inaccurate Location Information: Services that personalize content or recommendations based on location might not function accurately.
GPS Daemon Sockets:
Even if you disable GPS functionality, the information describes GPS daemon sockets. These are communication channels that the GPS daemon (a software service that manages GPS hardware) uses to:
Receive data from the GPS receiver about location, time, and other information.
Provide location data to other applications or services that request it.
Understanding Sockets Doesn't Affect Disabling GPS:
Knowing about GPS daemon sockets is not directly related to the decision of disabling GPS. Disabling GPS typically involves system settings that prevent the GPS hardware from functioning and the daemon from receiving any location data.
This configuration is used for hardening and privacy
Disabled the automatic loading of specific kernel modules
dccp: Datagram Congestion Control Protocol
sctp: Stream Control Transmission Protocol
rds: Reliable Datagram Sockets
tipc: Transparent Inter-Process Communication
n-hdlc: Network HDLC protocol
ax25: Amateur Radio AX.25 protocol
netrom: Amateur Radio NET/ROM protocol
x25: X.25 packet-switching protocol
rose: Amateur Radio X.25 PLP (Packet Level Protocol)
decnet: DECnet networking protocol
econet: Acorn Econet protocol
af_802154: IEEE 802.15.4 low-rate wireless personal area network protocol
ipx: IPX (Internetwork Packet Exchange) protocol
appletalk: AppleTalk networking protocol
psnap: IEEE 802.3 SNAP protocol
p8023: Unknown module (as mentioned before, it does not appear to be a standard Linux kernel module)
p8022: Unknown module (as mentioned before, it does not appear to be a standard Linux kernel module)
can: Controller Area Network protocol
atm: Asynchronous Transfer Mode protocol
The information you provided describes disabling the automatic loading of specific kernel modules in a Linux system. Here is a breakdown:
Kernel Modules:
The Linux kernel is the core of the operating system. Kernel modules are pieces of code that can be loaded or unloaded at runtime to extend the kernel's functionality.
This allows for modularity and flexibility, as you can only load the modules you need for specific tasks.
Automatic Loading:
By default, Linux automatically loads certain kernel modules based on system configuration and hardware detection.
Disabled Modules List:
The provided list includes various protocols:
Networking protocols: These protocols (dccp, sctp, rds, tipc, n-hdlc, ax25, netrom, x25, rose, ipx, appletalk, psnap) enable communication over different network types.
Other protocols: decnet (DECnet networking), econet (Acorn Econet protocol), af_802154 (IEEE 802.15.4), can (Controller Area Network), and atm (Asynchronous Transfer Mode) serve various purposes.
Unknown modules: p8023 and p8022 are not recognized as standard Linux kernel modules.
Reasons for Disabling Automatic Loading:
Unused Functionality: If you do not use specific network protocols or functionalities, disabling the corresponding kernel modules can free up system resources and potentially improve performance.
Security Concerns: Disabling unused modules might mitigate potential security risks associated with vulnerabilities in those modules.
Troubleshooting: In some cases, disabling modules can help isolate issues related to specific hardware or software components.
Potential Downsides:
Loss of Functionality: Disabling a required module can lead to unexpected behavior or loss of functionality if an application relies on that protocol.
Manual Management: Disabling automatic loading might require manual intervention to load the module if needed in the future.
This configuration is used for hardening and privacy
Predator-os hardening and security config
1) Added Kernel self-protection
2) Restricted the kernel log to the CAP_SYSLOG capability.
3) Despited the value of dmesg_restrict, the kernel log will still be displayed in the console during boot. It restricted. These sysctls restrict eBPF to the CAP_BPF capability and enable JIT hardening techniques, such as constant blinding.
5) Restricted loading TTY line disciplines to the CAP_SYS_MODULE capability to prevent unprivileged attackers from loading vulnerable line disciplines with the TIOCSETD ioctl, which has been abused in a number of exploits before.
6) Restricted the syscall to the CAP_SYS_PTRACE capability.
7) Disabled SysRq completely.
8) disabled user namespaces completely (including for root)
9) Restricted all usage of performance events to the CAP_PERFMON capability
10) protected against time-wait assassination by dropping RST packets for sockets in the time-wait state.
Kernel Self-Protection (KSPP):
As mentioned earlier, KSPP is a set of techniques designed to improve the security of the Linux kernel itself. It aims to:
Reduce the attack surface of the kernel by limiting functionality and access points.
Make exploiting vulnerabilities more difficult by implementing additional security checks.
Mitigate the impact of successful exploits by containing damage.
Specific Security Measures:
Added Kernel Self-Protection: This is an umbrella statement indicating the overall implementation of KSPP techniques.
Restricted Kernel Log Access: Limiting access to the kernel log (dmesg) through the CAP_SYSLOG capability restricts who can view system logs. This can prevent attackers from gaining insights into system activity.
dmesg_restrict Caveat: While dmesg access is restricted, it might still be displayed during boot for debugging purposes. Consider additional configuration to completely hide it if desired.
Restricted eBPF and JIT Hardening: This limits who can use the eBPF framework (used to trace and manipulate kernel events) and applies security measures to the Just-In-Time (JIT) compilation process to make it harder to exploit vulnerabilities.
Restricted TTY Line Discipline Loading: This prevents unauthorized users from loading potentially vulnerable TTY line disciplines, which could be used to manipulate terminal behavior for malicious purposes.
Restricted Ptrace System Call: The ptrace system call allows attaching to processes for debugging. Restricting it limits who can potentially manipulate or exploit running processes.
Disabled SysRq: SysRq is a feature that allows emergency system commands through keyboard shortcuts. Disabling it eliminates a potential attack vector but also removes a helpful debugging tool.
Disabled User Namespaces: Namespaces are a virtualization feature. Disabling user namespaces restricts the ability to create isolated user environments, potentially simplifying system security.
Restricted Performance Events: Performance events allow monitoring system performance. Restricting access prevents unauthorized users from gaining insights into system activity.
Protected Against Time-Wait Assassination: This protects connections in the “TIME_WAIT” state (after closing a connection) from being forcefully terminated by attackers, potentially mitigating denial-of-service attacks.
Overall Impact:
These measures significantly enhance the security posture of the system by reducing attack surfaces, hardening vulnerable components, and limiting unauthorized access to functionalities. However, there are trade-offs:
Reduced Functionality: Some features (e.g., SysRq, user namespaces) might become unavailable.
Increased Management Complexity: Stricter security configurations might require more expertise to manage and maintain.
Potential Debugging Challenges: Restricted access to logs and functionalities could make troubleshooting issues more difficult.
This configuration is used for hardening and privacy
Predator-os hardening and security config
11) enable source validation of packets received from all interfaces of the machine. This protects against IP spoofing, in which an attacker sends a packet with a fraudulent IP address.
12) disable ICMP redirect acceptance and sending to prevent man-in-the-middle attacks and minimise information disclosure.
13) ignore all ICMP requests to avoid Smurf attacks, make the device more difficult to enumerate on the network and prevent clock fingerprinting through ICMP timestamps.
14) Source routing is a mechanism that allows users to redirect network traffic. As this can be used to perform man-in-the-middle attacks in which the traffic is redirected for nefarious purposes, the above settings disable this functionality.
15) Disabled TCP SACK. SACK is commonly exploited and unnecessary in many circumstances, so it should be disabled if it is not required.
16) Restricted usage of ptrace to only processes with the CAP_SYS_PTRACE capability
17) Prevented creating files in potentially attacker-controlled environments, such as world-writable directories, to make data spoofing attacks more difficult.
18) Enabled zeroing of memory during allocation and free time, which can help mitigate use-after-free vulnerabilities and erase sensitive information in memory.
19) Disabled slab merging, which significantly increases the difficulty of heap exploitation by preventing overwriting objects from merged caches and by making it harder to influence slab cache layout.
This configuration is used for hardening and privacy
Further Security Enhancements:
Enable Source Validation: This ensures that incoming packets originate from a valid source address on a network interface connected to the machine. This helps prevent IP spoofing attacks where attackers disguise their IP address to appear legitimate.
Disable ICMP Redirects: ICMP redirects are messages sent by routers suggesting an alternative route for a packet. Disabling them prevents potential man-in-the-middle attacks where attackers might redirect traffic through malicious devices.
Ignore ICMP Requests: Ignoring ICMP requests (e.g., ping) can make the system more difficult to discover on a network and potentially mitigate Smurf attacks (where attackers flood a network with spoofed ICMP requests). However, it also eliminates functionalities like ping for basic network troubleshooting.
Disable Source Routing: Source routing allows specifying the path a packet should take. Disabling it prevents attackers from potentially redirecting traffic for malicious purposes.
Disable TCP SACK: TCP SACK (Selective Acknowledgement) is an optimization for TCP connections. Disabling it might be unnecessary in some cases and potentially mitigate certain vulnerabilities. However, it can also slightly reduce network efficiency.
Restrict Ptrace: Similar to a previous point, restricting ptrace access (used for debugging) further limits who can manipulate running processes.
Prevent File Creation in Risky Locations: This prevents creating files in directories writable by everyone. This makes it more difficult for attackers to plant malicious files in vulnerable locations.
Memory Zeroing: Zeroing allocated and freed memory helps prevent attackers from exploiting residual data left in memory after its intended use. This can mitigate use-after-free vulnerabilities and protect sensitive information.
Disable Slab Merging: Slab allocation is a memory management technique used by the kernel. Disabling slab merging makes it harder for attackers to exploit memory vulnerabilities related to heap management.
Overall Impact:
These additional measures further strengthen the system's security posture by:
Mitigating specific attack techniques: They address vulnerabilities associated with IP spoofing, man-in-the-middle attacks, and memory exploitation.
Limiting functionality: Some features (ICMP requests, source routing, TCP SACK) might be disabled for security reasons.
Increasing complexity: Stricter configurations require careful consideration and may impact usability and troubleshooting.
This configuration is used for hardening and privacy
Further Security Enhancements:
20) Randomised page allocator freelists, improving security by making page allocations less predictable. This also improves performance.
21) Enabled Kernel Page Table Isolation, which mitigates Meltdown and prevents some KASLR bypasses.
22) Randomised the kernel stack offset on each syscall, which makes attacks that rely on deterministic kernel stack layout significantly more difficult,
23) Disabled vsyscalls, as they are obsolete and have been replaced with vDSO. vsyscalls are also at fixed addresses in memory, making them a potential target for ROP attacks.
24) Disabled debugfs, which exposes a lot of sensitive information about the kernel.
25) Prevented information leaks during boot
26) Disabled the entire IPv6 stack which may not be required if you have not migrated to it. Do not use this boot parameter if you are using IPv6.
Randomized Page Allocator Freelists: The kernel allocates memory pages for processes. Randomizing the freelist makes it harder for attackers to predict memory allocations, potentially mitigating certain exploit techniques. This can also improve performance in some cases.
Enabled Kernel Page Table Isolation (KPTI): This is a security feature that helps mitigate the Meltdown vulnerability and some Kernel Address Space Layout Randomization (KASLR) bypasses. It isolates user space and kernel space memory, making it harder for attackers to access sensitive kernel data.
Randomized Kernel Stack Offset: The kernel stack is used to store information during function calls. Randomizing its offset on each system call makes it harder for attackers to exploit vulnerabilities that rely on a predictable stack layout.
Disabled Vsyscalls: Vsyscalls are a legacy mechanism for system calls. They are disabled here in favor of vDSO (Virtual Dynamic Shared Object), which is considered more secure. Additionally, vsyscalls have fixed addresses, making them vulnerable to Return-Oriented Programming (ROP) attacks.
Disabled Debugfs: Debugfs is a pseudo-filesystem that exposes kernel information for debugging purposes. Disabling it prevents attackers from gaining access to potentially sensitive information about the kernel.
Prevented Information Leaks During Boot: This measure aims to prevent leaking sensitive information during the system boot process. This can further tighten security by limiting potential attack vectors.
Disabled IPv6 Stack: IPv6 is the next generation of the internet protocol. Here, the entire IPv6 stack is disabled if not required. This reduces the attack surface as tHere is no need to secure a protocol not in use. However, ensure you don't need IPv6 before disabling it.
Overall Impact:
These measures significantly enhance the system's security posture by:
Mitigating specific vulnerabilities: They address issues like Meltdown, KASLR bypasses, ROP attacks, and information leaks.
Improving overall security: The combination of techniques makes it much harder for attackers to exploit the system.
Potential trade-offs: Disabling functionalities (debugfs, IPv6) might limit troubleshooting or network capabilities.
Social Medias
https://www.linkedin.com/in/hossein-seilany-2931891b4
https://github.com/hosseinseilani/
© Copyright 2024 | hossein seilany
Telegram
@seilany
GitHub
https://github.com/hosseinseilani/
Youtube
https://www.youtube.com/@predator-os5453
Email
info.predator-os@gmail.com
Linkedin
https://www.linkedin.com/in/hossein-seilani
pinterest
https://www.pinterest.com/hosseinseilanii/
All about me
https://seilany.ir/
These are another distro that I developed.
Emperor-OS
It has more than 500 applications in 20 categories for programming, graphic design, and data science.Comes in 64-bit ISO and has 10 desktops.
V2.5
Little-Psycho
It is lives CD with a KDE plasma.t is a Dangerous, Wild, Destructive, changer, stress testing, system, and resilience testing Linux for hardware and software.
V 1.0
Hubuntu
It is hardened Ubuntu that secure for sensisensitive desktop user and environments.Based on Ubuntu 18-20-22-24 LTS.
LTS
Artystone
It is a desktop distro especially highly customized for general usage.Based on Debian,Ubuntu and Arch.with more features.
Founder and Developer
I am Hossein Seilani, M.S. in Computer Science, and the founder and developer of Emperor-OS, Little-Psycho, and Predator-OS Linux. I have experience and certifications in various domains, including Linux/Windows Sysadmin, UX/UI, Front-End web design, SEO, Graphic Designer, Data Science, and machine learning.