Difference between revisions of "Hakchi:About"
DanTheMan827 (talk | contribs) (Created page with "Hakchi is a series of scripts and tools created by madmonkey that run during the boot process to add additional functionality not found in the stock software.") |
DanTheMan827 (talk | contribs) |
||
Line 1: | Line 1: | ||
Hakchi is a series of scripts and tools created by [[User:madmonkey|madmonkey]] that run during the boot process to add additional functionality not found in the stock software. | Hakchi is a series of scripts and tools created by [[User:madmonkey|madmonkey]] that run during the boot process to add additional functionality not found in the stock software. | ||
+ | |||
+ | = Boot Process = | ||
+ | {{:Boot Process}} | ||
+ | |||
+ | = Functions and Variables = | ||
+ | {{Hakchi:Variables and Functions}} |
Revision as of 17:16, 30 May 2018
Hakchi is a series of scripts and tools created by madmonkey that run during the boot process to add additional functionality not found in the stock software.
Contents
- 1 Boot Process
- 2 Functions and Variables
- 2.1 Variables
- 2.2 Functions
- 2.2.1 b0010_functions
- 2.2.1.1 squashDevice
- 2.2.1.2 mountSquash
- 2.2.1.3 umountSquash
- 2.2.1.4 mount_base
- 2.2.1.5 umount_base
- 2.2.1.6 remove_old
- 2.2.1.7 mod_repair_etc
- 2.2.1.8 mod_repair_modules
- 2.2.1.9 mount_move
- 2.2.1.10 remount_root
- 2.2.1.11 checkFirmware
- 2.2.1.12 currentFirmware
- 2.2.1.13 overmountModules
- 2.2.1.14 loadFirmware
- 2.2.1.15 shutdown
- 2.2.1.16 reboot
- 2.2.1.17 early_getty
- 2.2.1.18 copy
- 2.2.1.19 copy_mask
- 2.2.1.20 restore
- 2.2.1.21 mount_bind
- 2.2.1.22 overmount
- 2.2.1.23 containsGames
- 2.2.1.24 linkGames
- 2.2.1.25 softwareCheck
- 2.2.1.26 repair_fonts
- 2.2.1.27 checkGamepath
- 2.2.1.28 checkPath
- 2.2.1.29 findGameSyncStorage
- 2.2.1.30 findGameStorage
- 2.2.1.31 overmount_games
- 2.2.1.32 uilist
- 2.2.1.33 uikill
- 2.2.1.34 uistop
- 2.2.1.35 uistart
- 2.2.1.36 uipause
- 2.2.1.37 uiresume
- 2.2.1.38 gameover
- 2.2.1.39 printSoftwareInfo
- 2.2.1.40 stopTask
- 2.2.1.41 waitTask
- 2.2.1.42 showImage
- 2.2.1.43 playSound
- 2.2.1.44 hwmon
- 2.2.1.45 usedBlockSpace
- 2.2.1.46 freeBlockSpace
- 2.2.1.47 usedSpace
- 2.2.1.48 usedBy
- 2.2.2 b0020_backup
- 2.2.3 b0030_package
- 2.2.4 b0040_usb
- 2.2.1 b0010_functions
Boot Process
There are various boot phases that are run on a system with hakchi installed
U-Boot
Preinit
Preinit is a very early stage of boot before the system is fully started.
During this stage, various scripts are loaded and run from the /etc/preinit.d folder to prepare the system and do things like load the custom games.
Init
Functions and Variables
There are a number of functions and variables available in hakchi for use in scripts.
Variables
If you have a standalone script and would like to read one of these variables, /bin/hakchi get
can be used with the variable name as the first parameter.
If you're in a preinit.d script, you can access the variable directly.
modname
The name of the mod, this is set to hakchi
modpath
The mod path, this is set to /$modname
mountpoint
Depending on if the system is in preinit or normal boot, this can be one of two values, /newroot
or nothing
installpath
The location that hakchi is installed to, set to $mountpoint/var/lib/$modname
firmwarepath
The location on nand that hakchi will search for the default hsqs image in, set to $installpath/firmware
extfirmwarepath
The location on external storage that hakchi will search for the default hsqs image in, set to $mountpoint/media/$modname/firmware
rootfs
The rootfs folder containing folders that get overmounted on top of the stock ones, set to $installpath/rootfs
squashfs
A mount point containing the original squashfs image, set to $mountpoint/var/squashfs
preinit
The location of the preinit loader file, set to $rootfs/etc/preinit
preinitpath
The location of the preinit.d folder, set to $preinit.d
sftype
The type of system currently booted, it can be one of two values: nes
or snes
sfregion
The region of the system currently booted, it can be one of the following values:
- usa
- eur
- jpn
gamepath
The location of the original game path that gets overmounted with the custom games
profilepath
The location of the user profile containing save data among other things, set to /var/lib/clover/profiles/0
temppath
The temporary directory, set to /tmp
Functions
If you have a standalone script and would like to run one of these functions, /bin/hakchi
can be used with the function name as the first parameter.
If you're in a preinit.d script, you can call the function directly.
b0010_functions
b0010_functions
contains general functions useful for hmods
squashDevice
Prints the device that contains the squashfs filesystem.
mountSquash
Mounts the squashfs to $squashfs
umountSquash
Unmounts the squashfs from $squashfs
mount_base
Mounts the user data partition at [[Hakchi:Variables and Functions#mountpoint|$mountpoint]/var/lib] and calls
mountSquash
.
umount_base
Unmounts the user data partition at [[Hakchi:Variables and Functions#mountpoint|$mountpoint]/var/lib] and calls umountSquash
.
remove_old
mod_repair_etc
mod_repair_modules
mount_move
remount_root
checkFirmware
currentFirmware
overmountModules
loadFirmware
shutdown
Unmounts everything and powers down the system.
reboot
Unmounts everything and reboots the system.
early_getty
Starts a shell on ttyS0 at 115200 baud and returns when the shell ends.
copy
A helper function that calls rsync -ac $1 $2
.
As the copy
function also creates the destination directory if needed, there is no requirement to use the mkdir
command to create an empty destination folder first.
copy_mask
restore
Repairs the directory specified using the original files from squashfs
mount_bind
Unmounts the destination directory if there's already a mount point at that location and then runs mount -o bind "$1" "$2"
Usage: mount_bind source destination
overmount
Uses mount_bind
to overmount the specified directory from $rootfs onto the normal path used by the system or alternatively, you can specify an alternate destination directory.
Example 1: overmounts $rootfs/bin
onto /bin
overmount "/bin"
Example 2: overmounts $rootfs/backgrounds
onto /usr/share/backgrounds
overmount "/backgrounds" "/usr/share/backgrounds"
containsGames
Checks if the specified directory exists and contains game folders, if success, return an exit code of 0 or otherwise, return an exit code of 1.
linkGames
softwareCheck
repair_fonts
checkGamepath
checkPath
Checks for the existence of the path passed as the first argument and if it exists, prints the path and returns an exit code of 0
If the path doesn't exist, nothing will be printed and the function will return an exit code of 1
findGameSyncStorage
Prints the base directory that games should be synced to.
findGameStorage
Prints the path that is currently being used for the games or returns an exit code of 1 if no custom games are found.
overmount_games
uilist
Lists all processes currently using the display.
uikill
Kills all processes currently using the display.
uistop
Stops all processes currently using the display.
uistart
Starts the Nintendo UI
uipause
Suspends all processes using the display.
uiresume
Resumes all processes using the display.
gameover
Powers down the system.
printSoftwareInfo
Prints the system type and region
stopTask
Stops the specified process name and returns when the process has ended.
waitTask
Waits until the specified process name is no longer running and returns.
showImage
Displays the png image file passed as the first argument.
playSound
Plays the wav sound file passed as the first argument.
hwmon
An alias for cat "/sys/devices/virtual/hwmon/hwmon1/temp1_input"
usedBlockSpace
Displays the number of 1024KB blocks used by the volume passed as the first argument.
freeBlockSpace
Displays the remaining number of 1024KB blocks for the volume passed as the first argument.
usedSpace
Prints the amount of space used by a folder.
usedBy
A helper function that accepts one of the following variables and calls usedSpace
with the corresponding path.
- games
- saves
- mods
- firmware
b0020_backup
backup_one
backup_nandb
backup_nandc
backup
dumpFirmware
b0030_package
The functions in b0030_package are used during hmod installation and management.
transfer_file
transfer_default
transfer_path
pack_upath
pack_install
pack_list
pack_uninstall
packs_install
packs_uninstall
b0040_usb
disableUsbDevice
switchToUsbDevice
switchToUsbHost
getUsbStorageIds
waitForStorageDevice
waitForUsbDevice
waitForMmcDevice
checkStorageDevice
checkExtStorage