LINUX.ORG.RU

История изменений

Исправление kostik87, (текущая версия) :

Проверил на Debian Bookworm:

dpkg -L busybox
ldd /bin/busybox
ldd /lib/x86_64-linux-gnu/libresolv.so.2
ldd /lib/x86_64-linux-gnu/libc.so.6
ldd /lib64/ld-linux-x86-64.so.2
mkdir iniramfs/in/{bin,sbin,etc,proc,sys,dev,lib64,lib,sbin} -p
cp /lib64/ld-linux-x86-64.so.2 iniramfs/in/lib64/
cp /lib/x86_64-linux-gnu/libc.so.6 iniramfs/in/lib
cp /lib/x86_64-linux-gnu/libresolv.so.2 iniramfs/in/lib
cp /bin/busybox iniramfs/in/bin/
cd iniramfs/in/bin/
ln -s busybox sh
ln -s busybox mount
ln -s busybox echo
ln -s busybox ls
ln -s busybox cat
ln -s busybox dmesg
mknod iniramfs/in/dev/console c 5 1
mknod iniramfs/in/dev/null c 1 3
echo "#!/bin/sh
mount -t proc proc /proc
mount -t sysfs sysfs /sys
exec /bin/sh" > iniramfs/in/init
chmod +x iniramfs/in/init
cd iniramfs/in/sbin/ && ln -s ../init && cd ../bin && ln -s ../init && cd ../
find . -print0 | cpio --null -ov --format=newc | gzip -9 > ../initramfs.cpio.gz
cp ../initramfs.cpio.gz /boot/

Там busybox динамически собран и нужны 3 библиотеки.

Далее в загрузчике:

        echo    'Loading Linux 6.1.0-35-amd64 ...'
        linux   /boot/vmlinuz-6.1.0-35-amd64
        echo    'Loading initial ramdisk ...'
        initrd  /boot/initramfs.cpio.gz

Проверил, всё загружается, ядро монтирует cpio и запускается sh.

Исправление kostik87, :

Проверил на Debian Bookworm:

dpkg -L busybox
ldd /bin/busybox
ldd /lib/x86_64-linux-gnu/libresolv.so.2
ldd /lib/x86_64-linux-gnu/libc.so.6
ldd /lib64/ld-linux-x86-64.so.2
mkdir iniramfs/in/{bin,sbin,etc,proc,sys,dev,lib64,lib,sbin} -p
cp /lib64/ld-linux-x86-64.so.2 iniramfs/in/lib64/
cp /lib/x86_64-linux-gnu/libc.so.6 iniramfs/in/lib
cp /lib/x86_64-linux-gnu/libresolv.so.2 iniramfs/in/lib
cp /bin/busybox iniramfs/in/bin/
cd iniramfs/in/bin/
ln -s busybox sh
ln -s busybox mount
ln -s busybox echo
ln -s busybox ls
ln -s busybox cat
ln -s busybox dmesg
mknod iniramfs/in/dev/console c 5 1
mknod iniramfs/in/dev/null c 1 3
echo "#!/bin/sh
mount -t proc proc /proc
mount -t sysfs sysfs /sys
exec /bin/sh" > iniramfs/in/init
chmod +x iniramfs/in/init
cd iniramfs/in/sbin/ && ln -s ../init && cd ../bin && ln -s ../init
find . -print0 | cpio --null -ov --format=newc | gzip -9 > ../initramfs.cpio.gz
cp ../initramfs.cpio.gz /boot/

Там busybox динамически собран и нужны 3 библиотеки.

Далее в загрузчике:

        echo    'Loading Linux 6.1.0-35-amd64 ...'
        linux   /boot/vmlinuz-6.1.0-35-amd64
        echo    'Loading initial ramdisk ...'
        initrd  /boot/initramfs.cpio.gz

Проверил, всё загружается, ядро монтирует cpio и запускается sh.

Исходная версия kostik87, :

Проверил на Debian Bookworm:

dpkg -L busybox
ldd /bin/busybox
ldd /lib/x86_64-linux-gnu/libresolv.so.2
ldd /lib/x86_64-linux-gnu/libc.so.6
ldd /lib64/ld-linux-x86-64.so.2
mkdir iniramfs/in/{bin,sbin,etc,proc,sys,dev,lib64,lib,sbin} -p
cp /lib64/ld-linux-x86-64.so.2 iniramfs/in/lib64/
cp /lib/x86_64-linux-gnu/libc.so.6 iniramfs/in/lib
cp /lib/x86_64-linux-gnu/libresolv.so.2 iniramfs/in/lib
cp /bin/busybox iniramfs/in/bin/
cd iniramfs/in/bin/
ln -s busybox sh
ln -s busybox mount
ln -s busybox echo
ln -s busybox ls
ln -s busybox cat
ln -s busybox dmesg
mknod iniramfs/in/dev/console c 5 1
mknod iniramfs/in/dev/null c 1 3
echo "#!/bin/sh
echo "Initramfs booted"
mount -t proc proc /proc
mount -t sysfs sysfs /sys
exec /bin/sh" > iniramfs/in/init
chmod +x iniramfs/in/init
cd iniramfs/in/sbin/ && ln -s ../init && cd ../bin && ln -s ../init
find . -print0 | cpio --null -ov --format=newc | gzip -9 > ../initramfs.cpio.gz
cp ../initramfs.cpio.gz /boot/

Там busybox динамически собран и нужны 3 библиотеки.

Далее в загрузчике:

        echo    'Loading Linux 6.1.0-35-amd64 ...'
        linux   /boot/vmlinuz-6.1.0-35-amd64
        echo    'Loading initial ramdisk ...'
        initrd  /boot/initramfs.cpio.gz

Проверил, всё загружается, ядро монтирует cpio и запускается sh.