1. Chạy LAB
Copy 6 lệnh dưới → dán trên PowerShell bằng cách click chuột phải
→ không phải gõ gõ từng lệnh mất thời gian
Chạy 6 lệnh sau trên Powershell quyền Administrator → dấu # là giải thích (comment)
# Giả sử có ổ đĩa D:
# Tạo thư mục D:compile + chuyển vào thư mục
mkdir D:compile > $null ; cd D:compile
# Khai báo biến là link tới file cần download
$URL="https://devsecops.edu.vn/wp-content/uploads/2023/12/compile-Ed450FTnFAez6CLO7BijSmxIAq7xtA.zip"
# Download file zìa
Invoke-WebRequest -URI $URL -OutFile compile.zip
# Giải nén file + đổi tên
Expand-Archive compile.zip -DestinationPath .
# Coi trong thư mục đang đứng có gì
dir
# Tạo máy ảo + chạy LAB từ A tới Á
vagrant up
2. Các file nội dung mới nhất ở đây
Vagrantfile
Chỉnh lại số CPU nếu máy bạn mạnh hơn
Vagrant.configure("2") do |config|
config.vm.define "compile" do |compile|
compile.vm.box = "ubuntu/jammy64"
compile.vm.hostname = 'linuxkernel'
compile.vm.synced_folder ".", "/vagrant"
compile.vm.provider :virtualbox do |v|
v.gui = true
# Chỉnh lại số CPU nếu máy bạn mạnh hơn
v.cpus = 16
v.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
v.customize ["modifyvm", :id, "--memory", 8192]
v.customize ["modifyvm", :id, "--name", "Ubuntu2204-Compile-Kernel-Config-Built-In"]
end
compile.vm.provision "shell", path: "compile-kernel-config-built-in-defconfig-modify.sh"
end
end
compile-kernel-config-built-in-defconfig-modify.sh
#!/bin/bash
echo -e "nB1. Cài các gói cần thiết để biên dịchn"
export DEBIAN_FRONTEND=noninteractive
apt update
apt install curl tar xz-utils make gcc flex bison bc libelf-dev libssl-dev -y
echo -e "nB2. Tải Linux kernel zìan"
version="6.6.7"
# Về /root
cd
curl -O https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-${version}.tar.xz
tar xf linux-${version}.tar.xz
rm -f linux-${version}.tar.xz
cd linux-${version}
echo -e "nB3. Chuẩn bị biên dịch Linux kerneln"
# Tắt 1 số chức năng của make defconfig
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/x86/configs/x86_64_defconfig
# Tắt Netfilter
sed -i '/^CONFIG_NETFILTER.*/d' arch/x86/configs/x86_64_defconfig
# Tắt Netfilter
sed -i '/^CONFIG_NF_.*/d' arch/x86/configs/x86_64_defconfig
# Tắt Netfilter
sed -i '/^CONFIG_IP_NF.*/d' arch/x86/configs/x86_64_defconfig
# Tắt Netfilter
sed -i '/^CONFIG_IP6_NF.*/d' arch/x86/configs/x86_64_defconfig
# Tắt Serial
sed -i '/^CONFIG_SERIAL.*/d' arch/x86/configs/x86_64_defconfig
# Tắt AGP
sed -i '/^CONFIG_AGP.*/d' arch/x86/configs/x86_64_defconfig
# Tắt DRM
sed -i '/^CONFIG_DRM.*/d' arch/x86/configs/x86_64_defconfig
# Tắt Sound
sed -i '/^CONFIG_SOUND.*/d' arch/x86/configs/x86_64_defconfig
# Tắt USB
sed -i '/^CONFIG_USB.*/d' arch/x86/configs/x86_64_defconfig
# Tắt NFS
sed -i '/^CONFIG_NFS.*/d' arch/x86/configs/x86_64_defconfig
# Tắt SELinux
sed -i '/^CONFIG_SECURITY.*/d' arch/x86/configs/x86_64_defconfig
# Tắt Debug
sed -i '/^CONFIG_DEBUG.*/d' arch/x86/configs/x86_64_defconfig
echo -e "nB4. Biên dịch Linux kernel có thời gian bắt + kết thúcn"
make defconfig
sed -i 's/^# CONFIG_IKCONFIG.*/CONFIG_IKCONFIG=y/g' .config
sed -i '/^CONFIG_IKCONFIG=.*/a # CONFIG_IKCONFIG_PROC is not set' .config
echo -e "n--- Số dòng biên dịch Linux kernel ---n"
grep ^[^#] .config | wc -l
echo "Thời gian bắt đầu: `date`" > /vagrant/compile-linux-kernel-defconfig-modify-time.txt
make -j`nproc`
make modules_install install
echo "Thời gian kết thúc: `date`" >> /vagrant/compile-linux-kernel-defconfig-modify-time.txt
echo -e "nB4. Giải nén .config ra khỏi vmlinuzn"
# Chép vmlinuz có .config ra máy Host
cp /boot/vmlinuz-${version} /vagrant/vmlinuz-${version}-defconfig-modify
curl -O https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/scripts/extract-ikconfig
chmod +x extract-ikconfig
./extract-ikconfig /boot/vmlinuz-${version} > config-${version}
# Chép config của Linux kernel ra máy Host
cp config-${version} /vagrant/config-${version}-defconfig-modify-boot-dir
# Chép initrd của Linux kernel ra máy Host
cp /boot/initrd.img-${version} /vagrant/initrd.img-${version}-defconfig-modify-boot-dir
echo -e "nvmlinuz mới biên dịch nặng bi nhiu?n"
ls -lh /boot
echo -e "nThời gian bắt đầu biên dịch + xong phimn"
cat /vagrant/compile-linux-kernel-defconfig-modify-time.txt
echo -e "nDevSecOps.Edu.VN mần cái nàyn"
# END