r/redhat • u/hassanhaimid • 1h ago
I just passed RHCSA
i have a discount code that i wont use. if you want it, plaese dm me
r/redhat • u/hassanhaimid • 1h ago
i have a discount code that i wont use. if you want it, plaese dm me
r/redhat • u/Pure-Personality-456 • 17h ago
I am looking for relevant sources / practice questions related to EX 188 exam. Dm me if you have attempted it recently. Thanks.
We've all written the "just a few commands in a row with a shebang on top" bash script. This week's Into the Terminal (episode 203) is about the stuff that turns that script into something you — or anyone else — can actually hand off, debug, and maintain: global variables, non-destructive sed edits, three different ways to do logging (including a newer bash feature a lot of people don't know about), command-line argument parsing done right vs. done quick-and-dirty, and structured error handling with exit codes. There's also a good closing discussion on when you should stop writing bash and pick up Python (or something else) instead.
Full video here → https://www.youtube.com/watch?v=8fpy4XbIGkc More hands-on RHEL practice → https://redhat.com/interactive-labs
The core idea: anything in your script that's likely to change later (connection options, file paths, flags) belongs in a variable, declared near the top, not buried in the body of the script.
| Pattern | What it does |
|---|---|
| Define variables right after the shebang | Keeps anything you'll tweak later easy to find without reading the whole script |
sshopts="-oStrictHostKeyChecking=no" |
Centralizes SSH/SCP options in one string |
ssh $sshopts localhost "whoami" |
Reuses $sshopts anywhere you invoke ssh (or scp) in the script |
Pro tip from the show: Scott intentionally keeps his scripts self-contained rather than sourcing config from external files. His reasoning — if you hand someone a script that sources three other files, you now have to hand them all four files, and he's been burned debugging a "broken" script that was really just missing a sourced dependency. Nate pointed out the flip side: for larger projects, splitting config/functions/files into separate sourced pieces is totally standard — it's basically how every big codebase organizes itself. It's a tradeoff between portability and maintainability, and where you land depends on your team.
sed -iA follow-up from their grep/sed episode at #200: how do you make sed -i non-destructive?
| Command | What it does |
|---|---|
sed -i 's/foo/FOO/' config |
Edits the file in place — no safety net, original content is gone |
sed -i.bak 's/bar/BAR/' config |
Same edit, but writes the pre-change file to config.bak |
sed -i.20261023 's/baz/BAZ/' config |
Uses a date-stamped extension instead of .bak |
Caveat called out on stream: if you run the same -i.bak command twice, the second run silently overwrites your first backup — sed won't ask. A dated extension (or a variable-driven one, tying back into the global-variables section) avoids clobbering your safety net. And to be clear — this is a "don't shoot yourself in the foot while scripting" safety net, not a substitute for real, off-system backups.
logger (system-level logging)logger "some message" sends your message into the syslog pipeline — typically landing in /var/log/messages by default on RHEL, tagged with host, user, and message ID.
Catch: anyone can write a log message with logger, but a regular (non-root) user can't read /var/log/messages by default. That makes logger great for genuinely system-level events (user provisioning, system-wide changes) but overkill — and kind of useless — for a personal script's own debugging output, which was the consensus from both hosts.
For script-local logging, define the log file as a global variable, then make sure the directory/file actually exist before writing to them:
bash
logfile=~/.test/log-$(date +%Y%m%d)
if ! [ -e ~/.test ]; then
mkdir ~/.test
fi
if ! [ -e $logfile ]; then
touch $logfile
fi
This is the part of the episode most people in chat said they'd never seen before. Instead of redirecting every single line with >> $logfile, you open a file handle once and write to it by name for the rest of the script.
The old way (numeric file descriptors, FD 3–9 are "fair game" — 0/1/2 are reserved for stdin/stdout/stderr):
bash
exec 5>> $logfile
echo "**** $(date) ****" >&5
echo "==== Initialized script ====" >&5
echo "Script script script"
echo "==== Completed script ====" >&5
The new way (named file descriptors — requires Bash 4.1+):
bash
exec {log}>> $logfile
echo "**** $(date) ****" >&"$log"
echo "==== Initialized script ====" >&"$log"
echo "Script script script"
echo "==== Completed script ====" >&"$log"
| Approach | Max handles | Readability |
|---|---|---|
Numeric FDs (exec 5>>) |
Capped at FD 9 | You have to go hunt down what FD 7 actually points to |
Named FDs (exec {log}>>) |
Effectively unlimited | Self-documenting — >&"$log" tells you exactly where it's going |
The nicest trick in this section: instead of sprinkling echo debug statements through your script and having to remember to rip them all out later, gate them behind a debug variable:
bash
debug="1" # 1 = on, 0 = off
if [ $debug -eq "1" ]; then
echo "**** $(date) ****" >&"$log"
echo "==== Initialized script ====" >&"$log"
fi
Flip debug to 0 and all those diagnostic lines go silent — no hunting through the script to comment them back out when you're done troubleshooting.
getopts vs. Rolling Your OwnBoth scripts set the same kind of defaults (verbose, error-logging flag) and a usage() function — defined once, called from every error path instead of duplicating the usage text everywhere. (Bash note from the show: unlike some languages, bash needs functions defined before they're called, so keep them near the top.)
getopts — the recommended approach```bash
verbose=0 error_log=0 usage() { echo "Usage: $0 [-v] [-e] [-f logfile]"; }
while getopts "vef:h" opt; do case $opt in v) verbose=1 ;; e) error_log=1 ;; f) logfile=$OPTARG ;; h) usage; exit 0 ;; *) usage; exit 1 ;; esac done ```
| Invocation | Result |
|---|---|
opts-getopts.sh -e -v |
Error logging and verbose both turned on |
opts-getopts.sh -ev |
Same as above — combined short flags just work |
opts-getopts.sh -ev -f |
Errors out cleanly via usage() — -f requires an argument and didn't get one |
opts-getopts.sh -ev -f foo |
Sets logfile=foo, writes output there |
while/case loop — works, but has sharp edges```bash
while [ $# -gt 0 ]; do case $1 in -v) verbose=1 ;; -e) error_log=1 ;; -f) logfile=$2; shift ;; esac shift done ```
Uses $1, $2, … (bash's auto-populated positional args) and $# (arg count) directly.
| Limitation (shown live on stream) | Why it matters |
|---|---|
./opts-loop.sh -ev doesn't work |
Combined flags aren't understood — -ev isn't a defined case, only -e and -v separately are |
-f with no filename just sets logfile to empty |
No built-in way to require a dependent argument — you'd have to add your own check after the fact |
| Neither approach handles long options | --file → -f style GNU long-option mapping needs extra work either way |
Bottom line from Nate: getopts does more of the work for you — combined flags, required-argument validation — for not much more code. The manual loop "feels" more obvious at first glance, but you end up re-implementing things getopts already handles.
bash
ls -l /etc/foobar || exit 6
If the command fails (non-zero exit), the || kicks in and the script exits immediately with code 6. Great for one simple fallback action — gets unreadable fast if you need to do more than one thing on failure.
bash
error_function() {
echo "A command run encountered an unrecoverable error"
echo "The command was: $1"
exit 6
}
...
ls -l /etc/foobar || error_function "ls -l /etc/foobar"
Wrapping the failure path in a function keeps the conditional clean no matter how much logic the error path actually needs, and lets you reuse it everywhere in the script.
| Fact | Detail |
|---|---|
0 |
Always means success — never repurpose it |
1–255 |
Anything else is "not the expected clean exit" — arbitrary numbers, your choice |
| No universal standard | Exit codes are script-specific. Well-known tools (grep, etc.) have consistent codes because they haven't changed in years, not because there's an official spec |
| Document them | Put a comment block at the top of your script mapping exit codes to meanings, so you (or whoever inherits it) doesn't have to trace the whole script to figure out what "exit 6" meant |
$? |
Captures the exit status of the last command — don't confuse with $$ (the current process ID) |
| Max value | 255 — if you need more distinct failure states than that, it's probably a sign your script has grown past what a single exit code should communicate |
A great closing discussion that's worth a watch even if you skip everything else: Scott and Nate's rules of thumb for "this should not be a bash script anymore":
mysql/sqlite3 command-line clients to parse results, you've crossed the line — "chances are if someone's written a bunch of handlers for the thing you want to do in a different language, that means you're in the wrong language." (Shoutout to a viewer in chat who's apparently "scarred for life" from rolling his own MySQL bash helper script.)Scott's rule: bash is for things that are systems-specific without complex data storage needs. Once you're past that, you're better served elsewhere — and that goes for over-engineering with bash includes, too (cue the story about a coworker who "couldn't write one script" and instead always wrote 33 — one for functions, one for config, one for file lists, etc.).
```bash
sshopts="-oStrictHostKeyChecking=no" ssh $sshopts localhost "whoami"
sed -i.bak 's/bar/BAR/' config # backup: config.bak sed -i.$(date +%Y%m%d) 's/baz/BAZ/' config # dated backup (won't clobber as easily)
logger "==== Initialized script ====" # -> /var/log/messages (root-readable only)
logfile=~/.test/log-$(date +%Y%m%d) [ -e ~/.test ] || mkdir ~/.test [ -e "$logfile" ] || touch "$logfile"
exec {log}>> "$logfile" # new: unlimited, named exec 5>> "$logfile" # old: capped at FD 9, numeric only echo "message" >&"$log" echo "message" >&5
debug="1" if [ "$debug" -eq "1" ]; then echo "debug info" >&"$log" fi
while getopts "vef:h" opt; do case $opt in v) verbose=1 ;; e) error_log=1 ;; f) logfile=$OPTARG ;; h) usage; exit 0 ;; esac done
ls -l /etc/foobar || exit 6 # quick conditional exit error_function() { # reusable error handler echo "Unrecoverable error running: $1" exit 6 } ls -l /etc/foobar || error_function "ls -l /etc/foobar"
echo $? # last command's exit status (0 = success, 1-255 = error) ```
Into the Terminal is a (mostly) weekly live show where Red Hatters dig into Linux and RHEL administration skills — one terminal command, one bad pun, and one "oops, wrong window" at a time.
r/redhat • u/suryad123 • 1d ago
Sent email to [purchasing@redhat.com](mailto:purchasing@redhat.com) regarding a subscription query, an auto email was received with a case number
A few hrs later, Got an auto email saying the case is updated.however when I click on the link in the email, it is asking for login credentials which I don't have/ don't know
Please suggest how do I view the contents of their response in the ticket.
r/redhat • u/Eastern_Conference13 • 1d ago
Not sure if this is the correct sub to post this to.
‘I want to learn Linux for professional use. I know a bit of the general use (from A+) but I’m looking to peruse an IT career and I want (and need) to learn Linux and pretty fast.
I saw a post saying RH exams are the only thing that truly shows Linux literacy opposed to Linux+.
would you agree, if not what would you recommend. if you do agree what are some steps you’d recommend.
I’ve downloaded Arch on an old laptop and dual-boot popos on my pc.
r/redhat • u/Pure-Dig-1307 • 22h ago
r/redhat • u/Rhopegorn • 1d ago
Previous releases of the Red Hat build of Podman Desktop have introduced enterprise features to make it easy to integrate the tool into strict corporate settings. Building on that foundation, Red Hat continues to strengthen usability, developer velocity, and platform security with Red Hat build of Podman Desktop 1.2, including:
- Podman 6 engine support: Full integration with the next-generation container engine release.
- Automatic public CA keys synchronization:UI option to enable localhost public CA key synchronization when creating a new Podman virtual machine (VM).
- Secret management UI: A graphical dashboard for creating, mounting, and managing Docker and Podman secrets.
- In-app updating: Automated checks and single-click update execution directly from the desktop interface.
- Bug and CVE fixes: Upgraded dependencies and patched security vulnerabilities to keep enterprise environments resilient and compliant.
TL;DR
The Red Hat build of Podman Desktop 1.2 introduces Podman 6 engine support, a secret management interface, automatic public CA key synchronisation and in-app updating. Moving from Podman 5.x involves stopping machines and recreating them.
r/redhat • u/Consistent_Mode_2025 • 2d ago
r/redhat • u/Delicious-Act5190 • 4d ago
People at Redhat must be having fun accessing all the 0days right now…
r/redhat • u/mostaptname • 6d ago
r/redhat • u/RetroGrid_io • 6d ago
I have been applying a fix for the recently reported 8 compromised certificates and figured I'd share the script I'm using.
Designed for RH and clones, I'll share it as a text file you can review before you rename and apply. It's a simple script based directly on the disclosure page linked to that I found after the original article here on reddit.
I hope it helps, here is distrust.sh - downloaded as a .txt file you can read/review before renaming to distrust.sh and running it as /bin/bash distrust.sh. If your system isn't vulnerable it does nothing.
r/redhat • u/Comfortable-Leg-2898 • 6d ago
I'm sick of having to make several clicks just to see an update for a case.
r/redhat • u/waldirio • 6d ago
Hello
Let's implement AAP 2.7 (Ansible Automation Platform) in a containerized way!
Enjoy it!
Wally
r/redhat • u/Rhopegorn • 7d ago
Upgrading your internal developer platform shouldn't feel like navigating a minefield. Upcoming Red Hat Developer Hub release 2.1 introduces major performance and architectural updates—including upstream Backstage's new front-end system and standalone OCI plugin images—but getting there requires rethinking how your custom plug-ins are built and mounted.
Two architectural shifts require preparation before upgrading: adopting the new front-end system and migrating plug-ins to standalone OCI images. Red Hat Developer Hub 2.1 includes other breaking changes not covered here; the upcoming release notes and migration documentation provide a complete list.
TL;DR
Red Hat Developer Hub 2.1 removes Scalprum and the old front-end; plug-ins must adopt ./alpha exports and extension blueprints. Configuration shifts from dynamicPlugins.frontend to app.extensions, and plug-ins become standalone OCI images.
Last week was GPG. This week, Nate gets to nerd out about his favorite RHEL feature: bootc, the open-source engine behind RHEL Image Mode. If you've heard the buzz about "treating your OS like a container" but haven't actually seen it happen, this episode is the fundamentals primer — writing a Containerfile, building a bootc image, pushing it to a registry, booting a VM from it, pushing a live update, and (because why not) rolling it back when things go sideways.
📺 Watch the full episode: https://www.youtube.com/watch?v=0siLuf0bv-E
Here's everything covered, organized so you can actually use it.
A bootc image is a real OCI-compliant container — you could technically run it in Podman — but it's "very heavy" because it bundles everything a full RHEL install needs: systemd, a kernel, a bootloader, the works. Red Hat publishes special bootc base images you build from, and from there it's "basically like writing a kickstart, except the mechanism is a container build."
| Concept | What it means |
|---|---|
| Containerfile | Defines your OS image the same way it'd define an app image — FROM, RUN dnf install, COPY |
| Base image | Red Hat-published bootc base (e.g., rhel10/rhel-bootc:10.1) — RHEL at its core, so you still need a subscription |
| Container registry | Where you push built images; your bootc hosts pull updates from here, just like a package repo in package mode |
/etc/ostree, /usr/lib/bootc/kargs.d |
Special subdirectories you build into your base, used to inject config/auth/kernel args into the final image |
Setting up the project directory and Containerfile:
bash
mkdir ~/bootc-base
mkdir -p ~/bootc-base/etc/ostree
mkdir -p ~/bootc-base/usr/lib/bootc/kargs.d
cd ~/bootc-base
vim Containerfile
dockerfile
FROM registry.redhat.io/rhel10/rhel-bootc:10.1
RUN dnf -y install pcp-zeroconf \
rsyslog \
tmux \
tuned
RUN dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-10.noarch.rpm
RUN sed -e '/^metalink=https:\/\/mirrors.fedoraproject.org\/metalink/ s/^/#/' \
-e '/^#baseurl=http:/ s/http/https/' \
-e '/^#baseurl=https:\/\/download.example/ s/^#//' \
-e '/^baseurl=https:\/\/download.example/ s_https://download.example_https://dl.fedoraproject.org_' \
-i /etc/yum.repos.d/epel*.repo
RUN dnf -y install btop iftop
COPY etc/ /etc
COPY usr/ /usr
💡 Pro tip from the episode: You can absolutely use EPEL (or any custom/satellite-hosted repo) with a bootc base. It's RHEL under the hood — "you just manage it a little bit differently." You don't install packages or manage the filesystem directly on a live host; it all gets baked in at build time.
🔒 Subscription note: bootc images built on RHEL content require a RHEL subscription (free developer tier is fine for personal/lab use). This is unlike UBI images, which are specifically architected to be fully redistributable with no subscription required. Don't publish RHEL-based bootc images publicly — Fedora or CentOS Stream bootc images, on the other hand, are totally fair game to share since they're not subscription-encumbered.
Every bootc host needs a container registry to pull updates from. In the lab, that's a local Podman-hosted registry, but in production you'd point at Satellite, Quay, GitLab/GitHub registries, or any registry your fleet can reach.
The catch: if your registry requires authentication (as most production registries do), every deployed bootc host also needs to authenticate to pull updates — or bootc update will just fail. The fix is to bake an auth token into the image itself:
```bash
podman login -u core -p redhat <registry>
podman login -u core -p redhat <registry> --authfile=auth.json mv auth.json etc/ostree/auth.json ```
Because etc/ostree/auth.json gets COPY'd into the image, any system deployed from it inherits that authentication — no manual registry logins needed on every host later.
⚠️ Caveat: Be careful what you bake into an image you plan to share. Nate specifically called out that he wouldn't bake registry auth into anything meant for public distribution.
bash
podman build --file Containerfile --tag <registry>/base
podman push <registry>/base
Just like a normal container build, this uses a layered filesystem — rebuilds after a small change (like adding a sudoers rule) are fast because only the changed layers get rebuilt and pushed.
This is the part that trips people up: how do you get from "I have a container image" to "I have a running server"? There's no direct path — that's literally one of the problems that had to get solved to make Image Mode real. The answer is the bootc-image-builder container, which decompresses your bootc image into an actual disk image (qcow2, raw, ISO, etc.).
First, a config.toml defines first-boot customizations — in this case, adding a core user, putting it in wheel, and injecting an SSH key:
bash
cd ~
cat config.toml
Then build the disk image:
bash
podman run --rm --privileged --security-opt label=type:unconfined_t \
--volume ./config.toml:/config.toml \
--volume /var/lib/containers/storage:/var/lib/containers/storage \
--volume .:/output \
registry.redhat.io/rhel10/bootc-image-builder:10.1 \
--type qcow2 <registry>/base
And deploy it with virt-install/libvirt:
bash
file qcow2/disk.qcow2
cp qcow2/disk.qcow2 /var/lib/libvirt/images/bootc-vm.qcow2
virt-install --name bootc-vm --disk /var/lib/libvirt/images/bootc-vm.qcow2 \
--import --memory 4096 --graphics none --osinfo rhel10-unknown \
--noautoconsole --noreboot
virsh start bootc-vm
(If you've got a physical box instead of a VM, the same tool can spit out an ISO that uses kickstart under the hood to deploy the same container image.)
Once it's up, bootc status is your main window into what's going on:
| Command | What it does |
|---|---|
sudo bootc status |
Shows the current deployed image, registry source, etc. |
sudo bootc status --verbose |
More detailed status info |
sudo bootc status --format yaml |
Machine-parsable output (JSON also supported) — handy for scripting/automation |
The filesystem is largely immutable. /usr, /home, /lib — read-only. Only /etc and /var are writable at runtime. That's why /home is actually a symlink to /var/home, /mount → /var/mount, /root → /var/roothome, etc. — anywhere you need runtime writability has to live under /var.
**/etc is special — it uses a three-way merge.** Files in /etc that come from your image and are never changed on disk get overwritten on every bootc update. But if you (or Ansible, or anyone) hand-edit a file in /etc after deployment, it will not be clobbered by future image updates — the live edit wins. This is important: your fleet can quietly diverge in /etc if people are making manual changes instead of pushing changes through the Containerfile.
To push the "no-password sudo for wheel" change shown in the demo, you edit the Containerfile tree, rebuild, push, then update the live host:
```bash
cd ~/bootc-base
nano etc/sudoers.d/10-wheel
%wheel ALL=(ALL) NOPASSWD: ALL
bash
podman build --file Containerfile --tag <registry>/base
podman push <registry>/base
```
Then on the deployed VM:
bash
sudo bootc update --apply
--apply means "if the update succeeds, reboot automatically." Without it, the update is just staged — it won't take effect until the next reboot (and in RHEL 10.2+, you can even pre-download an update without staging it, so it's not "waiting to go off" at your next reboot).
Under the hood, bootc (via OSTree) uses an A/B deployment model — similar to CoreOS. The update deploys to whichever tree (A or B) isn't currently active, and the reboot just switches which tree is live.
This is the safety net that makes 2 a.m. Saturday-night auto-updates not scary:
bash
sudo bootc rollback
This swaps you back to the previously-booted tree. Since GRUB keeps boot entries for both trees, even a fully broken update has a last line of defense — go into GRUB and manually pick the other entry if bootc rollback itself isn't reachable.
Why this matters: if your maintenance window update breaks the app and you're burning through your 15-minute window, you know the other tree was working a minute ago. Roll back, you're home free. In the demo, after rolling back, the sudoers rule from the update literally disappeared — because it never touched the live /etc on disk, it only existed in the image.
Mentioned but not demoed: a soft reboot lets you switch trees and reload systemd without a full hardware reboot — skipping slow stuff like RAID controller initialization. It works as long as the update doesn't touch the kernel, glibc, or other reboot-mandatory components. If it's just an app-level or service-level change, a soft reboot can apply it in seconds instead of minutes. (Also works on package-mode RHEL, not just bootc.)
| Setting | Purpose | Persistent? |
|---|---|---|
config.toml |
First-boot customization (users, groups, SSH keys) for bootc-image-builder |
Baked into disk image at build time |
etc/ostree/auth.json |
Registry auth token baked into the image | Yes — travels with every deployment of that image |
etc/sudoers.d/10-wheel |
Example of an /etc drop-in managed via the Containerfile |
Yes, until manually edited on a live host (then it diverges) |
usr/lib/bootc/kargs.d |
Kernel argument injection directory (mentioned, not demoed) | Baked into image |
bootc-fetch-apply-update.timer |
Systemd timer that auto-checks the registry and deploys new images | Masked in the lab by default; Nate runs his personally on a weekly (Saturday night) cadence |
Since the whole image gets replaced on update, you stop tracking "what version of Python is installed" and start tracking image tags. A few patterns discussed:
base:1016) — pin a host to a specific build; it never updates unless you explicitly bootc switch to a new tag.q3-2026, standard) — push new builds to the same tag, and every host tracking it updates automatically.```bash
mkdir -p ~/bootc-base/etc/ostree ~/bootc-base/usr/lib/bootc/kargs.d cd ~/bootc-base && vim Containerfile # FROM rhel-bootc base, RUN dnf installs, COPY etc//usr/
podman login -u <user> -p <pass> <registry> --authfile=auth.json mv auth.json etc/ostree/auth.json
podman build --file Containerfile --tag <registry>/base podman push <registry>/base
podman run --rm --privileged --security-opt label=type:unconfined_t \ --volume ./config.toml:/config.toml \ --volume /var/lib/containers/storage:/var/lib/containers/storage \ --volume .:/output \ registry.redhat.io/rhel10/bootc-image-builder:10.1 \ --type qcow2 <registry>/base
cp qcow2/disk.qcow2 /var/lib/libvirt/images/bootc-vm.qcow2 virt-install --name bootc-vm --disk /var/lib/libvirt/images/bootc-vm.qcow2 \ --import --memory 4096 --graphics none --osinfo rhel10-unknown \ --noautoconsole --noreboot virsh start bootc-vm
sudo bootc status sudo bootc status --verbose sudo bootc status --format yaml
sudo bootc update --apply # apply + reboot automatically sudo bootc update # stage only, applies on next reboot
sudo bootc rollback
sudo bootc switch <new-image-ref> ```
/etc/containers so the app container auto-deploys on first boot without manual intervention.systemctl reboot vs reboot?** Same thing now — reboot is a symlink straight to systemctl. (Nate admits to still typing init 6 out of old habit.)Into the Terminal is a weekly live show where RHEL experts walk through real commands and real workflows — bring your questions to chat, because they actually answer them. New episodes every Friday.
r/redhat • u/yomamma-so-fat • 8d ago
Been studying for this exam on and off for about a year. Feeling very overwhelmed. Any tips or reassurances?
r/redhat • u/mostaptname • 8d ago
r/redhat • u/seanx820 • 8d ago
r/redhat • u/Accurate-Oil-2356 • 9d ago
Hi. Our organization recently purchased the Red Hat Satellite License. And currently the Sattelite and Capsule servers are configured and completed. How ever one thing I noticed when registering hosts is that it takes alot of time to register. Like around 20min. Is that normal or am I doing something wrong?
r/redhat • u/Patient_Band_4541 • 8d ago
How much salary does a fresher get?
r/redhat • u/injuneer2 • 10d ago
I am studying for the RHCSA. I am currently trying to practice resetting the root password. I do not see the grub menu at boot.
I logged in and changed the GRUB_TIMEOUT=10 and added GRUB_TIMEOUT_STYLE=menu.
I then proceeded to try: grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg. This would not work (generated a warning message) like it seems to on RHEL 9.
I also tried: grub2-mkconfig -o /boot/grub2/grub.cfg. However when I reboot I still do not see the grub menu.
Any suggestions? Thx!
r/redhat • u/AccomplishedAir8352 • 11d ago
Hello, I'm interested in becoming a upstream linux kernel dev
As a undergraduate student, I'm planning to take linux foundation mentorship program and google summer of code before graduating. Unfortunately, my country, South Korea, doesn't have RedHat's Kernel Development Learning Pipeline, so those two are the only options that I can take.
After graduation, I should be looking for positions, where RedHat is very appealing to me. However in their job listings, I don't see any positions available.
Questions...
What is the common method to contact / apply for Redhat as a upstream kernel dev?
I don't think recent univ graduates are interested in kernel dev, hence the initiation of redhat's KDLP. Are there many applicants?
What are the requirements that redhat is expecting to have?
Do they offer remote jobs to kernel devs?
Which subsystem do redhat work on?
I understand Red Hat’s kernel engineering roles aren’t open to candidates based in South Korea. Does Red Hat offer visa sponsorship for these positions?
What are the typical workflow in Redhat?
Any responses are welcome.
Thank you for your time.