mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-25 17:10:23 +00:00
407d882eee
It took me way too long to figure out why PNGImageDecoderPlugin couldn't load WebServer_localhost.png -- turns out it's a jpeg file.
91 lines
3.6 KiB
Markdown
91 lines
3.6 KiB
Markdown
# Transferring files from QEMU to your host machine
|
|
|
|
## Method 1: WebServer
|
|
Serenity has a built-in web server which extends to your host machine.
|
|
|
|
Open a new terminal and use the following command to start a WebServer instance for the current working directory:
|
|
|
|
```console
|
|
ws .
|
|
```
|
|
|
|
Then we just open `localhost:8000` on our host machine :^)
|
|
|
|
![](WebServer_localhost.jpg)
|
|
|
|
**NOTE:** Due to the fact that some browsers download unrecognized files as plain text, you may want to use something like `wget` to download the file **as is** instead. Otherwise the file may appear corrupted when the system tries to load it.
|
|
|
|
## Method 2: Mount the disk image
|
|
|
|
Another way is to mount Serenity's `_disk_image` to your host machine by using the following command on *nix systems (or inside WSL):
|
|
|
|
```console
|
|
cd "Build/${SERENITY_ARCH}"
|
|
mkdir mnt
|
|
sudo mount -t ext2 _disk_image mnt
|
|
```
|
|
|
|
## Method 3: Archiving tool with ext2 support
|
|
|
|
Some archiving tools, like [7-Zip](https://www.7-zip.org/), are capable of directly opening ext2 images like Serenity's `_disk_image`. With these, you can open the disk image like any other archive and extract the files you need.
|
|
|
|
For WSL users: If you have the image on your native WSL drive (recommended), this drive can be opened in Explorer by manually opening `\\wsl$` (not visible in the Network tab!) and then the "network share" corresponding to your distro.
|
|
|
|
## Method 4: Enable OpenSSH on host and use sftp client on SerenityOS
|
|
|
|
- Setup OpenSSH server on your host.
|
|
For windows: Google is your friend (https://docs.microsoft.com/en-us/windows-server/administration/openssh/openssh_install_firstuse)
|
|
For linux: Google is your friend.
|
|
- Ensure that you already have a working SerenityOS working build.
|
|
```console
|
|
$ Meta/serenity.sh rebuild-world
|
|
```
|
|
- To enable OpenSSH package from SerenityOS: (initial directory is SerenityOS ROOT_DIR)
|
|
|
|
```console
|
|
cd Ports
|
|
cd openssh
|
|
./package.sh
|
|
cd ../..
|
|
Meta/serenity.sh run
|
|
```
|
|
- From within SerenityOS, check that you have a working sftp app:
|
|
|
|
```console
|
|
courage:~ $ sftp
|
|
```
|
|
The expected response will be:
|
|
|
|
```console
|
|
courage:~ $ sftp
|
|
usage: sftp [-46aCfNpqrv] [-B buffer_size] [-b batchfile] [-c cipher]
|
|
[-D sftp_server_path] [-F ssh_config] [-i identity_file]
|
|
[-J destination] [-l limit] [-o ssh_option] [-P port]
|
|
[-R num_requests] [-S program] [-s subsystem | sftp_server]
|
|
destination
|
|
```
|
|
- Assume that you have a working OpenSSH server as mentioned earlier, with an IP address of 192.168.0.11.
|
|
- Assume that you have a valid user on that host with account name user1.
|
|
- Assume that you are currently inside the folder from which you want to transfer the file(s) from.
|
|
- Local
|
|
User: anon
|
|
- Remote
|
|
User: user1
|
|
IP Address: 192.168.0.11
|
|
- Connect to remote server via sftp
|
|
|
|
```console
|
|
courage:~ $ sftp user1@192.168.0.11
|
|
The authenticity of host '(192.168.0.11)' can't be established.
|
|
ECDSA key finger print is SHA256:Iav!m/E0cHJBnzSk0hJEZnBZ2F3LBL4wxhyv4nrfPtU.
|
|
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
|
|
|
|
user1@'s password:
|
|
Connected to 192.168.0.11
|
|
|
|
```
|
|
- By this time, you have successfully connected and logged on to the remote host.
|
|
- You can get more information by typing ` help `.
|
|
- The most often used (simplified) sftp commands are ` ls `, ` cd `, ` put [filename] `, ` get [filename] `, and ` quit `. I said simplified since the actual commands have many more options.
|
|
- Be aware that there will be a time you would think that nothing is happening since the cursor just stares back at you. It is always waiting for your next instruction. Typing ` quit ` or ` bye ` will close the program.
|
|
- Congratulations. Pat yourself at the back.
|