openwrt 开启wps


opkg update
opkg remove wpad-mini wpad-basic
opkg install wpad hostapd-utils


hostapd_cli -i wlan0 wps_pbc
[email protected]:/# hostapd_cli -i wlan0 wps_pbc


[email protected]:~# hostapd_cli -p /var/run/hostapd-phy0 wps_pbc



Printer Sharing

This document discusses several ways to configure printer sharing.

The Basics

A “server” is any machine that communicates directly to a printer. A “client” is any machine that sends print jobs to a server for final printing. Clients can also be servers if they communicate directly with any printers of their own.

By default, CUPS uses the Internet Printing Protocol (IPP) to send jobs from a client to a server. When printing to legacy print servers you may also use the Line Printer Daemon (LPD) protocol when printing to older UNIX-based servers or Server Message Block (SMB) when printing to Windows® servers.

Clients can automatically discover and access shared printers via DNS Service Discovery (DNS-SD a.k.a. Bonjour®). SMB browsing can also be used to manually discover and access shared printers when Samba is installed.

Configuring the Server

You must enable printer sharing on the server before clients can print through it. The simplest way to do this is to use the cupsctl(8) command on the server:

cupsctl --share-printers

By default, the above command will allow printing from other clients on the same subnet as your server. To allow printing from any subnet, use the following command instead:

cupsctl --share-printers --remote-any

K30Pro/Poco F2 Pro/lmi刷LineageOS








Team Win Recovery Project 3.x, or twrp3 for short, is a custom recovery built with ease of use and customization in mind. Its a fully touch driven user interface no more volume rocker or power buttons to mash. The GUI is also fully XML driven and completely theme-able. You can change just about every aspect of the look and feel.


* We are not responsible for bricked devices, dead SD cards,
* thermonuclear war, or you getting fired because the alarm app failed. Please
* do some research if you have any concerns about features included in this ROM
* before flashing it! YOU are choosing to make these modifications, and if
* you point the finger at us for messing up your device, we will laugh at you.

– Decryption work
– Otg work
– Zip Flash
– Mtp/adb
– F2FS support
– Fastbootd
– Adb sideload
– Backup restore and images flash

Not working:
-Tell me

1. Download the TWRP image file to your PC.
2. Put your device into fastboot.
3. Type the following command to flash the recovery:-

fastboot flash recovery "name_of_recovery.img"

4. On installation of TWRP , to boot the recovery do:-

fastboot boot "name_of_recovery.img"

The device will automatically reboot into TWRP.

5-A. You are using Miui or custom Rom?
You can enjoy with a functional Data Decrypt

5-B You are using Miui EEA – Global -Cn or any custom rom that doesn’t ship custom vbmeta.

6. Download this zip, copy by pc or using otg and flash this zip that will prevent twrp replacing.​
7. Download VbMeta and flash by fastboot​
fastboot --disable-verity --disable-verification flash vbmeta vbmeta.img"
7. Reboot into twrp (Take longer Time) 
fastboot boot "name_of_recovery.img"
8. Format Data and Reboot​

By Command fastboot boot, recovery will decrypt everytimes you need, also with Global Rom and without patched vbmeta.



(Version tag will follow vendor, a lower version tag than your vendor does not mean that recovery will not work)

Kernel Source: HERE


Telegram Group: @MBsRoom






LineageOS is a free, community built, aftermarket firmware distribution of Android 11.0 (R), which is designed to increase performance and reliability over stock Android for your device.

LineageOS is based on the Android Open Source Project with extra contributions from many people within the Android community. It can be used without any need to have any Google application installed. Linked below is a package that has come from another Android project that restore the Google parts. LineageOS does still include various hardware-specific code, which is also slowly being open-sourced anyway.

All the source code for LineageOS is available in the LineageOS Github repo. And if you would like to contribute to LineageOS, please visit out Gerrit Code Review. You can also view the Changelog for a full list of changes & features.


Flashing instructions


Happy modding!

3.3 进入系统

如果无法进入系统,可能刷机前没有去除设备密码。重启至twrp,format date分区

3.3 刷OpenGAPP,magisk


3.3 安装google相机


Trouble Shooting


google play service和google play给予通讯录的权限



选择k49版本(kernel 4.9)




3.1 virtualbox

1.CPU 勾选虚拟化支持


3.2 vmware

vi /mnt/grub/menu.lst

replace quiet to nomodeset xforcevesa DPI=320







4.1 Android x86 Arm NativeBridge (libhoudini)

Houdini is an ARM translation layer for android developed by Intel and Google to run ARM apps on x86 architecture. The project is closed source and nowadays android x86 doesn’t have it pre-installed in the system. To enable ARM Native Bridge on android x86 you need to run the enable_nativebridge command from the terminal, which downloads the .sfs image file from the android x86 servers and runs the ARM activation commands according to your device architecture.

There are mainly 3 types of libhoudini used in android x86 :-

  • houdini_7_x = (x86 arm translation)
  • houdini_7_y = (x86_64 arm translation)
  • houdini_7_z = (x86_64 arm64 translation)

Houdini files are named according to their android version :-

  • Houdini_6 series = android 6.0
  • Houdini_7 series = android 7.0
  • Houdini_8 series = android 8.0
  • Houdini_9 series = android 9.0

Houdini_6 series can be used in android 7.1 as well and the Houdini_8 series can be used in Android 9.0, but a higher version of Houdini is not compatible with the lower version of android.

Download Links :-

Houdini_6 series

Houdini_7 series

Houdini_8 series

Houdini_9 series

How to manually install Arm Native Bridge in android x86

  • Download the required .sfs file from the above links.
  • Rename the file houdini.sfs to houdini7_y.sfs
  • Copy the houdini7_y.sfs file to /data/arm/ folder
  • Do the same for the z series if you want to run the arm64 app.
  • Press alt+f1 to open terminal & run the command enable_nativebridge.
  • if you don’t get any error msg then you’ve successfully activated ARM Native Bridge on your system.
  • Press alt+f7 to return to GUI & download any game/app to test libhoudini.

4.2 connetc adb

adb connect *.*.*.*:5555
adb push houdini.sfs /sdcard/

4.3 启用houdini库

:/sdcard # cp houdini.sfs /system/etc/houdini{version}_y.sfs
:/sdcard # cp houdini.sfs /system/etc/houdini{version}_z.sfs
:/sdcard # /system/bin/enable_nativebridge
:/sdcard # reboot


1.{version}为对应android版本 8、9无houdini z.sfs







右ctr+h 电源

win   Home

menu  menu

alt+tab 任务切换



解除MS Office文档写保护


2.另存为Word XML Document (*.xml)







将w:enforcement=”1″ 或者 w:enforcement=”on”改为w:enforcement=”0″ or w:enforcement=”off”

6.用Office 打开修改后的xml文件,另存为word文档



How to force fsck to check filesystem after system reboot on Linux


This article will explain a procedure on how to force fsck to perform a filesystem check on the next system reboot or force filesystem check for any desired number of system reboots whether it is root or non-root mount point.

Let’s start with discussion about some tools which can be used to obtain filesystem information and configurations which control filesystem check after system reboot. The tool which we are going to discuss is tune2fs filesystem managing utility. Using tune2fs we can export some important information related to filesystem health check. The following linux command will tell as when was the last time the filesystem /dev/sdX was checked:

# tune2fs -l /dev/sdbX | grep Last\ c
Last checked:             Sun Dec 13 09:14:22 2015

Anther useful information which can be retrieved by tune2fs command relates to how many times our /dev/sdX filesystem was mounted:

# tune2fs -l /dev/sdbX | grep Mount
Mount count:              157


and lastly how many mounts are allowed to pass before filesystem check is forced:

# tune2fs -l /dev/sdbX | grep Max
Maximum mount count:      -1

From the above outputs we can establish the following information summary. The /dev/sdbX filesystem was last checked on Sun Dec 13 09:14:22 2015. Since the last check, this filesystem was mounted 157 times and maximum amount of mounts before next filesystem fsck check. In the above case the value -1 means that fsck is disabled.

Now, that we have learned about some tune2fs basics let’s discuss PASS system configuration option found in /etc/fstab file containing all on boot mountable partitions and their relevant mount options.

# blkid | grep sdb1
/dev/sdb1: UUID="c6e22f63-e63c-40ed-bf9b-bb4a10f2db66" TYPE="ext2"
# grep c6e22f63-e63c-40ed-bf9b-bb4a10f2db66 /etc/fstab
UUID=c6e22f63-e63c-40ed-bf9b-bb4a10f2db66 /mnt            ext2    errors=remount-ro 0      0

We have used blkid command to retrieve UUID for a given partition and then used the retrieved partition UUID to get a relevant information related to /dev/sdb1 partition from /etc/fstbab.
The last column that is a column 6, aka fsck PASS column is used by fsck to determine whether fsck should check filesystem before it is mounted and in which order given partitions in /etc/fstab should be checked. Possible entries for fstab PASS column are 0,1 and 2.

  1. 0 – disabled, that is do not check filesystem
  2. 1 – partition with this PASS value has a higher priority and is check first. This value is usually set to root / partition
  3. 2 – partitions with this PASS value will be checked last

The connection between fstab PASS value, last checked value and number of mounts value is as follows:
During the system boot the first value which is checked is fstab PASS value. If this value is 0 that not other values are checked ( exemption .. see “Force fsck for root partition” below ) and the fsck will NOT perform filesystem check. If the PASS value found in /etc/fstab is any other than 0, that is 1 or 2 then values of maximum mounts and total mounts are checked. If the value of maximum mounts is greater or equal to total number of mounts value then fsck’s filesytem check will be performed. Few examples:

fstab PASS: 1
Maximum mount count:      -1
Mount count:              157
fstab PASS: 0
Maximum mount count:      -1
Mount count:              157
fstab PASS: 1 or 2
Maximum mount count:      1
Mount count:              157
fstab PASS: 0
Maximum mount count:      1
Mount count:              1
fstab PASS: 1 or 2
Maximum mount count:      1
Mount count:              1
fstab PASS: 1 or 2
Maximum mount count:      200
Mount count:              157

Force fsck for root partition

The simplest way to force fsck filesystem check on a root partition eg. /dev/sda1 is to create an empty file called forcefsck in the partition’s root directory.

# touch /forcefsck

This empty file will temporarily override any other settings and force fsck to check the filesystem on the next system reboot. Once the filesystem is checked the forcefsck file will be removed thus next time you reboot your filesystem will NOT be checked again. To enable more permanent solution and force filesystem check on every reboot we need to manipulate filesystem’s “Maximum mount count” parameter. The following linux command will ensure that filesystem /dev/sdb1 is checked every time your Linux system reboots. Please note that for this to happen the fsck’s PASS value in /etc/fstab must be set to a positive integer as discussed above.

# tune2fs -c 1 /dev/sdb1

alternatively we can set fsck after every 10 reboots:

# tune2fs -c 10 /dev/sdb1

Force fsck for all other non-root partitions

As oppose to root partition creating empty forcefsck file will NOT trigger partition check on reboot. The only way to force fsck on all other non-root partitions is to manipulate filesystem’s “Maximum mount count” parameter and PASS value within /etc/fstab configuration file. To force filesystem check on non-root partition change fsck’s PASS value in /etc/fstab to value 2. For example:

UUID=c6e22f63-e63c-40ed-bf9b-bb4a10f2db66 /mnt            ext2    errors=remount-ro 0      2

and change maximum mounts filesystem parameter to a positive integer, depending on how many times you wish to allow a specified filesystem to be mounted without being checked. Force fsck on every reboot:

# tune2fs -c 1 /dev/sdb1

alternatively we can set fsck to check filesystem after every 5 reboots:

# tune2fs -c 5 /dev/sdb1

To disable fsck run:

# tune2fs -c 0 /dev/sdb1
# tune2fs -c -1 /dev/sdb1

Which will set the filesystem’s “Maximum mount count” parameter to -1

The official release of the well-known simulator KMS URL

Some well-known official release of KMS emulator URL:

Native self-activated KMS to activate the software installation class, easily killing the failure of the system upgrade, and can easily be tied backdoor virus software in the communication process is not recommended to try.

Loader Windows



vlmcsd and KMS-Py /

in the Microsoft Toolkit

「技巧」Chrome、Edge 默认下载器也能多线程下载?隐藏黑科技了解一下!


注意:任何基于 Chromium 内核的浏览器(国内套壳、Edge等)都支持该功能!

大家在使用 Chrome、Edge 浏览器的时候,下载一些小文件往往都会直接用默认下载器,但是下载大文件的时候,一般都会搭配其他 专业多线程下载工具 使用,但是嫌麻烦…

最近我发现 Chrome、Edge 浏览器有个多线程下载选项,默认是关闭的,我试了下发现挺好用。

Chrome、Edge 浏览器这个多线程下载虽然不如专业下载工具,但也够用了!


多线程下载 开启前
多线程下载 开启后


  • Chrome 浏览器,地址栏输入并回车:chrome://flags/#enable-parallel-downloading
  • Edge 新版浏览器,地址栏输入并回车:edge://flags/#enable-parallel-downloading

就会看到如下图所示,将默认的 Default 改为 Enabled 即可!

然后重启 Chrome 浏览器再去下载个文件试试速度吧!

Enabled = 开启



  • 该文件不允许多线程下载!

例如,网站服务器限制了同一时间一个 IP 只能建立 1 个下载连接。

  • 该文件没有显示文件总大小!



一些人的可能并不清楚 多线程下载 是什么,我简单解释下。

目前的 专业下载工具(HTTP下载) 之所以下载速度更快,就是因为使用了 多线程下载 技术。

目前的 BT 软件也都支持 HTTP 多线程下载(因为 BT 下载上传也是需要文件分片)。


假设下载一个 1GB 的文件,会被分割为 8 个 128MB 的文件块(8线程为例),然后与服务器建立 8 个连接,同时下载这 8 个分割后的文件块,如果单线程时最多 1MB/s 下载速度,那么现在理论上你的下载速度就从 1MB/s 提高到了 8MB/s。

这 8 个文件块都下载完成后,就会开始合并文件,这也是为什么下载完成后总会停顿一会儿才会提示下载完成。




按习惯在HOME中添加了.bashrc文件,定义一些alias和PS1,结果发现putty登录之后并未生效,还须手动source .bashrc,在~/目录增加.bash_profile或.profile解决:

 ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.

# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022

# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
        . "$HOME/.bashrc"

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then

但问题的根源在于.bash_profile .bashrc .bash_login .profile几个文件的执行顺序。

.bash_profile .bashrc .bash_login .profile执行顺序

bash startup文件执行顺序

man是个好东西,man bash:

When bash is invoked as an interactive login shell, or as a non-interactive shell with the –login option, it first reads and executes commands from the file /etc/profile, if that file exists. After reading that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile, in that order, and reads and executes commands from the first one that exists and is readable. The –noprofile option may be used when the shell is started to inhibit this behavior.


  • /etc/profile
  • ~/.bash_profile
  • ~/.bash_login
  • ~/.profile

但同时需要注意前提条件是bash是interactive login shell,那什么是interactive shell,什么是login shell?

interactive shell和login shell

A login shell is one whose first character of argument zero is a -, or one started with the –login option.

An interactive shell is one started without non-option arguments (unless -s is specified) and without the -c option whose standard input and error are both connected to terminals (as determined by isatty(3)), or one started with the -i option. PS1 is set and $- includes i if bash is interactive, allowing a shell script or a startup file to test this state.

上面的定义虽然字字都能看懂,但按字面理解起来比较困难。通俗地来说,interactive shell就是需要人机交互的,比如执行一个脚本就不需要人机交互。login shell就是是否需要登录,比如本地再开一个terminal就不需要再次登录。

参考如下实例对二者排列组合: # Differentiate Interactive login and non-interactive non-login shell

  • interactive login shell: 远程登录,如ssh
  • interactive non-login shell: 本地起一个bash
  • non-interactive non-login shell: 运行脚本
  • non-interactive login shell: 少见


~$: echo $-; shopt login_shell
login_shell     on

第一行中如果含有字母i则是iteractive shell;第二行显而易见。上述执行结果是ssh,可见ssh是iteractive login shell。



When an interactive shell that is not a login shell is started, bash reads and executes commands from /etc/bash.bashrc and ~/.bashrc, if these files exist.

好了,因为putty通过ssh登录,因此它是iteractive login shell,所以不会调用.bashrc,因此开头增加.bash_profile或.profile文件的目的就是调用.bashrc。

Tips: Linux中有许多不同版本的shell,如sh、csh、tcsh、zsh等。它们之间有一定的继承和渊源,有兴趣可以了解一下。只不过bash在当前的发行版中最为常见。

virtualbox 6.1安装windows xp




3.安装virtualbox guest additions驱动




displayer TAB

Scal Fact设置为200%