আমি কীভাবে একটি রিয়েলটাইম কার্নেল ইনস্টল করতে পারি?


26

অনুরূপ প্রশ্ন সহ আমি অনেক থ্রেড পড়েছি, তবে উত্তরগুলি পড়ার পরে, আমি খুব বিভ্রান্ত হয়ে পড়েছি। আমি তাদের মধ্যে প্রচুর ইউআরএল সংগ্রহস্থল সহ পেয়েছি তবে লোকেদের উবুন্টুর এক বা দুটি সংস্করণের জন্য কোন সংগ্রহস্থলগুলি তৈরি করা হয় সে সম্পর্কে আলোচনা করা হয়েছে, তবে আমি ১১.১০ সংস্করণ সম্পর্কে কিছুই পাইনি। খুব তাড়াতাড়ি এটি জিজ্ঞাসা করা হয়? একটি রিয়েলটাইম কার্নেল পেতে আমার উবুন্টুকে ডাউনগ্রেড করা উচিত?


3
আপনি কি রিয়েলটাইম বনাম কম-ল্যাটেন্সি কার্নেলটি নিশ্চিত? আপনার প্রয়োজনীয়তা কি?
belacqua

উত্তর:


27

আরটি কার্নেল প্রকল্পের দীর্ঘমেয়াদী লক্ষ্য হ'ল মানক কার্নেলের সমস্ত আরটি কার্যকারিতা শেষ করা এবং এটি দুর্দান্তভাবে অগ্রসর হচ্ছে । আরটি প্যাচ অতীতে অনিয়মিত প্রকাশ পেয়েছিল এবং আগস্ট ২০১১-এ কার্নেল.অর্গ.র হ্যাকিং কয়েক মাসের জন্য 3.0.০ সংস্করণকে অ্যাক্সেসযোগ্য করে তুলেছিল, তবে এখন জিনিসগুলি ভাল দেখাচ্ছে: ৩.২ এর জন্য একটি প্যাচ রয়েছে, যার সাথে কার্নেলের সাথে মিল রয়েছে ( উবুন্টু ১১.১০ এবং ১২.০৪ সংস্করণ) এবং অন্যটি ৩.৪ এর জন্য এখানে দেখুন

আপনি যদি নির্ভুল ব্যবহার করছেন তবে আপনি অ্যালেসিও বোগানীর রিয়েলটাইম পিপিএ ব্যবহার করতে পারেন , যিনি ভালভাবে ভ্যানিলা কার্নেলটি আরটি প্যাচ প্রয়োগ করে প্যাকেজ করেছেন এবং যথার্থ সংস্করণ সংখ্যার সাথে এটি সমন্বয় করে চলেছেন।

আপনি যদি হাতে হাতে আরটি কার্নেল তৈরি করতে পছন্দ করেন তবে প্রথমে প্রয়োজনীয় সফ্টওয়্যার প্যাকেজ ইনস্টল করুন:

sudo apt-get install kernel-package fakeroot build-essential libncurses5-dev

তারপরে ভ্যানিলা কার্নেল এবং আরটি প্যাচটি আনুন (সংস্করণ নম্বরগুলি কিছুটা পুরানো, প্রয়োজনীয়ভাবে টুইঙ্ক করুন):

mkdir -p ~/tmp/linux-rt
cd ~/tmp/linux-rt
wget http://www.kernel.org/pub/linux/kernel/v3.x/linux-3.4.tar.bz2
# Alternatively, try http://mirror.be.gbxs.net/pub/linux/kernel/projects/rt/3.4/patch-3.4-rt7.patch.bz2
# if the following is not available:
wget http://www.kernel.org/pub/linux/kernel/projects/rt/3.4/patch-3.4-rt7.patch.bz2
tar xjvf linux-3.4.tar.bz2
cd linux-3.4
patch -p1 < <(bunzip2 -c ../patch-3.4-rt7.patch.bz2)

তারপরে কার্নেলটি কনফিগার করুন:

cp /boot/config-$(uname -r) .config && make oldconfig

যেখানে আপনাকে জিজ্ঞাসা করা হলে "পূর্ণ প্রিম্পশন" (বিকল্প 5) নির্বাচন করা উচিত এবং প্রতিটি প্রম্পটে এন্টার টিপে তার পূর্বনির্ধারিত মানটিতে সমস্ত কিছু ছেড়ে দিন। -লাটেন্সি কার্নেলের কনফিগারেশন-জেনেরিক কার্নেলের চেয়ে ভাল আরম্ভের পয়েন্ট হতে পারে।

তারপরে কার্নেলটি তৈরি করুন:

sed -rie 's/echo "\+"/#echo "\+"/' scripts/setlocalversion
make-kpkg clean
CONCURRENCY_LEVEL=$(getconf _NPROCESSORS_ONLN) fakeroot make-kpkg --initrd --revision=0 kernel_image kernel_headers

এবং অবশেষে আপনার নতুন কার্নেলটি এর সাথে ইনস্টল করুন:

sudo dpkg -i ../linux-{headers,image}-3.4.0-rt7_0_*.deb

আপনি এই মুহুর্তে আপনার আরটি কার্নেলটি পুনরায় বুট করতে সক্ষম হবেন। যদি আপনার কার্নেল বুট করতে ব্যর্থ হয় তবে আপনি বুট পরামিতিগুলি ডাবল-চেক করে নিন এবং সেটিকে আপনার বুটলোডারে সেই অনুযায়ী সম্পাদনা করুন। উদাহরণস্বরূপ, এসিপিআই ফাংশনগুলি আপনার রিয়েল টাইম সিস্টেমকে প্রভাবিত করতে পারে (rt.wiki.kernel.org তে বর্ণিত)। এ্যাসপিআই = অফ যোগ করা যেমন ক্ষেত্রে সমাধান হতে পারে।

লক্ষ্য করুন যে আরটি প্যাচটি এনভিডিয়া বাইনারি ড্রাইভারের সাথে সামঞ্জস্যপূর্ণ নয় (তবে নীচে ব্যবহারকারী "আরটি-কার্নেল" পোস্টটি দেখুন, এবং এই প্রশ্নটি কার্যবিধির জন্য দেখুন) এবং উবুন্টু কার্নেল প্যাচগুলি উপস্থিত থাকবে না, সুতরাং আপনার থাকতে পারে হার্ডওয়ার সমস্যাগুলি যা আপনার আগে ছিল না। এটি পিপিএ প্যাকেজ এবং সংকলিত কার্নেল উভয়ের ক্ষেত্রেই সত্য। আপনি সর্বদা আপনার-জেনেরিক কার্নেলে বুট করতে পারেন এবং রিয়েলটাইম কার্নেল প্যাকেজগুলি আনইনস্টল করতে পারেন যদি তারা আপনাকে অবশ্যই সমস্যা দেয় তবে অবশ্যই।


1
দুর্দান্ত নির্দেশ! আমি তাদের অনুসরণ করার আগে একটি 3.4 মেইনলাইন কার্নেল ইনস্টল করার পরামর্শ দিচ্ছি, এমন কনফিগারেশন ফাইলটি পাওয়ার জন্য যা সর্বাধিক মেলে। এছাড়াও, এএমডি 6464 এর জন্য অফিশিয়াল প্রাকম্পম্পাইল ৩.৪.২৯ বাইনারিগুলি ডিইবি প্যাকেজ হিসাবে এখানে উপলব্ধ রয়েছে (চিঠির এই নির্দেশাবলী অনুসরণ করে
সে.এম.সি

আমি এই নির্দেশাবলী অনুসরণ করে সংকলিত কার্নেলটি চালাতে পারিনি। সুতরাং ভ্যানিলা কার্নেলের পরিবর্তে kernel.org, আমি উবুন্টুর linux-sourceপ্যাকেজটি ব্যবহার করে ডাউনলোড করেছি aptএবং এটি তখন সফলভাবে কাজ করেছিল।
মেলবিয়াস

3

আর একটি বিকল্প হ'ল কেএক্সস্টুডিওর রেপোগুলি থেকে আরটি কার্নেল ইনস্টল করা। তিনি অডিও এবং সঙ্গীত প্রযোজনাগুলির উদ্দেশ্যে প্যাকেজগুলির একটি সেট রাখেন এবং তার কাছে একটি আসল সময় এবং কম বিলম্বিত প্যাকেজ রয়েছে।

http://kxstudio.sourceforge.net/Main_Page https://launchpad.net/~kxstudio-team/+archive/kernel


2

যতদূর আমি জানি, রিয়েলটাইম কার্নেলের বিকাশ উবুন্টু মুক্তির চক্রের সাথে তাল মিলেনি। যদি আপনাকে অবশ্যই রিয়েলটাইম কার্নেল চালাতে হয় তবে আপনাকে সম্ভবত একটি পুরানো সংস্করণ চালাতে হবে।

আরও কিছু তথ্যের জন্য https://help.ubuntu.com/commune/UbuntuStudio/RealTimeKernel দেখুন

নোট করুন যে নিম্ন-বিলম্বিত কার্নেলটিতে কমপক্ষে কিছু বর্তমান কাজ উপস্থিত রয়েছে: https://launchpad.net/~abogani/+archive/ppa?field.series_filter=oneiric


2

আপনি যদি এনভিডিয়া বাইনারি ড্রাইভার ব্যবহারের উপর নির্ভর করেন তবে আপনি এই প্যাচটি দিয়ে মূল ড্রাইভারটি প্যাচ করতে পারেন (কেবলমাত্র আরটি-প্যাচ সহ 3.4+ কার্নেলের জন্য) এই প্যাচটি কোনও গ্যারান্টি বা ওয়ারেন্টি ছাড়াই আসে! এটি আপনার নিজের ঝুঁকিতে ব্যবহার করুন-

Index: kernel/conftest.sh
===================================================================
--- kernel/conftest.sh.orig
+++ kernel/conftest.sh
@@ -95,7 +95,7 @@
         fi
     fi

-    CFLAGS="$CFLAGS $OUTPUT_CFLAGS -I$HEADERS $AUTOCONF_CFLAGS"
+    CFLAGS="$CFLAGS $OUTPUT_CFLAGS -I$HEADERS -I$OUTPUT/arch/x86/include/generated $AUTOCONF_CFLAGS"

     test_xen

@@ -126,7 +126,7 @@
     CFLAGS="$BASE_CFLAGS $MACH_CFLAGS $OUTPUT_CFLAGS -I$HEADERS $AUTOCONF_CFLAGS"

     if [ "$ARCH" = "i386" -o "$ARCH" = "x86_64" ]; then
-        CFLAGS="$CFLAGS -I$SOURCES/arch/x86/include -I$SOURCES/arch/x86/include/generated"
+        CFLAGS="$CFLAGS -I$SOURCES/arch/x86/include -I$OUTPUT/arch/x86/include/generated"
 elif [ "$ARCH" = "ARMv7" ]; then
     CFLAGS="$CFLAGS -I$SOURCES/arch/arm/include -I$SOURCES/arch/arm/include/generated"
     fi
@@ -512,7 +512,12 @@
             # and if it as an 'event' member.
             #
             echo "$CONFTEST_PREAMBLE
-            #include <asm/system.h>
+            #include <linux/version.h>
+       #if LINUX_VERSION_CODE > KERNEL_VERSION(3, 3, 0)
+         #include <asm/switch_to.h>
+       #else
+         #include <asm/system.h>
+       #endif
             #include <linux/pm.h>
             void conftest_pm_message_t(pm_message_t state) {
                 pm_message_t *p = &state;
@@ -965,11 +970,12 @@
             #
             echo "$CONFTEST_PREAMBLE
             #include <linux/acpi.h>
+            #include <acpi/acpixf.h>
             void conftest_acpi_walk_namespace(void) {
                 acpi_walk_namespace();
             }" > conftest$$.c

-            $CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
+            #CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
             rm -f conftest$$.c

             if [ -f conftest$$.o ]; then
@@ -980,6 +986,7 @@

             echo "$CONFTEST_PREAMBLE
             #include <linux/acpi.h>
+       #include <acpi/acpixf.h>
             void conftest_acpi_walk_namespace(void) {
                 acpi_walk_namespace(0, NULL, 0, NULL, NULL, NULL, NULL);
             }" > conftest$$.c
@@ -996,6 +1003,7 @@

             echo "$CONFTEST_PREAMBLE
             #include <linux/acpi.h>
+            #include <acpi/acpixf.h>
             void conftest_acpi_walk_namespace(void) {
                 acpi_walk_namespace(0, NULL, 0, NULL, NULL, NULL);
             }" > conftest$$.c
@@ -1603,6 +1611,9 @@
                 fi
             fi
         fi
+
+   RET=0
+   SELECTED_MAKEFILE=Makefile.kbuild

         if [ "$RET" = "0" ]; then
             ln -s $SELECTED_MAKEFILE Makefile
Index: kernel/nv-linux.h
===================================================================
--- kernel/nv-linux.h.orig
+++ kernel/nv-linux.h
@@ -111,7 +111,11 @@
 #include <linux/timer.h>

 #include <asm/div64.h>              /* do_div()                         */
+#if LINUX_VERSION_CODE > KERNEL_VERSION(3, 3, 0)
+#include <asm/switch_to.h>
+#else
 #include <asm/system.h>             /* cli, sli, save_flags             */
+#endif
 #include <asm/io.h>                 /* ioremap, virt_to_phys            */
 #include <asm/uaccess.h>            /* access_ok                        */
 #include <asm/page.h>               /* PAGE_OFFSET                      */
@@ -291,17 +295,17 @@
 #endif
 #endif

-#if defined(CONFIG_PREEMPT_RT)
-typedef atomic_spinlock_t         nv_spinlock_t;
-#define NV_SPIN_LOCK_INIT(lock)   atomic_spin_lock_init(lock)
-#define NV_SPIN_LOCK_IRQ(lock)    atomic_spin_lock_irq(lock)
-#define NV_SPIN_UNLOCK_IRQ(lock)  atomic_spin_unlock_irq(lock)
-#define NV_SPIN_LOCK_IRQSAVE(lock,flags) atomic_spin_lock_irqsave(lock,flags)
+#if defined(CONFIG_PREEMPT_RT_FULL)
+typedef raw_spinlock_t            nv_spinlock_t;
+#define NV_SPIN_LOCK_INIT(lock)   raw_spin_lock_init(lock)
+#define NV_SPIN_LOCK_IRQ(lock)    raw_spin_lock_irq(lock)
+#define NV_SPIN_UNLOCK_IRQ(lock)  raw_spin_unlock_irq(lock)
+#define NV_SPIN_LOCK_IRQSAVE(lock,flags) raw_spin_lock_irqsave(lock,flags)
 #define NV_SPIN_UNLOCK_IRQRESTORE(lock,flags) \
-  atomic_spin_unlock_irqrestore(lock,flags)
-#define NV_SPIN_LOCK(lock)        atomic_spin_lock(lock)
-#define NV_SPIN_UNLOCK(lock)      atomic_spin_unlock(lock)
-#define NV_SPIN_UNLOCK_WAIT(lock) atomic_spin_unlock_wait(lock)
+  raw_spin_unlock_irqrestore(lock,flags)
+#define NV_SPIN_LOCK(lock)        raw_spin_lock(lock)
+#define NV_SPIN_UNLOCK(lock)      raw_spin_unlock(lock)
+#define NV_SPIN_UNLOCK_WAIT(lock) raw_spin_unlock_wait(lock)
 #else
 typedef spinlock_t                nv_spinlock_t;
 #define NV_SPIN_LOCK_INIT(lock)   spin_lock_init(lock)
@@ -956,8 +960,8 @@
     return ret;
 }

-#if defined(CONFIG_PREEMPT_RT)
-#define NV_INIT_MUTEX(mutex) semaphore_init(mutex)
+#if defined(CONFIG_PREEMPT_RT_FULL)
+#define NV_INIT_MUTEX(mutex) sema_init(mutex,1)
 #else
 #if !defined(__SEMAPHORE_INITIALIZER) && defined(__COMPAT_SEMAPHORE_INITIALIZER)
 #define __SEMAPHORE_INITIALIZER __COMPAT_SEMAPHORE_INITIALIZER

"Nv295.33_3.33 + _rt.patch" হিসাবে প্যাচটি সংরক্ষণ করুন। প্যাচ-> প্রয়োগ করুন

sh NVIDIA-Linux-x86_64-295.33.run --apply-patch nv295.33_for 3.3+_rt.patch

এটি "এনভিআইডিআইএ-লিনাক্স-এক্স 86_64-295.33-custom.run" নামে একটি নতুন এনভিডিয়া বাইনারি ইনস্টলার তৈরি করবে।

সাথে ইনস্টলারটি চালান

sh NVIDIA-Linux-x86_64-295.33-custom.run

এই প্যাচটি কোনও গ্যারান্টি বা ওয়ারেন্টি সহ আসে না! এটি আপনার নিজের ঝুঁকিতে ব্যবহার করুন।

রিবুট করুন এবং মজা করুন।

আপনি এনভি ফোরামে আরও তথ্য পাবেন। সেখানে আপনি 295.40 সিরিজের জন্যও সমাধান পেতে পারেন।

http://www.nvnews.net/vbulletin/showthread.php?p=2546508


ঝরঝরে। প্যাচড এনভিডিয়া ড্রাইভারও জেনেরিকের সাথে কাজ করে? ইনস্টলারটি ব্যবহার না করে কীভাবে একটি .deb উত্পাদন করতে হবে তা জানা দরকারী।
pablomme

1
আপনার প্যাচটি লাইনের শুরুতে চারটি স্পেস হারিয়েছে elif [ "$ARCH" = "ARMv7" ]; thenএবং এর পরের একটি - এটি ঠিক না করা থাকলে এটি প্রযোজ্য হবে না। এছাড়াও, আপনি যে NVIDIA চালক সংস্করণ 295,33 থেকে ডাউনলোড করা যাবে উল্লেখ করতে চাইতে পারেন nvidia.com/object/linux-display-amd64-295.33-driver.html (এটা কোন সর্বশেষ না, কিন্তু phoronix এ একটি রিপোর্ট দ্বারা বিচার। org আজকের সময়ের থেকে আপাতত 295.40 না ব্যবহার করা ভাল।
পাবলোমমে

sudoইনস্টলেশন কমান্ড থেকে অনুপস্থিত রয়েছে, পাশাপাশি আপনাকে কোনও ভিটিতে স্যুইচ করতে হবে এবং sudo killall Xorg && sudo stop lightdmএটি সম্পাদন করার আগে করণ করা প্রয়োজন কারণ এটি জোর দেয় যে এক্স অবশ্যই চলবে না। তা ছাড়া, সবকিছু সুন্দরভাবে কাজ করে - এখন আমি বাগ বাগগুলি এড়াতে পারি lalaunchpad.net/bugs/920120 এবং ডুয়াল-স্ক্রিন আর্ডার চালাতে পারি / প্যাচের জন্য ধন্যবাদ!
পাব্লমমে

এই প্রশ্নের সাথে কিছুই করার নেই, আমি কি ভুল করছি?
ব্রুনো পেরেইরা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.