mirror of
https://github.com/superconvert/smart-os.git
synced 2024-11-22 18:20:30 +08:00
update script
This commit is contained in:
parent
94e3e14e13
commit
b1356c1b65
@ -20,6 +20,7 @@ LINUX_SRC_URL=https://mirror.bjtu.edu.cn/kernel/linux/kernel/v5.x/linux-5.8.6.ta
|
||||
#GLIBC_SRC_URL=https://ftp.gnu.org/gnu/glibc/glibc-2.32.tar.bz2
|
||||
GLIBC_SRC_URL=https://mirrors.ustc.edu.cn/gnu/glibc/glibc-2.27.tar.xz
|
||||
BUSYBOX_SRC_URL=https://busybox.net/downloads/busybox-1.34.1.tar.bz2
|
||||
PCIUTILS_SRC_URL=http://mj.ucw.cz/download/linux/pci/pciutils-3.8.0.tar.gz
|
||||
#GCC_SRC_URL=https://ftpmirror.gnu.org/gcc/gcc-7.5.0/gcc-7.5.0.tar.xz
|
||||
GCC_SRC_URL=https://mirrors.ustc.edu.cn/gnu/gcc/gcc-7.5.0/gcc-7.5.0.tar.xz
|
||||
#BINUTILS_SRC_URL=https://ftp.gnu.org/gnu/binutils/binutils-2.36.tar.xz
|
||||
@ -37,6 +38,7 @@ cd source
|
||||
LINUX_SRC_NAME=$(download_src ${LINUX_SRC_URL})
|
||||
GLIBC_SRC_NAME=$(download_src ${GLIBC_SRC_URL})
|
||||
BUSYBOX_SRC_NAME=$(download_src ${BUSYBOX_SRC_URL})
|
||||
PCIUTILS_SRC_NAME=$(download_src ${PCIUTILS_SRC_URL})
|
||||
GCC_SRC_NAME=$(download_src ${GCC_SRC_URL})
|
||||
BINUTILS_SRC_NAME=$(download_src ${BINUTILS_SRC_URL})
|
||||
cd ..
|
||||
@ -51,6 +53,7 @@ mkdir -pv ${build_dir}
|
||||
LINUX_SRC_DIR=$(unzip_src ".tar.xz" ${LINUX_SRC_NAME}); echo "unzip ${LINUX_SRC_NAME} source code"
|
||||
GLIBC_SRC_DIR=$(unzip_src ".tar.xz" ${GLIBC_SRC_NAME}); echo "unzip ${GLIBC_SRC_NAME} source code"
|
||||
BUSYBOX_SRC_DIR=$(unzip_src ".tar.bz2" ${BUSYBOX_SRC_NAME}); echo "unzip ${BUSYBOX_SRC_NAME} source code"
|
||||
PCIUTILS_SRC_DIR=$(unzip_src ".tar.gz" ${PCIUTILS_SRC_NAME}); echo "unzip ${PCIUTILS_SRC_NAME} source code"
|
||||
GCC_SRC_DIR=$(unzip_src ".tar.xz" ${GCC_SRC_NAME}); echo "unzip ${GCC_SRC_NAME} source code"
|
||||
BINUTILS_SRC_DIR=$(unzip_src ".tar.xz" ${BINUTILS_SRC_NAME}); echo "unzip ${BINUTILS_SRC_NAME} source code"
|
||||
|
||||
@ -297,18 +300,29 @@ if [ ! -d "glibc_install" ]; then
|
||||
--disable-werror \
|
||||
--disable-werror \
|
||||
CFLAGS="$CFLAGS"
|
||||
make -j8 && make install -j8 DESTDIR=${glibc_install} && cd .. && cd ..
|
||||
make -j8 && make install -j8 DESTDIR=${glibc_install}
|
||||
cd .. && cd ..
|
||||
fi
|
||||
|
||||
# 编译 busybox
|
||||
if [ ! -d "busybox_install" ]; then
|
||||
mkdir -pv busybox_install && cd ${BUSYBOX_SRC_DIR} && make distclean && make defconfig
|
||||
# 屏蔽掉 lspci 这个自带的太简单
|
||||
sed -i "s/CONFIG_LSPCI=y/# CONFIG_LSPCI is not set/" .config
|
||||
# 静态编译 sed -i "s/# CONFIG_STATIC is not set/CONFIG_STATIC=y/g" .config
|
||||
sed -i "s|.*CONFIG_SYSROOT.*|CONFIG_SYSROOT=\"${glibc_install}\"|" .config
|
||||
sed -i "s|.*CONFIG_EXTRA_CFLAGS.*|CONFIG_EXTRA_CFLAGS=\"-I${linux_install}/include -I${glibc_install}/include -L${glibc_install}/usr/lib64 $CFLAGS\"|" .config
|
||||
# 环境变量 PATH 的设定,因为 busybox 的 init 会覆盖用户设置的 PATH,只能源码进行编译
|
||||
sed -i "s|#define BB_ADDITIONAL_PATH \"\"|#define BB_ADDITIONAL_PATH \":/usr/local/sbin:/usr/local/bin\"|" include/libbb.h
|
||||
make busybox -j8 && make CONFIG_PREFIX=${busybox_install} install && cd ..
|
||||
make busybox -j8 && make CONFIG_PREFIX=${busybox_install} install
|
||||
cd ..
|
||||
fi
|
||||
|
||||
# 编译 pciutils ( busybox 的 lspci 太简单 )
|
||||
if [ ! -d "pciutils_install" ]; then
|
||||
mkdir -pv pciutils_install && cd ${PCIUTILS_SRC_DIR}
|
||||
CFLAGS="-L${glibc_install}/lib64 $CFLAGS" make -j8 && make install -j8 DESTDIR=${pciutils_install} PREFIX=/usr
|
||||
cd ..
|
||||
fi
|
||||
|
||||
# 编译 gcc
|
||||
@ -323,7 +337,8 @@ fi
|
||||
if [ ! -d "binutils_install" ]; then
|
||||
mkdir -pv binutils_install && cd ${BINUTILS_SRC_DIR} && make distclean
|
||||
./configure --prefix=/usr
|
||||
CFLAGS="-L${glibc_install}/lib64 $CFLAGS" make -j8 && make install -j8 DESTDIR=${binutils_install} && cd ..
|
||||
CFLAGS="-L${glibc_install}/lib64 $CFLAGS" make -j8 && make install -j8 DESTDIR=${binutils_install}
|
||||
cd ..
|
||||
fi
|
||||
|
||||
cd ..
|
||||
|
@ -95,6 +95,9 @@ echo "${CYAN}--- build initrd ---${NC}"
|
||||
# 这种方法也可以 mkinitramfs -k -o ./${diskfs}/boot/initrd 4.14.9
|
||||
# 利用 Busybox 采用脚本制作 init 脚本 https://blog.csdn.net/embeddedman/article/details/7721926
|
||||
|
||||
# 光驱挂载 : /dev/cdrom 是 /dev/sr0 的软连接,也就是说 /dev/sr0 才是实际意义上的光驱。所以没有软连接,
|
||||
# 照样可以挂载光驱。使用命令"mount /dev/sr0 /mnt/cdrom"便可以实现挂载。
|
||||
|
||||
make_init() {
|
||||
|
||||
cat<<"EOF">init
|
||||
@ -110,7 +113,7 @@ mount -t ext3 /dev/sda1 /mnt
|
||||
# 关闭内核烦人的输出信息
|
||||
echo 0 > /proc/sys/kernel/printk
|
||||
# 热插拔处理都交给 mdev
|
||||
echo /sbin/mdev > /proc/sys/kernel/hotplug
|
||||
# echo /sbin/mdev > /proc/sys/kernel/hotplug
|
||||
echo -e "\n\e[0;32mBoot took $(cut -d' ' -f1 /proc/uptime) seconds\e[0m"
|
||||
mkdir -p /dev/pts
|
||||
mount -t devpts devpts /dev/pts
|
||||
@ -121,7 +124,7 @@ mount --move /proc /mnt/proc
|
||||
mount --move /tmp /mnt/tmp
|
||||
# 切换到真正的磁盘系统上 rootfs ---> diskfs
|
||||
export LD_LIBRARY_PATH="/lib:/lib64:/usr/lib:/usr/lib64:/usr/local/lib:/usr/local/lib64:/usr/lib/x86_64-linux-gnu"
|
||||
exec switch_root -c /dev/console /mnt /sbin/init
|
||||
exec switch_root /mnt /sbin/init
|
||||
EOF
|
||||
|
||||
# /sbin/init [switch_root 执行] ---> /etc/inittab [定义了启动顺序] --->
|
||||
@ -169,6 +172,14 @@ cd ..
|
||||
#--------------------------------------------------------------
|
||||
echo "${CYAN}--- build diskfs ---${NC}"
|
||||
cp rootfs/* ${diskfs} -r
|
||||
|
||||
# 单独的 pciutils
|
||||
cp ${pciutils_install}/* ${diskfs} -r
|
||||
if [ -f "${diskfs}/usr/share/pci.ids.gz" ]; then
|
||||
mkdir -pv ${diskfs}/usr/local/share
|
||||
mv ${diskfs}/usr/share/pci.ids.gz ${diskfs}/usr/local/share/pci.ids.gz
|
||||
fi
|
||||
|
||||
# 带有 gcc 编译器
|
||||
if [ "${with_gcc}" = true ]; then
|
||||
echo "${RED} ... build with-gcc${NC}"
|
||||
@ -177,12 +188,6 @@ if [ "${with_gcc}" = true ]; then
|
||||
fi
|
||||
rm -rf ${diskfs}/init ${diskfs}/lost+found
|
||||
|
||||
# lspci 显示厂商 ( 下面的是 ubuntu 的 )
|
||||
if [ -f "/usr/share/misc/pci.ids" ]; then
|
||||
mkdir -p ${diskfs}/usr/share/misk
|
||||
cp /usr/share/misc/pci.ids ${diskfs}/usr/share/misk/pci.ids
|
||||
fi
|
||||
|
||||
# 测试用户登陆模式: root/123456
|
||||
if [ "${with_login}" = true ]; then
|
||||
echo "${RED} ... build with-login${NC}"
|
||||
|
@ -92,7 +92,7 @@ else
|
||||
fi
|
||||
|
||||
# 指定内存
|
||||
memory="-m 4G"
|
||||
memory="-m 8G"
|
||||
|
||||
# 主磁盘
|
||||
disk="-drive format=raw,file=disk.img"
|
||||
@ -105,10 +105,10 @@ logfile="-serial file:./qemu.log"
|
||||
network="-netdev tap,id=nd0,ifname=tap0,script=no,downscript=no -device e1000,netdev=nd0"
|
||||
|
||||
# 显卡参数 需要编译 xf86-video-vmware, see mk_xfce.sh
|
||||
display="-vga vmware"
|
||||
display="-vga qxl"
|
||||
|
||||
# 启动镜像 网络对应 run_nat.sh 里面的配置 ( -enable-kvm : vmware 里面 CPU 设置需要支持虚拟化 Intel VT-x/EPT 或 AMD-V/RVI )
|
||||
# 命令 qemu-system-x86_64 -device help 可以查看支持哪些设备
|
||||
qemu-system-x86_64 -enable-kvm ${display} ${memory} ${disk} ${sdb_img} ${network} ${logfile}
|
||||
qemu-system-x86_64 ${display} -device qxl ${memory} ${disk} ${sdb_img} ${network} ${logfile}
|
||||
# stop nat
|
||||
stop_nat
|
||||
|
18
mk_xfce.sh
18
mk_xfce.sh
@ -142,12 +142,15 @@ XSERVER_SRC_URL=https://www.x.org/releases/individual/xserver/xorg-server-21.1.4
|
||||
FONTUTIL_SRC_URL=https://www.x.org/releases/individual/font/font-util-1.3.3.tar.xz
|
||||
FONTMISC_SRC_URL=https://www.x.org/releases/individual/font/font-misc-misc-1.1.2.tar.bz2
|
||||
XF86INPUT_SRC_URL=https://www.x.org/releases/individual/driver/xf86-input-libinput-1.2.1.tar.xz
|
||||
XF86VIDEOATI_SRC_URL=https://www.x.org/releases/individual/driver/xf86-video-ati-19.1.0.tar.bz2
|
||||
XF86VIDEOVESA_SRC_URL=https://www.x.org/releases/individual/driver/xf86-video-vesa-2.5.0.tar.bz2
|
||||
XF86VIDEOINTEL_SRC_URL=https://www.x.org/releases/individual/driver/xf86-video-intel-2.99.917.tar.bz2
|
||||
XF86VIDEOQXL_SRC_URL=https://www.x.org/releases/individual/driver/xf86-video-qxl-0.1.5.tar.bz2
|
||||
XF86VIDEOAMD_SRC_URL=https://www.x.org/releases/individual/driver/xf86-video-amd-2.7.7.7.tar.bz2
|
||||
XF86VIDEOFBDEV_SRC_URL=https://www.x.org/releases/individual/driver/xf86-video-fbdev-0.5.0.tar.bz2
|
||||
XF86VIDEOVMWARE_SRC_URL=https://www.x.org/releases/individual/driver/xf86-video-vmware-13.3.0.tar.bz2
|
||||
XF86VIDEOAMDGPU_SRC_URL=https://www.x.org/releases/individual/driver/xf86-video-amdgpu-21.0.0.tar.bz2
|
||||
XF86VIDEODUMMY_SRC_URL=https://www.x.org/releases/individual/driver/xf86-video-dummy-0.4.0.tar.xz
|
||||
XKBDATA_SRC_URL=https://www.x.org/releases/individual/data/xkbdata-1.0.1.tar.bz2
|
||||
XKBDCFG_SRC_URL=https://www.x.org/releases/individual/data/xkeyboard-config/xkeyboard-config-2.36.tar.xz
|
||||
|
||||
@ -264,7 +267,10 @@ LIBWACOM_SRC_NAME=$(download_src ${LIBWACOM_SRC_URL})
|
||||
LIBINPUT_SRC_NAME=$(download_src ${LIBINPUT_SRC_URL})
|
||||
SPICEPROT_SRC_NAME=$(download_src ${SPICEPROT_SRC_URL})
|
||||
XF86INPUT_SRC_NAME=$(download_src ${XF86INPUT_SRC_URL})
|
||||
XF86VIDEOATI_SRC_NAME=$(download_src ${XF86VIDEOATI_SRC_URL})
|
||||
XF86VIDEOVESA_SRC_NAME=$(download_src ${XF86VIDEOVESA_SRC_URL})
|
||||
XF86VIDEOINTEL_SRC_NAME=$(download_src ${XF86VIDEOINTEL_SRC_URL})
|
||||
XF86VIDEODUMMY_SRC_NAME=$(download_src ${XF86VIDEODUMMY_SRC_URL})
|
||||
XF86VIDEOQXL_SRC_NAME=$(download_src ${XF86VIDEOQXL_SRC_URL})
|
||||
XF86VIDEOAMD_SRC_NAME=$(download_src ${XF86VIDEOAMD_SRC_URL})
|
||||
XF86VIDEOFBDEV_SRC_NAME=$(download_src ${XF86VIDEOFBDEV_SRC_URL})
|
||||
@ -394,7 +400,10 @@ LIBEVDEV_SRC_DIR=$(unzip_src ".tar.xz" ${LIBEVDEV_SRC_NAME}); echo "unzip ${LIBE
|
||||
LIBINPUT_SRC_DIR=$(unzip_src ".tar.xz" ${LIBINPUT_SRC_NAME}); echo "unzip ${LIBINPUT_SRC_NAME} source code"
|
||||
SPICEPROT_SRC_DIR=$(unzip_src ".tar.xz" ${SPICEPROT_SRC_NAME}); echo "unzip ${SPICEPROT_SRC_NAME} source code"
|
||||
XF86INPUT_SRC_DIR=$(unzip_src ".tar.xz" ${XF86INPUT_SRC_NAME}); echo "unzip ${XF86INPUT_SRC_NAME} source code"
|
||||
XF86VIDEOATI_SRC_DIR=$(unzip_src ".tar.bz2" ${XF86VIDEOATI_SRC_NAME}); echo "unzip ${XF86VIDEOATI_SRC_NAME} source code"
|
||||
XF86VIDEOVESA_SRC_DIR=$(unzip_src ".tar.bz2" ${XF86VIDEOVESA_SRC_NAME}); echo "unzip ${XF86VIDEOVESA_SRC_NAME} source code"
|
||||
XF86VIDEOINTEL_SRC_DIR=$(unzip_src ".tar.bz2" ${XF86VIDEOINTEL_SRC_NAME}); echo "unzip ${XF86VIDEOINTEL_SRC_NAME} source code"
|
||||
XF86VIDEODUMMY_SRC_DIR=$(unzip_src ".tar.xz" ${XF86VIDEODUMMY_SRC_NAME}); echo "unzip ${XF86VIDEODUMMY_SRC_NAME} source code"
|
||||
XF86VIDEOQXL_SRC_DIR=$(unzip_src ".tar.bz2" ${XF86VIDEOQXL_SRC_NAME}); echo "unzip ${XF86VIDEOQXL_SRC_NAME} source code"
|
||||
XF86VIDEOAMD_SRC_DIR=$(unzip_src ".tar.bz2" ${XF86VIDEOAMD_SRC_NAME}); echo "unzip ${XF86VIDEOAMD_SRC_NAME} source code"
|
||||
XF86VIDEOFBDEV_SRC_DIR=$(unzip_src ".tar.bz2" ${XF86VIDEOFBDEV_SRC_NAME}); echo "unzip ${XF86VIDEOFBDEV_SRC_NAME} source code"
|
||||
@ -864,11 +873,20 @@ llvm_build() {
|
||||
meson_build libinput ${LIBINPUT_SRC_DIR}
|
||||
# xf86input ( libinput 的封装,使 libinput 用于 X 上的输入设备代替其他用于 X 输入的软件包即以 xf86-input- 为前缀的软件包 )
|
||||
common_build xf86input ${XF86INPUT_SRC_DIR}
|
||||
# xf86videoati ( 为了虚拟机上能显示图形,我们把常用的显卡驱动全部编译了 )
|
||||
# common_build xf86videoati ${XF86VIDEOATI_SRC_DIR}
|
||||
# xf86videovesa ( vesa是一个支持大部分显卡的通用驱动,不提供任何 2D 和 3D 加速功能 也可以 apt install libgl1-mesa-dri )
|
||||
common_build xf86videovesa ${XF86VIDEOVESA_SRC_DIR}
|
||||
# xf86videointel
|
||||
# common_build xf86videointel ${XF86VIDEOINTEL_SRC_DIR}
|
||||
# xf86videodummy
|
||||
common_build xf86videodummy ${XF86VIDEODUMMY_SRC_DIR}
|
||||
# xf86videoamd ( qemu 要模拟 vmware 的显卡,需要编译此工程 -vga vmware )
|
||||
# common_build xf86videoamd ${XF86VIDEOAMD_SRC_DIR}
|
||||
# xf86videoqxl ( 需要: spice_protocol, qemu 要模拟 vmware 的显卡,需要编译此工程 -vga vmware )
|
||||
if [ ! -f ".xf86videoqxl" ]; then
|
||||
sed -i "s/value.bool/value.boolean/" ${XF86VIDEOQXL_SRC_DIR}/src/qxl_option_helpers.c
|
||||
fi
|
||||
common_build xf86videoqxl ${XF86VIDEOQXL_SRC_DIR}
|
||||
# xf86videofbdev ( qemu 要模拟 vmware 的显卡,需要编译此工程 -vga vmware )
|
||||
common_build xf86videofbdev ${XF86VIDEOFBDEV_SRC_DIR}
|
||||
|
Loading…
Reference in New Issue
Block a user