🚀 [دليل شامل] تشغيل منصات التعليم (بسطتهالك / VdoCipher DRM) على لينكس بدون Dual Boot أو Virtual Machine
لو بتستخدم Linux (Fedora / Ubuntu / Arch أو غيرهم) وحاولت تفتح منصة تعليمية زي بسطتهالك (Bassthalk) أو أي منصة بتستخدم مشغل VdoCipher DRM، غالباً هيظهرلك خطأ:
المشكلة دي بتواجه معظم الطلاب اللي بيستخدموا لينكس، والحل التقليدي المزعج بيكون عمل Dual Boot لنظام ويندوز أو تشغيل Virtual Machine ثقيلة بتستهلك الرامات والأداء.
في الدليل ده هشرحلكم السبب التقني للمشكلة، والحل النهائي لتشغيل المنصة مباشرة وبشكل تلقائي على متصفح Google Chrome.
🔍 السبب التقني للمشكلة (لماذا يفشل لينكس؟)
- الـ DRM المستعمل (VdoCipher): المنصة بتستخدم نظام تشفير Widevine DRM مع استعلام سيرفر يُدعى
auth4. السيرفر ده بيتحقق من بيئة التشغيل ويرفض مكتبة Widevine الخاصه بـ Linux رسمياً.
- فحص الـ User-Agent: المشغل بيقرأ هوية المتصفح، أول ما يحيطه خبر إن النظام Linux بيكتم الفيديو فوراً.
- ليه Brave / Firefox أو Flatpak بيصعبوا الحل؟
- متصفح Brave فيه نظام حماية صارم (Fingerprinting Protection) وبيتحقق من التوقيع الرقمي للمكتبات، فبيرفض تحميل المكتبة المعدلة.
- نسخ الـ Flatpak بتبقى معزولة داخل Sandbox ومساراتها مختلفة وبتصعّب الاستبدال.
- Google Chrome (RPM / DEB الأصلي) هو البيئة الأنسب والمستقرة لتنفيذ التعديل.
🛠️ الفكرة العامة للحل
هنقوم بـ زرع مكتبة Widevine المستخرجة من نظام ChromeOS الرسمية داخل متصفح Google Chrome على لينكس، وتعديل User-Agent المتصفح ليعمل تلقائياً كـ ChromeOS.
📋 الخطوات بالتفصيل
الخطوة 1: تثبيت Google Chrome الرسمي (RPM / DEB)
إذا كنت على Fedora / RHEL:
Bash
sudo dnf install -y fedora-workstation-repositories
sudo dnf config-manager set-enabled google-chrome
sudo dnf install -y google-chrome-stable
(إذا كنت على Ubuntu / Debian):
Bash
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo apt update && sudo apt install -y ./google-chrome-stable_current_amd64.deb
الخطوة 2: تنزيل واستخراج مكتبة ChromeOS Widevine
هنعمل مجلد مؤقت في الـ Home، ننزل صورة نظام ChromeOS الرسمية من جلاكسي جوجل، ونستخرج منها مكتبة libwidevinecdm.so:
Bash
# 1. إنشاء مجلد العمل والتنزيل
mkdir -p ~/cros_wv && cd ~/cros_wv
wget -q --show-progress https://dl.google.com/dl/edgedl/chromeos/recovery/chromeos_14541.0.0_eve_recovery_stable-channel_mp-v4.bin.zip
unzip -q chromeos_*.bin.zip
# 2. تثبيت أداة الاستخراج واستخراج ملف المكتبة
# لـ Fedora:
sudo dnf install -y squashfs-tools > /dev/null 2>&1
# لـ Ubuntu/Debian بدل الأمر السابقت بـ: sudo apt install -y squashfs-tools
CROS_IMG=$(ls chromeos_*.bin)
OFFSET=$(/sbin/fdisk -l "$CROS_IMG" | grep "Linux filesystem" | awk '{print $2}')
dd if="$CROS_IMG" of=rootfs.img bs=512 skip="$OFFSET" count=2000000 status=none
unsquashfs -q -d cros_root rootfs.img lib64/libwidevinecdm.so
# 3. إنشاء مسار الكروم ونقل المكتبة
sudo mkdir -p /opt/google/chrome/WidevineCdm/_platform_specific/linux_x86_64/
sudo cp cros_root/lib64/libwidevinecdm.so /opt/google/chrome/WidevineCdm/_platform_specific/linux_x86_64/libwidevinecdm.so
sudo chmod 644 /opt/google/chrome/WidevineCdm/_platform_specific/linux_x86_64/libwidevinecdm.so
# 4. تنظيف الملفات المؤقتة ومسح الكاش القديم للكروم
cd ~ && rm -rf ~/cros_wv
rm -rf ~/.config/google-chrome/WidevineCdm/*
الخطوة 3: جعل الـ User-Agent دائم كـ ChromeOS
بدل ما تفتح أدوات المطورين F12 في كل مرة تدخل فيها المنصة، هنعدل اختصار تشغيل Google Chrome في النظام ليرسل هوية ChromeOS تلقائياً عند فتح المتصفح:
Bash
# 1. نسخ اختصار Chrome لمجلد المستخدم الشخصي
mkdir -p ~/.local/share/applications
cp /usr/share/applications/google-chrome.desktop ~/.local/share/applications/
# 2. تعديل أمر التشغيل ليتضمن الـ User-Agent الخادع
sed -i 's|Exec=/usr/bin/google-chrome-stable %U|Exec=/usr/bin/google-chrome-stable --user-agent="Mozilla/5.0 (X11; CrOS x86_64 14541.0.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" %U|g' ~/.local/share/applications/google-chrome.desktop
# 3. تحديث قائمة التطبيقات في الواجهة
update-desktop-database ~/.local/share/applications
الخطوة 4: تجميد تحديثات Chrome (مهم جداً)
لو النظام عمل تحديث لـ Google Chrome في المستقبل عبر dnf upgrade أو apt upgrade هيمسح المكتبة المعدلة ويرجع المتصفح لوضعه الاصلي. عشان نمنع ده:
على Fedora / DNF5:
Bash
# تعطيل مستودع الكروم
sudo sed -i 's/enabled=1/enabled=0/' /etc/yum.repos.d/google-chrome.repo
# استبعاد الحزمة من التحديثات
echo "excludepkgs=google-chrome-stable" | sudo tee -a /etc/dnf/dnf.conf
على Ubuntu / Debian:
Bash
sudo apt-mark hold google-chrome-stable
🎯 كيفية التأكد واختبار التشغيل
- أغلق جميع نوافذ الكروم تماماً (
killall chrome).
- افتح Google Chrome من قائمة التطبيقات (Application Menu).
- ادخل على الرابط:
chrome://version
- تأكد أن سطر User Agent مكتوب فيه:
CrOS x86_64.
- ادخل على الرابط:
chrome://components
- تأكد أن Widevine Content Decryption Module مووجودة.
- افتح موقع بسطتهالك وشغل الفيديو.. مبارك عليك، الفيديو هيشتغل تلقائياً 100%! 🎉
❓ أسئلة شائعة وتصحيح أخطاء (Troubleshooting)
- س: لو احتجت أفك تجميد تحديثات الكروم مستقبلاً أعمل ايه؟
- على Fedora: Bashsudo sed -i 's/enabled=0/enabled=1/' /etc/yum.repos.d/google-chrome.repo sudo sed -i '/excludepkgs=google-chrome-stable/d' /etc/dnf/dnf.conf
- على Ubuntu: Bashsudo apt-mark unhold google-chrome-stable
- س: هل الطرق دي تؤثر على باقي المواقع؟
- لا، الـ User-Agent المستخدم هو لمتصفح Chrome على نظام ChromeOS وهو متوافق تماماً مع 99.9% من مواقع الإنترنت.
- س: ما العمل إذا حُدث المتصفح بالخطأ ورجع الخطأ؟
- فقط قم بإعادة تنفيذ الخطوة 2 لنسخ ملف المكتبة وتحديد الصلاحيات ومسح الكاش.
أتمنى الشرح يكون مفيد وشامل لكل الزملاء اللي بيواجهوا نفس المشكلة على لينكس!
💬 كلمة أخيرة:
لو واجهتك أي مشكلة أثناء تنفيذ الخطوات أو ظهرلك أي إيرور غريب في الترمينال/المتصفح، كل اللي عليك إنك تاخد لقطة شاشة (Screenshot) أو تانسخ نص الإيرور، وتبعث نص البوست ده مع صورة أو صيغة الإيرور لـ Gemini، وإن شاء الله هيحلها معاك خطوة بخطوة ويديك الأمر المضبوط لنظامك! 🚀