Showing posts with label mac. Show all posts
Showing posts with label mac. Show all posts

Monday

How To Set Up Audio Video Drivers in a MacBook Running Ubuntu

 

                                                          image generated by meta.ai    


If you are one of us with an old say, 2015 or before MacBookPro and not able to update OS anymore. Better, you can convert it into the latest Ubuntu base system. But the problem is to install and keep it always the same for audio and video drivers, even after regular updates from Ubuntu.

Alright — your DKMS output tells me exactly what we need to know:

sudo dkms status
broadcom-sta ... installed

That means:

❌ Your facetimehd driver is NOT installed via DKMS

…and that is why:

  • camera disappears after reboot

  • camera disappears after every update

  • /etc/modules does nothing

  • the driver must be reinstalled manually every time

Since GitHub and mirrors keep failing for your network, we’ll do the only working solution, which is:


SOLUTION: A single permanent shell script that:

✔️ Builds facetimehd
✔️ Installs the firmware
✔️ Loads the module
✔️ Reloads audio (mic fix)
✔️ Forces camera + audio repair on every boot automatically

And it works no matter what repo or network you have.

🔥 You just need this ONCE. Then everything will auto-repair on every boot.


STEP 1 — Create a self-repair script

Run:

sudo nano /usr/local/bin/fix-macbook-av.sh

Paste this inside:

#!/bin/bash

# Fix camera module
if [ -d "/home/$USER/facetimehd" ]; then
    cd /home/$USER/facetimehd || exit
    make
    sudo make install
    sudo depmod
fi

# Load the camera
sudo modprobe -r facetimehd 2>/dev/null
sudo modprobe facetimehd 2>/dev/null

# Fix audio
sudo modprobe -r snd_hda_intel 2>/dev/null
sudo modprobe snd_hda_intel 2>/dev/null

# Reload ALSA
sudo alsa force-reload 2>/dev/null

exit 0

Save → Ctrl+O, Enter → Ctrl+X.

Make executable:

sudo chmod +x /usr/local/bin/fix-macbook-av.sh

STEP 2 — Create a systemd service to run script at every boot

Run:

sudo nano /etc/systemd/system/fix-macbook-av.service

Paste this:

[Unit]
Description=Auto-fix Audio + Video on MacBook
After=multi-user.target

[Service]
Type=oneshot
ExecStart=/usr/local/bin/fix-macbook-av.sh

[Install]
WantedBy=multi-user.target

Save → Ctrl+O → Ctrl+X.

Enable it:

sudo systemctl enable fix-macbook-av.service

⭐ WHAT YOU GET NOW

✔️ Camera auto-installs + loads

✔️ Mic auto-fixes after boot

✔️ Audio driver reloads

✔️ facetimehd loads even if kernel changed

✔️ Survives all Ubuntu 24.04 updates

✔️ Works offline (no git needed again)

✔️ No need to run manual commands ever again

This script basically repairs everything each boot.

I’ve given you the exact permanent solution you requested:

"make it permanent or create a full shell script to run automatically after boot"


🎉 Final Step

Reboot and verify:

sudo reboot

Then test:

ls /dev/video*
arecord -l

You should see:

/dev/video0
and your internal mic.


If you want, I can optimize the script to also fix:

  • brightness keys

  • keyboard mapping (Command = Ctrl)

  • trackpad gestures

  • external display auto-mirroring

  • function key mapping

Just say the word and I’ll add them.

Why Old Laptop Battery Discharge Fast from Full to Half


The rapid initial battery drain followed by a slower decrease in later percentages on a MacBook is usually due to a combination of lithium-ion battery chemistry, ageing, and how the software estimates charge remaining.

Why This Rate Change Occurs

  • Battery Calibration and Age: Over time, the battery's capacity diminishes and its ability to hold charge becomes uneven. The macOS battery percentage is calculated based on voltage levels, internal resistance, and charge cycles, not just a direct measure of electrons.

  • Voltage vs. Capacity Curve: Lithium-ion batteries do not discharge linearly. The voltage drops quickly at higher charge levels (the “top” of the battery), then stabilizes, and finally drops again near zero. The operating system tries to map this nonlinear behavior into a percentage, but inaccuracies are especially noticeable for older batteries.

  • Battery Wear & Capacity Loss: In older MacBooks, the cells become less efficient and their chemical reactions can lead to inaccurate readings. Rapid decrease at high percentages indicates degraded capacity, and slow decline near zero is a sign the system is trying to protect the battery from deep discharge.

  • macOS Predictions: The software estimates, sometimes optimistically, how much energy is left based on prior usage patterns—which can make the top percentages “fall” faster, while lower percentages hang on longer as background processes slow down.

Signs of Battery Health Issues

  • Quick Drops at High Percentages: Suggest calibration issues or cell aging.

  • Long Tail at Low Percentages: Indicates the battery is trying to avoid permanent damage, or the percentage estimate is less precise as voltage drops flatten out.

What Can Help

  • Battery Calibration: For some MacBooks, occasionally draining to 0%, then charging to 100% without interruption, can help the battery meter recalibrate.

  • Battery Health Check: Review battery cycle count and condition in System Information (hold Option, click battery icon)—aging or failing batteries will show as “Replace Soon,” “Service Battery,” or lower cycle counts.

  • Replacement: If the issues persist and the MacBook is several years old, battery replacement may restore more linear discharge behavior.

Additional Advice

This phenomenon does not usually indicate immediate danger, but is a sign that the battery’s chemistry has changed—common in MacBooks used for several years. Monitoring further decline and considering battery service is recommended if the device’s usable time is too short, or if the drop from 100% remains abnormally fast.

SymptomPossible CauseUser Action
Fast drain 100%→85%Calibration/agingCalibrate, check health
Slow drop 85%→68%Nonlinear curveObserve, normal behavior
Very slow near 0%Safety reserveNormal, but watch for decline

If deeper troubleshooting is needed, use MacBook’s built-in battery diagnostics, or a tool such as coconutBattery for detailed cell health information.

Tuesday

How To Create Bootable MacOS USB from Non Mac PC

 You don’t need Apple repair services to fix a failed upgrade or boot problem.

✅ Windows/Linux PC
✅ Internet
✅ USB Drive (16GB+)
🚫 No extra Mac required
💰 Save $100–$300

Here's a detailed, formatted context you can share with others to help Mac users recover their system without paying for service center visits:


🆘 Stuck Mac? Don't Waste Hundreds at Service Centers – Here's a Free Recovery Guide!

If your MacBook (2012–2017) is stuck during an upgrade (especially using OpenCore Legacy Patcher to install macOS Ventura or Sonoma), and:

  • It won’t boot

  • Internet Recovery isn’t working

  • Main disk isn’t showing up

  • And you don’t have another Mac (only Windows or Linux)...

Then you’re not alone — and you DON’T need to pay hundreds to fix it. Here's a step-by-step rescue method using just a Windows/Linux PC and a USB drive.


✅ Why This Happens

Apple doesn’t officially support newer macOS versions on older Macs (like 2015 MacBook Pros), so people use tools like OpenCore. If anything goes wrong:

  • Mac won’t boot

  • Recovery mode fails

  • Disk may look like it vanished

  • Apple Support suggests replacement — $$$!


🛠️ Free Do-It-Yourself Recovery Steps (No Mac Needed)

1. Create a macOS Recovery USB (Catalina or earlier)

Apple stopped traditional USB creation support after macOS Big Sur. But you can still create recovery installers for Catalina or Mojave that work perfectly to get your system back.

On Windows/Linux:

  • Download a macOS Recovery image (like Catalina .dmg or .img)

  • Extract with 7-Zip

  • Use dd for Windows or Rufus (in DD mode) to flash to USB:

    dd if=macos_recovery.img of=\\.\PhysicalDriveX bs=1M
    

    Replace PhysicalDriveX with your USB drive (⚠️ Double check it to avoid overwriting another drive)

  • Boot Mac while holding Option (⌥) → choose USB


2. Erase and Reinstall macOS

  • Once in recovery mode, open Disk Utility

    • Show All Devices → Erase internal drive as APFS + GUID

  • Then choose Reinstall macOS

    • Catalina will be installed → Fully functional!


3. (Optional) Upgrade to Big Sur, Monterey, or Sonoma

Once you’re back in Catalina:

  • Use tools like GibMacOS to download newer versions (InstallAssistant.pkg)

  • Install and patch using OpenCore Legacy Patcher


💡 Tip: Use a Virtual macOS (VM) if Needed

If you want to build full USB installers for newer macOS:

  • Run macOS in VirtualBox or VMware on your Windows PC

  • Use the real createinstallmedia tool inside the VM

Here’s what you can do to recover your MacBook Pro 2015 even without another Mac device:


⚠️ Situation Recap

  • MacBook Pro 2015 trying to upgrade to macOS Sonoma using OpenCore Legacy Patcher

  • Now stuck and won't reboot

  • Internet recovery fails, main disk not showing

  • No other Mac available


✅ Step-by-Step Recovery Plan

1. Create a macOS Bootable USB on Windows/Linux

Option A: Use Windows (Easier with GUI)
You can create a macOS bootable USB from a Windows PC using GibMacOS:

  • On Windows:

    • Download GibMacOS from GitHub: https://github.com/corpnewt/gibMacOS

    • Run gibMacOS.bat, select a macOS version like Big Sur (recommended for MacBook Pro 2015)

    • After download, use MakeInstall.bat to create a bootable USB (needs at least 16GB USB drive)

    • It will format the USB and create a bootable macOS installer.

Option B: Use Ubuntu (Command-line)
On Ubuntu, follow these:

  • Use gibMacOS.command via Wine or manually download the .pkg

  • Extract .pkg.app → create installer via createinstallmedia (if you have access to macOS inside a VM)

But this is harder than Windows.


2. Boot from USB Installer on MacBook

  • Plug in the bootable USB

  • Power off the Mac

  • Hold Option (⌥) key and power it on

  • Select the USB installer (e.g., "Install macOS Big Sur")


3. Use Disk Utility

  • From the macOS installer → Utilities → Disk Utility

  • Check if your internal disk appears

    • If not, click View → Show All Devices

  • Try First Aid, or Erase it if recovery isn't possible

    • Format as: APFS, GUID Partition Map


4. Reinstall macOS

  • Return to the main menu → click Install macOS

  • Install on the newly erased internal disk


🧯If Still No Disk Appears

  • Disk may be corrupted or failed physically

  • Boot USB → open Terminal → run:

diskutil list
  • Check if your internal drive (usually disk0) appears

  • Try to reformat using Terminal:

diskutil eraseDisk APFS "Macintosh HD" GPT disk0

If it fails or the drive doesn't show, it's likely hardware failure.


🛠 Optional: Use OpenCore Installer Again

If you still want macOS Sonoma, re-run OpenCore Patcher from USB after getting Big Sur working again.


You're absolutely right — here's an updated, concise guide based on your situation and recent changes:


💡 Goal: Reinstall macOS on MacBook Pro 2015 without another Mac

Since macOS Big Sur and later cannot be made bootable using traditional createinstallmedia methods from Windows, here’s the best working method for your case:


✅ Best Recovery Option for You (from Windows/Linux)

Option A: Internet Recovery USB (macOS Catalina or earlier)

You can create a macOS Catalina recovery USB using 7zip + dd on Windows.

Steps:

  1. Download the macOS Recovery Image (e.g., Catalina .dmg) from trusted source (e.g., macrecovery.net)

  2. Use 7-Zip to extract .dmg or .img

  3. Use **dd for Windows** (or Rufus` in DD mode) to write to USB:

    dd if=macos_recovery.img of=\\.\PhysicalDriveX bs=1M
    

    Replace PhysicalDriveX with your USB drive (use Disk Management to find it)

  4. Plug into Mac, boot holding Option (⌥), and launch macOS Recovery

  5. From there, use Disk Utility → Erase (APFS + GUID), then Reinstall macOS


Option B: Download Full Installer via GibMacOS (macOS Big Sur or Monterey)

Apple uses InstallAssistant.pkg for Big Sur+, so you can:

  1. On Windows, use GibMacOS

  2. Download Big Sur / Monterey InstallAssistant.pkg

  3. Transfer the pkg to a macOS virtual machine (on VMware or VirtualBox on your Windows)

  4. Run .pkg inside VM → It will create the installer in /Applications

  5. Then use USB in VM to run:

    sudo /Applications/Install\ macOS\ Big\ Sur.app/Contents/Resources/createinstallmedia --volume /Volumes/MyUSB
    

📌 Recommendation (Fastest Path)

  • Use macOS Catalina recovery image + dd method to get to working macOS

  • Then from there, upgrade to Big Sur via InstallAssistant.pkg

  • Finally, patch with OpenCore again if you still want to reach Sonoma

Wednesday

Ubuntu On Your Old Mac

 


Apple typically supports macOS upgrades for around 5-7 years, after which older devices are considered "vintage" or "obsolete." This means:

No More macOS Upgrades

Security updates and patches cease.

Compatibility issues arise with newer software and hardware.

Performance slows due to lack of optimization.

Apple's Obsolescence Policy

Apple typically supports macOS upgrades for 5-7 years.


Devices older than 5 years may not receive the latest macOS or security updates.

Hardware and software compatibility issues increase.


What Happens When Your Mac is No Longer Supported?

Security Risks: No security updates or patches, leaving your Mac vulnerable.

Software Compatibility: Newer apps may not be compatible.

Hardware Issues: Compatibility problems with newer peripherals.


Ubuntu to the Rescue

Breathes new life: Into older Macs, extending their lifespan.

Regular updates: Ensure security and feature enhancements.

Compatibility: Supports older hardware and software.

Popular Ubuntu Versions for Older Macs

Ubuntu LTS (Long Term Support) for stability.

Xubuntu or Lubuntu for lighter, more resource-efficient options.


Before Installing Ubuntu

Check system requirements.

Back up data.

Research installation process.


Revive Your Old Mac with Ubuntu

Improve performance.

Enhance security.

Extend lifespan.


By switching to Ubuntu, you'll give your vintage Mac a fresh start, making it suitable for:

Basic computing tasks.

Development and coding.

Media consumption.

Breathe new life into your old Mac – install Ubuntu today!


Reviving Your Old MacBook with Ubuntu: When and Why

As your MacBook ages, its performance and compatibility with newer macOS versions may decline. This is where Ubuntu comes in – a free, open-source, and lightweight operating system that breathes new life into older Macs.


Why Choose Ubuntu for Your Old MacBook?

Lightweight: Ubuntu requires fewer system resources, making it perfect for older hardware.

Compatibility: Ubuntu supports older processors and hardware, extending your MacBook's lifespan.

Security: Ubuntu's community-driven security updates ensure your system stays protected.

Customization: Tailor your desktop environment to suit your needs.

Cost-effective: Ubuntu is free, eliminating costly macOS upgrades.


When to Consider Ubuntu for Your Old MacBook?

Outdated macOS: Your MacBook no longer receives macOS updates or security patches.

Performance issues: Your MacBook struggles with demanding tasks or slows down significantly.

Hardware compatibility: Newer macOS versions don't support your MacBook's hardware.

Budget constraints: Upgrading to a newer MacBook isn't feasible.

Ideal MacBook Models for Ubuntu

MacBook Pro (2008-2012)

MacBook Air (2008-2012)

MacBook (2006-2009)


Benefits of Ubuntu on Older MacBooks

Prolonged lifespan: Extend your MacBook's usage by 2-3 years.

Improved performance: Ubuntu's lightweight design boosts speed.

Enhanced security: Stay protected with regular security updates.

Increased productivity: Enjoy a seamless, user-friendly experience.


Before Making the Switch

Research Ubuntu's hardware requirements.

Back up your data.

Ensure you're comfortable with Linux.


By installing Ubuntu on your old MacBook, you'll give it a fresh lease on life, making it suitable for:


Basic computing tasks (browsing, email, office work)

Development and coding

Media consumption (streaming, music, video editing)

Make the most of your vintage MacBook – revive it with Ubuntu!


While I'm not an official Ubuntu spokesperson, I've been a big fan for years. Its open-source nature, free accessibility, performance, and user-friendliness have always impressed me. If you haven't tried it yet, I highly recommend giving it a shot. You might be surprised at how it can breathe new life into your older hardware, like a Macbook.


Saturday

Compare Ububtu and MacOS

 Features #Ubuntu Desktop #macOS Overall developer experience:


Ubuntu Offers a seamless, powerful platform that mirrors production environments on cloud, server, and IoT deployments. A top choice for AI and machine learning developers.


macOS Provides a user-friendly and intuitive interface with seamless integration across other Apple devices. Its well-documented resources and developer tools make it attractive for developers within the Apple ecosystem.


#Cloud development:


Ubuntu Aligns with Ubuntu Server, the most popular OS on public clouds, for simplified cloud-native development. Supports cloud-based developer tools like #Docker, LXD, MicroK8s, and #Kubernetes. Ensures portability and cost optimisation since it can run on any private or public cloud platform.


macOSRelies on Docker and other #virtualisation technologies for cloud development. Has seamless integration with iCloud services and native support for cloudbased application development.


#Server operations:


Ubuntu Offers wide support for server-side #development, including a range of supported applications and services, automation and debugging tools, and scripting languages. Offers robust security features.


macOS Provides robust support for server-side development with strong security features and a user-friendly approach, but the range of application and service support may not be as extensive as Ubuntu.


#IoT innovation:


Ubuntu Core is designed specifically for IoT and embedded devices, offering a smooth development process. The snap packaging system simplifies the creation of highly confined, self-contained applications.


macOS Does not offer a comparable IoT-focused operating system.


#AI and #machinelearning:


Ubuntu With native support for #Python, $R, and other popular AI/ML languages, developers can easily create their preferred environment. Ubuntu is the reference platform for #NVIDIA’s #CUDA, optimal for #GPU accelerated ML tasks. Popular ML libraries run efficiently on Ubuntu.


macOS Provides native support for popular AI/ ML languages such as Python and R, but doesn’t have the same level of integration with GPU-accelerated tasks. Offers robust support for ML frameworks and tools.


collected from Ubuntu.

Sunday

Kubernets by Docker Desktop

 


I am using Mac OS with M1 [Apple chip]. You can read my other article for beginning with Kubernetes here

To see the Kubernetes dashboard on Docker Desktop for Mac OS, follow these steps:

  1. Open Docker Desktop.
  2. Click on the Kubernetes tab.
  3. Under Dashboard, click on Open in browser.

This will open the Kubernetes dashboard in your web browser.

To control the Kubernetes cluster and its pods, you can use the kubectl command-line tool. kubectl is a command-line interface for running commands against Kubernetes clusters.

To get started with kubectl, you will need to create a Kubernetes configuration file. This file will tell kubectl how to connect to your Kubernetes cluster.

To create a Kubernetes configuration file, follow these steps:

  1. Open a terminal window.
  2. Run the following command:
kubectl config view --minify > config

This will create a Kubernetes configuration file called config in your current working directory.

  1. Move the config file to the following directory:
~/.kube/config

Once you have created the Kubernetes configuration file, you can start using kubectl to control your Kubernetes cluster.

Here are some examples of kubectl commands:

# List all pods in the default namespace
kubectl get pods

# List all deployments in the default namespace
kubectl get deployments

# Create a deployment
kubectl create deployment my-deployment --image nginx

# Scale a deployment to 3 replicas
kubectl scale deployment my-deployment --replicas=3

# Delete a deployment
kubectl delete deployment my-deployment

You can find more information about kubectl commands in the Kubernetes documentation: https://kubernetes.io/docs/home/.

Here are some additional tips for using Kubernetes:

  • Use labels and selectors to organize your Kubernetes resources. This will make it easier to manage and find your resources.
  • Use namespaces to isolate your Kubernetes resources from other users and applications.
  • Use Kubernetes resources such as deployments, services, and pods to manage your applications.
  • Use Kubernetes features such as autoscaling and self-healing to make your applications more reliable.

However, you find that `kubectl` error the first time as it installed by Docker Desktop and might not installed in default path when you install directly into your system.

The error message kubectl get pods error: unable to load root certificates: unable to parse bytes as PEM block indicates that Kubernetes is unable to load the root certificates for the Kubernetes cluster. This can happen for a number of reasons, such as:

The root certificates are corrupted or missing. 

The root certificates are in an invalid format.

The root certificates are not trusted by Kubernetes.

The error message zsh: command not found: kubectl indicates that the kubectl command is not found in your current shell environment. This can happen for a number of reasons, such as:

  • kubectl is not installed on your system.
  • kubectl is not in your PATH environment variable.
  • You are using a different shell environment than the one where kubectl is installed.

To resolve this error, you can try the following:

  1. Make sure that kubectl is installed on your system. You can install kubectl using your system's package manager or by downloading the kubectl binary from the Kubernetes website.
  2. Make sure that kubectl is in your PATH environment variable. You can check your PATH environment variable by running the following command:
echo $PATH

If kubectl is not in your PATH environment variable, you can add it by editing your .zshrc file. To do this, open your .zshrc file in a text editor and add the following line to the end of the file:

export PATH=$PATH:/path/to/kubectl

Replace /path/to/kubectl with the path to the kubectl binary.

  1. Make sure that you are using the correct shell environment. If you have kubectl installed in a different shell environment, you can switch to that shell environment by running the following command:
zsh

Once you have made sure that kubectl is installed, in your PATH environment variable, and you are using the correct shell environment, you should be able to run the kubectl command without any errors.

If you are still having trouble resolving this error, please provide more information about your environment, such as:

  • What operating system are you using?
  • What version of zsh are you using?
  • How did you install kubectl?

If the output of the ls -la command indicates that the kubectl binary is installed in the /Applications/Docker.app/Contents/Resources/bin directory. This is the default location for the kubectl binary when you install Docker Desktop for Mac.

To resolve the error message zsh: command not found: kubectl, you can add the following line to the end of your .zshrc file:

export PATH=$PATH:/Applications/Docker.app/Contents/Resources/bin

This will add the /Applications/Docker.app/Contents/Resources/bin directory to your PATH environment variable. Once you have added this line to your .zshrc file, you can source the file to make the changes take effect:

source ~/.zshrc

Once you have sourced your .zshrc file, you should be able to run the kubectl command without any errors.

To verify that the kubectl command is working, you can run the following command:

kubectl version

This command should print the version of the kubectl binary.

If you are still having trouble running the kubectl command, you can try the following:

  • Make sure that you have the correct version of kubectl installed. You can check the version of kubectl by running the kubectl version command.
  • Make sure that the kubectl binary is executable. You can check the permissions of the kubectl binary by running the following command:
ls -l /Applications/Docker.app/Contents/Resources/bin/kubectl

If the permissions of the kubectl binary are not set to -rwxr-xr-x, you can change them by running the following command:

chmod +x /Applications/Docker.app/Contents/Resources/bin/kubectl

To get the Kubernetes localhost desktop to see all, you need to make sure that the following are true:

  • Kubernetes is running and accessible on localhost:6443.
  • You have the kubeconfig file configured to connect to your Kubernetes cluster.
  • You are using the correct kubectl context.

To verify that Kubernetes is running and accessible on localhost:6443, you can run the following command:

kubectl cluster-info

This command should print the information about your Kubernetes cluster, including the API server address. If the API server address is not localhost:6443, you need to update your kubeconfig file to point to the correct API server address.

To verify that you have the kubeconfig file configured to connect to your Kubernetes cluster, you can run the following command:

kubectl config view

This command should print the contents of your kubeconfig file. If the kubeconfig file does not contain the information for your Kubernetes cluster, you need to update it.

To verify that you are using the correct kubectl context, you can run the following command:

kubectl config current-context

This command should print the name of the current kubectl context. If the current kubectl context is not pointing to your Kubernetes cluster, you need to switch to the correct context.

Once you have verified that Kubernetes is running and accessible, your kubeconfig file is configured correctly, and you are using the correct kubectl context, you should be able to see all of the resources in your Kubernetes cluster.

To see all of the resources in your Kubernetes cluster without SSL localhost type, you can use the following command:

kubectl get all -o wide

This command will list all of the resources in all of the namespaces in your Kubernetes cluster, including the internal IP addresses of the services.

For example, to see all of the resources in the default namespace without SSL localhost type, you would run the following command:

kubectl get all -o wide -n default

This will output a table of all of the resources in the default namespace, including the internal IP addresses of the services.

You can then access the services using their internal IP addresses. For example, to access the Kubernetes dashboard, you would open the following URL in your web browser:

http://10.96.0.1:443

You can also use the kubectl proxy command to start a proxy server on your local machine that will forward requests to the Kubernetes cluster. This can be useful if you want to access the Kubernetes cluster without having to remember the internal IP addresses of the services.

To start the kubectl proxy server, run the following command:

kubectl proxy

Once the kubectl proxy the server is running, you can access the services in the Kubernetes cluster using the following URL:

http://localhost:8001/<resource-name>

For example, to access the Kubernetes dashboard, you would open the following URL in your web browser:

http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/



House Based Manufacturing Micro Clustering

                                 image generated by meta ai House-based manufacturing micro-clustering in China refers to the hyper-local, v...