openwrt x86 編譯部署

2021-06-28 07:41:10 字數 4566 閱讀 6108

前段時間看到c1037u多網口版本,很是喜歡,替換的4530r,發現玩openwrt x86的人比較少,寫一篇日記,以備後用,有錯誤之處請指出。

linux

svn co svn:

#svn co svn: -r42625

svn update

#cp feeds.conf.default feeds.conf

./scripts/feeds update -a

./scripts/feeds install -a

這裡給出乙個基本配置,不過其中busybox配置,正常使用預設配置即可,不需要customize busybox options,我為了在日後的initramfs中加入一些overlayfs的功能自己加進去了配置,另外的配置基本是x86必須的。

target system (x86) #目標平台選擇

target images --->

[*] ext4 #生成.ext4.img檔案

base system --->

<*> block-mount

<*> busybox ---> #用於今後`initramfs`支援,可以將所有lib編譯到busybox

[*] customize busybox options

busybox settings --->

general configuration --->

[*] don't use /usr

linux module utilities --->

[*] modinfo

[*] simplified modutils

[*] accept module options on modprobe command line

[*] skip loading of already loaded modules

(/lib/modules) default directory containing modules

linux system utilities --->

[*] mdev

[*] support /etc/mdev.conf

[*] support subdirs/symlinks

[*] support regular expressions substitutions when renaming

[*] support command execution at device addition/removal

[*] support loading of firmwares

[*] findfs

[*] blkid

[*] print filesystem type

[*] losetup

[*] lspci

[*] lsusb

[*] mount

[*] support specifying devices by label or uuid

filesystem/volume identification --->

[*] ext filesystem

[*] fat filesystem

networking utilities --->

[*] ftpd

[*] enable upload commands

[*] enable workaround for rfc-violating clients

[*] inetd

[*] telnetd

[*] support standalone telnetd (not inetd only)

[*] tcpsvd

[*] udpsvd

`kernel` modules --->

block devices --->

<*> kmod-ata-core

<*> kmod-ata-ahci

<*> kmod-loop

-*- kmod-scsi-core

<*> kmod-scsi-generic

filesystems --->

<*> kmod-fs-ext4

<*> kmod-fs-ntfs

<*> kmod-fs-vfat

input modules --->#鍵盤

-*- kmod-hid

<*> kmod-hid-generic

-*- kmod-input-core

-*- kmod-input-evdev

native language support --->

<*> kmod-nls-cp437 #vfat需要這個

<*> kmod-nls-iso8859-1

<*> kmod-nls-utf8

network devices ---> #網絡卡驅動

<*> kmod-macvlan

usb support --->

-*- kmod-usb-core

<*> kmod-usb-hid #usb鍵盤

<*> kmod-usb-ohci

<*> kmod-usb-storage

<*> kmod-usb2

<*> kmod-usb3

wireless drivers --->#wifi卡驅動

network --->

<*> hostapd #wifi ap模式

<*> hostapd-common

<*> hostapd-utils

<*> wpa-supplicant

utilities --->#自選 fdisk等

processor type and features  --->

[*] symmetric multi-processing support

processor family (core 2/newer xeon) --->

#自行選擇處理器平台

[*] supported processor vendors --->

#自行選擇處理器平台

(2) maximum number of cpus #自行編輯

[*] smt (hyperthreading) scheduler support#超執行緒支援

[*] multi-core scheduler support

high memory support (4gb) --->

編譯

make clean

make -j 5 v=99

#編譯某個包

make packages/***/clean

make packages/***/compile

make packages/***/install

4.編輯menu.lst;

6.啟動

由於openwrt x86一般都是安裝在u盤/tf卡/硬碟等介質上,預設是ext檔案系統,就沒有使用overlayfs,如果要使用overlayfs就得用squashfs。由於從路由過度過來,我個人對overlayfs頗有好感,著手在x86的ext4上加入overlayfs支援。稍後,會單獨寫一篇關於x86下overlayfs的文件。

按照如下編譯選項配置,其編譯生成的vmlinuz是乙個帶initramfskernel,當然可以在也可以在use external cpio中選擇自定義initramfs目錄,如果沒選擇use external cpio,openwrt則會將整個rootfs當作initramfs編譯進vmlinuz.

target images --->

[*] ramdisk #其實就是initramfs

() use external cpio#選擇外部cpio,作為initramfs

如果用gurb載入它,則整個系統會在ramfs上執行,所有配置在重啟後都將不被保留,一般需要在這個上面啟動到另乙個kernel(kexec)或者switch_root 到另乙個rootfs(真實的磁碟)環境,ramdisk(initramfs)。因此一般是不勾選編譯選項中的ramdisk選項,自己著手來做initramfs,加入一些hook(比如加入overlayfs支援、switch_root到其他rootfs、乾脆直接kexec到其他kernel),用gurb的initrd載入,就可以完成系統啟動。

編譯部署mysql 編譯部署MySQL

1.mysql安裝前準備 1.1.安裝依賴包 yum install y ncurses devel libaio devel 1.2.安裝cmake yum install cmake y 1.3.建立使用者 useradd s sbin nologin m mysql id mysql mkdi...

vc編譯執行JM8 6

3 開啟源 根目錄下的工作區 tml.dsw 編碼 4 滑鼠左鍵選中 lencod 工程 5 開啟 project settings debug 在 working directory 選項中填寫 bin,在 program arguments 選項中填寫需要使用的編碼配置檔案,例如 d encod...

為Android x86編譯tcpdump工具

在谷歌和必應上搜尋的android x86專用的tcpdump工具多半不能使用,它們基本上都是在arm架構的安卓手機上使用的,而且版本都較為老舊。由於android x86的linux核心是通用的32位linux,那麼能否在常用的32位linux發行版上直接使用32位的gcc編譯tcpdump,然後...