با سلام خدمت همگی
من یه تازه کارم
و بهم پروژه دادن که یه سیستم کال به جدید ترین آپدیت کرنل لینوکس اضافه کنیم و اونو کامپایل کنیم و خلاصه سیستم کال جدیدُ ببینیم
من قبلا آپدیت کرنل رو انجام دادم سیستمم مشکلی نداشته باهاش
ولی الان بعد از اضافه کردن سیستم کال و کامپایل و نصب کرنل ، وقتی سیستممو ری استارت میکنم دیگه با کرنل جدید بالا نمیاره
با اینکه کرنل اضافه شده ولی فقط میتونم با کرنل قبل کار کنم.
ممنون میشم اگر راهنماییم کنید
توضیح بده چجوری کرنل رو نصب میکنی؟
کل دستورایی که زدم ایناس:
sudo apt-get update
sudo apt-get upgrade
sudo -s
apt-get install gcc
ap-get install python3-pip python-dev libffi-dev libssl-dev libxml2-dev libxal1-dev libjpeg8-dev zlib1j-dev
apt-get install libncursesw5-dev
wget
https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.7.10.tar.gz/tar -xvf linux-5.7.10.tar.gz -C /usr/src
cd /usr/src
cd linux-5.7.10
mkdir helloworld
cd helloworld
gedit helloworld.c
اینو توی hello world.c نوشتم:
#include <linux/kernel.h<
asmlinkage long sys_helloworld(void({
print("Hello world\n");
return 0;
{
asmlinkage long __x64_sys_helloworld(void({
print("Hello world2\n");
return 0;
{
gedit Makefile
اینارو توی میک فایل نوشتم:
obj-y :=helloworld.o
cd ..
gedit Makefile
اینجا helloworld / رو میک فایل شاخه اصلی اضافه کردم:
core-y +=kernel/.../ block/ helloworld/
cd include/linux
gedit syscalls.h
اینو قبل از #endif وارد کردم:
asmlinkage long sys_helloworld(void);
cd ../..
cd arch/x86/entry/sys calls
gedit syscall_64.tbl
قبل از
#
#x-32-....
اینو وارد کردم:
362 439 64 helloworld sys_hello world
(اینجا توی تاپیک الان ترتیب کدا بهم ریخت توی این خط)
ترمینالُ بستم باز کردم:
sudo apt install gcc libncurses5-dev dpkg-dev libssl-dev flex bison
cd /usr/src/linux-5.7.10
make menuconfig
تنظیمات پیکر بندی:
وارد 64-bit kernel شدم سیو کردم .config رو هم اوکی کردم و از تنظیمات بیرون رفتم
make oldconfig
make
make modules_install install
make install
و بعد ری استارت
که دیگه نیورد